Mercurial > hg > Members > tobaru > cbc > CbC_llvm
comparison include/llvm/Support/Errc.h @ 77:54457678186b
LLVM 3.6
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 08 Sep 2014 22:06:00 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
34:e874dbf0ad9d | 77:54457678186b |
---|---|
1 //===- llvm/Support/Errc.h - Defines the llvm::errc enum --------*- 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 // While std::error_code works OK on all platforms we use, there are some | |
11 // some problems with std::errc that can be avoided by using our own | |
12 // enumeration: | |
13 // | |
14 // * std::errc is a namespace in some implementations. That meas that ADL | |
15 // doesn't work and it is sometimes necessary to write std::make_error_code | |
16 // or in templates: | |
17 // using std::make_error_code; | |
18 // make_error_code(...); | |
19 // | |
20 // with this enum it is safe to always just use make_error_code. | |
21 // | |
22 // * Some implementations define fewer names than others. This header has | |
23 // the intersection of all the ones we support. | |
24 // | |
25 // * std::errc is just marked with is_error_condition_enum. This means that | |
26 // common patters like AnErrorCode == errc::no_such_file_or_directory take | |
27 // 4 virtual calls instead of two comparisons. | |
28 //===----------------------------------------------------------------------===// | |
29 | |
30 #ifndef LLVM_SUPPORT_ERRC_H | |
31 #define LLVM_SUPPORT_ERRC_H | |
32 | |
33 #include <system_error> | |
34 | |
35 namespace llvm { | |
36 enum class errc { | |
37 argument_list_too_long = int(std::errc::argument_list_too_long), | |
38 argument_out_of_domain = int(std::errc::argument_out_of_domain), | |
39 bad_address = int(std::errc::bad_address), | |
40 bad_file_descriptor = int(std::errc::bad_file_descriptor), | |
41 broken_pipe = int(std::errc::broken_pipe), | |
42 device_or_resource_busy = int(std::errc::device_or_resource_busy), | |
43 directory_not_empty = int(std::errc::directory_not_empty), | |
44 executable_format_error = int(std::errc::executable_format_error), | |
45 file_exists = int(std::errc::file_exists), | |
46 file_too_large = int(std::errc::file_too_large), | |
47 filename_too_long = int(std::errc::filename_too_long), | |
48 function_not_supported = int(std::errc::function_not_supported), | |
49 illegal_byte_sequence = int(std::errc::illegal_byte_sequence), | |
50 inappropriate_io_control_operation = | |
51 int(std::errc::inappropriate_io_control_operation), | |
52 interrupted = int(std::errc::interrupted), | |
53 invalid_argument = int(std::errc::invalid_argument), | |
54 invalid_seek = int(std::errc::invalid_seek), | |
55 io_error = int(std::errc::io_error), | |
56 is_a_directory = int(std::errc::is_a_directory), | |
57 no_child_process = int(std::errc::no_child_process), | |
58 no_lock_available = int(std::errc::no_lock_available), | |
59 no_space_on_device = int(std::errc::no_space_on_device), | |
60 no_such_device_or_address = int(std::errc::no_such_device_or_address), | |
61 no_such_device = int(std::errc::no_such_device), | |
62 no_such_file_or_directory = int(std::errc::no_such_file_or_directory), | |
63 no_such_process = int(std::errc::no_such_process), | |
64 not_a_directory = int(std::errc::not_a_directory), | |
65 not_enough_memory = int(std::errc::not_enough_memory), | |
66 operation_not_permitted = int(std::errc::operation_not_permitted), | |
67 permission_denied = int(std::errc::permission_denied), | |
68 read_only_file_system = int(std::errc::read_only_file_system), | |
69 resource_deadlock_would_occur = int(std::errc::resource_deadlock_would_occur), | |
70 resource_unavailable_try_again = | |
71 int(std::errc::resource_unavailable_try_again), | |
72 result_out_of_range = int(std::errc::result_out_of_range), | |
73 too_many_files_open_in_system = int(std::errc::too_many_files_open_in_system), | |
74 too_many_files_open = int(std::errc::too_many_files_open), | |
75 too_many_links = int(std::errc::too_many_links) | |
76 }; | |
77 | |
78 inline std::error_code make_error_code(errc E) { | |
79 return std::error_code(static_cast<int>(E), std::generic_category()); | |
80 } | |
81 } | |
82 | |
83 namespace std { | |
84 template <> struct is_error_code_enum<llvm::errc> : std::true_type {}; | |
85 } | |
86 #endif |