added iOS source code
[wl-app.git] / iOS / Pods / Realm / include / core / realm / util / basic_system_errors.hpp
1 /*************************************************************************
2  *
3  * Copyright 2016 Realm Inc.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  **************************************************************************/
18
19 #ifndef REALM_UTIL_BASIC_SYSTEM_ERRORS_HPP
20 #define REALM_UTIL_BASIC_SYSTEM_ERRORS_HPP
21
22 #include <cerrno>
23 #include <system_error>
24
25
26 namespace realm {
27 namespace util {
28 namespace error {
29
30 enum basic_system_errors {
31     /// Address family not supported by protocol.
32     address_family_not_supported = EAFNOSUPPORT,
33
34     /// Invalid argument.
35     invalid_argument = EINVAL,
36
37     /// Cannot allocate memory.
38     no_memory = ENOMEM,
39
40     /// Operation cancelled.
41     operation_aborted = ECANCELED,
42
43     /// Connection aborted.
44     connection_aborted = ECONNABORTED,
45
46     /// Connection reset by peer
47     connection_reset = ECONNRESET,
48
49     /// Broken pipe
50     broken_pipe = EPIPE,
51
52     /// Resource temporarily unavailable
53     resource_unavailable_try_again = EAGAIN,
54 };
55
56 std::error_code make_error_code(basic_system_errors) noexcept;
57
58 } // namespace error
59 } // namespace util
60 } // namespace realm
61
62 namespace std {
63
64 template <>
65 class is_error_code_enum<realm::util::error::basic_system_errors> {
66 public:
67     static const bool value = true;
68 };
69
70 } // namespace std
71
72 namespace realm {
73 namespace util {
74
75 std::error_code make_basic_system_error_code(int) noexcept;
76
77
78 // implementation
79
80 inline std::error_code make_basic_system_error_code(int err) noexcept
81 {
82     using namespace error;
83     return make_error_code(basic_system_errors(err));
84 }
85
86 } // namespace util
87 } // namespace realm
88
89 #endif // REALM_UTIL_BASIC_SYSTEM_ERRORS_HPP