Use an enum class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210620 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2014-06-11 01:09:09 +00:00
parent f68129838b
commit c3c6d5fcb8
2 changed files with 9 additions and 18 deletions

View File

@ -24,7 +24,7 @@ public:
const char *_obj2yaml_error_category::name() const { return "obj2yaml"; } const char *_obj2yaml_error_category::name() const { return "obj2yaml"; }
std::string _obj2yaml_error_category::message(int ev) const { std::string _obj2yaml_error_category::message(int ev) const {
switch (ev) { switch (static_cast<obj2yaml_error>(ev)) {
case obj2yaml_error::success: case obj2yaml_error::success:
return "Success"; return "Success";
case obj2yaml_error::file_not_found: case obj2yaml_error::file_not_found:
@ -33,15 +33,14 @@ std::string _obj2yaml_error_category::message(int ev) const {
return "Unrecognized file type."; return "Unrecognized file type.";
case obj2yaml_error::unsupported_obj_file_format: case obj2yaml_error::unsupported_obj_file_format:
return "Unsupported object file format."; return "Unsupported object file format.";
default: }
llvm_unreachable("An enumerator of obj2yaml_error does not have a message " llvm_unreachable("An enumerator of obj2yaml_error does not have a message "
"defined."); "defined.");
}
} }
error_condition error_condition
_obj2yaml_error_category::default_error_condition(int ev) const { _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 error_condition();
return errc::invalid_argument; return errc::invalid_argument;
} }

View File

@ -16,18 +16,11 @@ namespace llvm {
const error_category &obj2yaml_category(); const error_category &obj2yaml_category();
struct obj2yaml_error { enum class obj2yaml_error {
enum _ {
success = 0, success = 0,
file_not_found, file_not_found,
unrecognized_file_format, unrecognized_file_format,
unsupported_obj_file_format unsupported_obj_file_format
};
_ v_;
obj2yaml_error(_ v) : v_(v) {}
explicit obj2yaml_error(int v) : v_(_(v)) {}
operator int() const {return v_;}
}; };
inline error_code make_error_code(obj2yaml_error e) { inline error_code make_error_code(obj2yaml_error e) {
@ -35,7 +28,6 @@ inline error_code make_error_code(obj2yaml_error e) {
} }
template <> struct is_error_code_enum<obj2yaml_error> : std::true_type { }; template <> struct is_error_code_enum<obj2yaml_error> : std::true_type { };
template <> struct is_error_code_enum<obj2yaml_error::_> : std::true_type { };
} // namespace llvm } // namespace llvm