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@210620 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
espindola committed Jun 11, 2014
1 parent f681298 commit c3c6d5f
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 18 deletions.
9 changes: 4 additions & 5 deletions tools/obj2yaml/Error.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class _obj2yaml_error_category : public error_category {
const char *_obj2yaml_error_category::name() const { return "obj2yaml"; }

std::string _obj2yaml_error_category::message(int ev) const {
switch (ev) {
switch (static_cast<obj2yaml_error>(ev)) {
case obj2yaml_error::success:
return "Success";
case obj2yaml_error::file_not_found:
Expand All @@ -33,15 +33,14 @@ std::string _obj2yaml_error_category::message(int ev) const {
return "Unrecognized file type.";
case obj2yaml_error::unsupported_obj_file_format:
return "Unsupported object file format.";
default:
llvm_unreachable("An enumerator of obj2yaml_error does not have a message "
"defined.");
}
llvm_unreachable("An enumerator of obj2yaml_error does not have a message "
"defined.");
}

error_condition
_obj2yaml_error_category::default_error_condition(int ev) const {
if (ev == obj2yaml_error::success)
if (static_cast<obj2yaml_error>(ev) == obj2yaml_error::success)
return error_condition();
return errc::invalid_argument;
}
Expand Down
18 changes: 5 additions & 13 deletions tools/obj2yaml/Error.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,18 @@ namespace llvm {

const error_category &obj2yaml_category();

struct obj2yaml_error {
enum _ {
success = 0,
file_not_found,
unrecognized_file_format,
unsupported_obj_file_format
};
_ v_;

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

inline error_code make_error_code(obj2yaml_error e) {
return error_code(static_cast<int>(e), obj2yaml_category());
}

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

} // namespace llvm

Expand Down

0 comments on commit c3c6d5f

Please sign in to comment.