//===- Error.h - system_error extensions for Object -------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This declares a new error_category for the Object library. // //===----------------------------------------------------------------------===// #ifndef LLVM_OBJECT_ERROR_H #define LLVM_OBJECT_ERROR_H #include "llvm/Support/system_error.h" namespace llvm { namespace object { const error_category &object_category(); struct object_error { enum _ { success = 0, invalid_file_type, parse_failed, unexpected_eof }; _ v_; object_error(_ v) : v_(v) {} explicit object_error(int v) : v_(_(v)) {} operator int() const {return v_;} }; inline error_code make_error_code(object_error e) { return error_code(static_cast<int>(e), object_category()); } } // end namespace object. template <> struct is_error_code_enum<object::object_error> : true_type { }; template <> struct is_error_code_enum<object::object_error::_> : true_type { }; } // end namespace llvm. #endif