/src/keystone/llvm/include/llvm/Object/Error.h
Line | Count | Source (jump to first uncovered line) |
1 | | //===- Error.h - system_error extensions for Object -------------*- C++ -*-===// |
2 | | // |
3 | | // The LLVM Compiler Infrastructure |
4 | | // |
5 | | // This file is distributed under the University of Illinois Open Source |
6 | | // License. See LICENSE.TXT for details. |
7 | | // |
8 | | //===----------------------------------------------------------------------===// |
9 | | // |
10 | | // This declares a new error_category for the Object library. |
11 | | // |
12 | | //===----------------------------------------------------------------------===// |
13 | | |
14 | | #ifndef LLVM_OBJECT_ERROR_H |
15 | | #define LLVM_OBJECT_ERROR_H |
16 | | |
17 | | #include <system_error> |
18 | | |
19 | | namespace llvm_ks { |
20 | | namespace object { |
21 | | |
22 | | const std::error_category &object_category(); |
23 | | |
24 | | enum class object_error { |
25 | | // Error code 0 is absent. Use std::error_code() instead. |
26 | | arch_not_found = 1, |
27 | | invalid_file_type, |
28 | | parse_failed, |
29 | | unexpected_eof, |
30 | | string_table_non_null_end, |
31 | | invalid_section_index, |
32 | | bitcode_section_not_found, |
33 | | elf_invalid_dynamic_table_size, |
34 | | macho_small_load_command, |
35 | | macho_load_segment_too_many_sections, |
36 | | macho_load_segment_too_small, |
37 | | }; |
38 | | |
39 | 0 | inline std::error_code make_error_code(object_error e) { |
40 | 0 | return std::error_code(static_cast<int>(e), object_category()); |
41 | 0 | } |
42 | | |
43 | | } // end namespace object. |
44 | | |
45 | | } // end namespace llvm_ks. |
46 | | |
47 | | namespace std { |
48 | | template <> |
49 | | struct is_error_code_enum<llvm_ks::object::object_error> : std::true_type {}; |
50 | | } |
51 | | |
52 | | #endif |