root / lab4 / .minix-src / include / c++ / stdexcept @ 14
History | View | Annotate | Download (4.31 KB)
1 |
// -*- C++ -*- |
---|---|
2 |
//===--------------------------- stdexcept --------------------------------===// |
3 |
// |
4 |
// The LLVM Compiler Infrastructure |
5 |
// |
6 |
// This file is dual licensed under the MIT and the University of Illinois Open |
7 |
// Source Licenses. See LICENSE.TXT for details. |
8 |
// |
9 |
//===----------------------------------------------------------------------===// |
10 |
|
11 |
#ifndef _LIBCPP_STDEXCEPT |
12 |
#define _LIBCPP_STDEXCEPT |
13 |
|
14 |
/* |
15 |
stdexcept synopsis |
16 |
|
17 |
namespace std |
18 |
{ |
19 |
|
20 |
class logic_error; |
21 |
class domain_error; |
22 |
class invalid_argument; |
23 |
class length_error; |
24 |
class out_of_range; |
25 |
class runtime_error; |
26 |
class range_error; |
27 |
class overflow_error; |
28 |
class underflow_error; |
29 |
|
30 |
for each class xxx_error: |
31 |
|
32 |
class xxx_error : public exception // at least indirectly |
33 |
{ |
34 |
public: |
35 |
explicit xxx_error(const string& what_arg); |
36 |
explicit xxx_error(const char* what_arg); |
37 |
|
38 |
virtual const char* what() const noexcept // returns what_arg |
39 |
}; |
40 |
|
41 |
} // std |
42 |
|
43 |
*/ |
44 |
|
45 |
#include <__config> |
46 |
#include <exception> |
47 |
#include <iosfwd> // for string forward decl |
48 |
|
49 |
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) |
50 |
#pragma GCC system_header |
51 |
#endif |
52 |
|
53 |
#ifndef _LIBCPP___REFSTRING |
54 |
_LIBCPP_BEGIN_NAMESPACE_STD |
55 |
class _LIBCPP_HIDDEN __libcpp_refstring { |
56 |
const char *__imp_ _LIBCPP_UNUSED; |
57 |
}; |
58 |
_LIBCPP_END_NAMESPACE_STD |
59 |
#endif |
60 |
|
61 |
namespace std // purposefully not using versioning namespace |
62 |
{ |
63 |
|
64 |
class _LIBCPP_EXCEPTION_ABI logic_error |
65 |
: public exception |
66 |
{ |
67 |
private: |
68 |
_VSTD::__libcpp_refstring __imp_; |
69 |
public: |
70 |
explicit logic_error(const string&); |
71 |
explicit logic_error(const char*); |
72 |
|
73 |
logic_error(const logic_error&) _NOEXCEPT; |
74 |
logic_error& operator=(const logic_error&) _NOEXCEPT; |
75 |
|
76 |
virtual ~logic_error() _NOEXCEPT; |
77 |
|
78 |
virtual const char* what() const _NOEXCEPT; |
79 |
}; |
80 |
|
81 |
class _LIBCPP_EXCEPTION_ABI runtime_error |
82 |
: public exception |
83 |
{ |
84 |
private: |
85 |
_VSTD::__libcpp_refstring __imp_; |
86 |
public: |
87 |
explicit runtime_error(const string&); |
88 |
explicit runtime_error(const char*); |
89 |
|
90 |
runtime_error(const runtime_error&) _NOEXCEPT; |
91 |
runtime_error& operator=(const runtime_error&) _NOEXCEPT; |
92 |
|
93 |
virtual ~runtime_error() _NOEXCEPT; |
94 |
|
95 |
virtual const char* what() const _NOEXCEPT; |
96 |
}; |
97 |
|
98 |
class _LIBCPP_EXCEPTION_ABI domain_error |
99 |
: public logic_error |
100 |
{ |
101 |
public: |
102 |
_LIBCPP_INLINE_VISIBILITY explicit domain_error(const string& __s) : logic_error(__s) {} |
103 |
_LIBCPP_INLINE_VISIBILITY explicit domain_error(const char* __s) : logic_error(__s) {} |
104 |
|
105 |
virtual ~domain_error() _NOEXCEPT; |
106 |
}; |
107 |
|
108 |
class _LIBCPP_EXCEPTION_ABI invalid_argument |
109 |
: public logic_error |
110 |
{ |
111 |
public: |
112 |
_LIBCPP_INLINE_VISIBILITY explicit invalid_argument(const string& __s) : logic_error(__s) {} |
113 |
_LIBCPP_INLINE_VISIBILITY explicit invalid_argument(const char* __s) : logic_error(__s) {} |
114 |
|
115 |
virtual ~invalid_argument() _NOEXCEPT; |
116 |
}; |
117 |
|
118 |
class _LIBCPP_EXCEPTION_ABI length_error |
119 |
: public logic_error |
120 |
{ |
121 |
public: |
122 |
_LIBCPP_INLINE_VISIBILITY explicit length_error(const string& __s) : logic_error(__s) {} |
123 |
_LIBCPP_INLINE_VISIBILITY explicit length_error(const char* __s) : logic_error(__s) {} |
124 |
|
125 |
virtual ~length_error() _NOEXCEPT; |
126 |
}; |
127 |
|
128 |
class _LIBCPP_EXCEPTION_ABI out_of_range |
129 |
: public logic_error |
130 |
{ |
131 |
public: |
132 |
_LIBCPP_INLINE_VISIBILITY explicit out_of_range(const string& __s) : logic_error(__s) {} |
133 |
_LIBCPP_INLINE_VISIBILITY explicit out_of_range(const char* __s) : logic_error(__s) {} |
134 |
|
135 |
virtual ~out_of_range() _NOEXCEPT; |
136 |
}; |
137 |
|
138 |
class _LIBCPP_EXCEPTION_ABI range_error |
139 |
: public runtime_error |
140 |
{ |
141 |
public: |
142 |
_LIBCPP_INLINE_VISIBILITY explicit range_error(const string& __s) : runtime_error(__s) {} |
143 |
_LIBCPP_INLINE_VISIBILITY explicit range_error(const char* __s) : runtime_error(__s) {} |
144 |
|
145 |
virtual ~range_error() _NOEXCEPT; |
146 |
}; |
147 |
|
148 |
class _LIBCPP_EXCEPTION_ABI overflow_error |
149 |
: public runtime_error |
150 |
{ |
151 |
public: |
152 |
_LIBCPP_INLINE_VISIBILITY explicit overflow_error(const string& __s) : runtime_error(__s) {} |
153 |
_LIBCPP_INLINE_VISIBILITY explicit overflow_error(const char* __s) : runtime_error(__s) {} |
154 |
|
155 |
virtual ~overflow_error() _NOEXCEPT; |
156 |
}; |
157 |
|
158 |
class _LIBCPP_EXCEPTION_ABI underflow_error |
159 |
: public runtime_error |
160 |
{ |
161 |
public: |
162 |
_LIBCPP_INLINE_VISIBILITY explicit underflow_error(const string& __s) : runtime_error(__s) {} |
163 |
_LIBCPP_INLINE_VISIBILITY explicit underflow_error(const char* __s) : runtime_error(__s) {} |
164 |
|
165 |
virtual ~underflow_error() _NOEXCEPT; |
166 |
}; |
167 |
|
168 |
} // std |
169 |
|
170 |
#endif // _LIBCPP_STDEXCEPT |