Skip to content

Commit

Permalink
Use an enum class.
Browse files Browse the repository at this point in the history
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210623 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
espindola committed Jun 11, 2014
1 parent 095271b commit e869d88
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 22 deletions.
13 changes: 6 additions & 7 deletions tools/llvm-readobj/Error.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ const char *_readobj_error_category::name() const {
return "llvm.readobj";
}

std::string _readobj_error_category::message(int ev) const {
switch (ev) {
std::string _readobj_error_category::message(int EV) const {
switch (static_cast<readobj_error>(EV)) {
case readobj_error::success: return "Success";
case readobj_error::file_not_found:
return "No such file.";
Expand All @@ -42,14 +42,13 @@ std::string _readobj_error_category::message(int ev) const {
return "Unsupported object file format.";
case readobj_error::unknown_symbol:
return "Unknown symbol.";
default:
llvm_unreachable("An enumerator of readobj_error does not have a message "
"defined.");
}
llvm_unreachable("An enumerator of readobj_error does not have a message "
"defined.");
}

error_condition _readobj_error_category::default_error_condition(int ev) const {
if (ev == readobj_error::success)
error_condition _readobj_error_category::default_error_condition(int EV) const {
if (static_cast<readobj_error>(EV) == readobj_error::success)
return error_condition();
return errc::invalid_argument;
}
Expand Down
22 changes: 7 additions & 15 deletions tools/llvm-readobj/Error.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,28 +20,20 @@ namespace llvm {

const error_category &readobj_category();

struct readobj_error {
enum _ {
success = 0,
file_not_found,
unsupported_file_format,
unrecognized_file_format,
unsupported_obj_file_format,
unknown_symbol
};
_ v_;

readobj_error(_ v) : v_(v) {}
explicit readobj_error(int v) : v_(_(v)) {}
operator int() const {return v_;}
enum class readobj_error {
success = 0,
file_not_found,
unsupported_file_format,
unrecognized_file_format,
unsupported_obj_file_format,
unknown_symbol
};

inline error_code make_error_code(readobj_error e) {
return error_code(static_cast<int>(e), readobj_category());
}

template <> struct is_error_code_enum<readobj_error> : std::true_type { };
template <> struct is_error_code_enum<readobj_error::_> : std::true_type { };

} // namespace llvm

Expand Down

0 comments on commit e869d88

Please sign in to comment.