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