1/*
2 * Copyright (c) 1996,1997
3 * Silicon Graphics Computer Systems, Inc.
4 *
5 * Copyright (c) 1999
6 * Boris Fomitchev
7 *
8 * This material is provided "as is", with absolutely no warranty expressed
9 * or implied. Any use is at your own risk.
10 *
11 * Permission to use or copy this software for any purpose is hereby granted
12 * without fee, provided the above notices are retained on all copies.
13 * Permission to modify the code and to distribute modified code is granted,
14 * provided the above notices are retained, and a notice that the code was
15 * modified is included with the above copyright notice.
16 *
17 */
18
19#ifndef _STLP_INTERNAL_STDEXCEPT
20#define _STLP_INTERNAL_STDEXCEPT
21
22#ifndef _STLP_INTERNAL_STDEXCEPT_BASE
23#  include <stl/_stdexcept_base.h>
24#endif
25
26#if !defined (_STLP_USE_NATIVE_STDEXCEPT) || defined (_STLP_USE_OWN_NAMESPACE)
27
28#  if defined(_STLP_USE_EXCEPTIONS) || 1
29
30_STLP_BEGIN_NAMESPACE
31
32class _STLP_CLASS_DECLSPEC logic_error : public __Named_exception {
33public:
34  logic_error(const string& __s) : __Named_exception(__s) {}
35#    ifndef _STLP_USE_NO_IOSTREAMS
36  ~logic_error() _STLP_NOTHROW_INHERENTLY;
37#    endif
38};
39
40class _STLP_CLASS_DECLSPEC runtime_error : public __Named_exception {
41public:
42  runtime_error(const string& __s) : __Named_exception(__s) {}
43#    ifndef _STLP_USE_NO_IOSTREAMS
44  ~runtime_error() _STLP_NOTHROW_INHERENTLY;
45#    endif
46};
47
48class _STLP_CLASS_DECLSPEC domain_error : public logic_error {
49public:
50  domain_error(const string& __arg) : logic_error(__arg) {}
51#    ifndef _STLP_USE_NO_IOSTREAMS
52  ~domain_error() _STLP_NOTHROW_INHERENTLY;
53#    endif
54};
55
56class _STLP_CLASS_DECLSPEC invalid_argument : public logic_error {
57public:
58  invalid_argument(const string& __arg) : logic_error(__arg) {}
59#    ifndef _STLP_USE_NO_IOSTREAMS
60  ~invalid_argument() _STLP_NOTHROW_INHERENTLY;
61#    endif
62};
63
64class _STLP_CLASS_DECLSPEC length_error : public logic_error {
65public:
66  length_error(const string& __arg) : logic_error(__arg) {}
67#    ifndef _STLP_USE_NO_IOSTREAMS
68  ~length_error() _STLP_NOTHROW_INHERENTLY;
69#    endif
70};
71
72class _STLP_CLASS_DECLSPEC out_of_range : public logic_error {
73public:
74  out_of_range(const string& __arg) : logic_error(__arg) {}
75#    ifndef _STLP_USE_NO_IOSTREAMS
76  ~out_of_range() _STLP_NOTHROW_INHERENTLY;
77#    endif
78};
79
80class _STLP_CLASS_DECLSPEC range_error : public runtime_error {
81public:
82  range_error(const string& __arg) : runtime_error(__arg) {}
83#    ifndef _STLP_USE_NO_IOSTREAMS
84  ~range_error() _STLP_NOTHROW_INHERENTLY;
85#    endif
86};
87
88class _STLP_CLASS_DECLSPEC overflow_error : public runtime_error {
89public:
90  overflow_error(const string& __arg) : runtime_error(__arg) {}
91#    ifndef _STLP_USE_NO_IOSTREAMS
92  ~overflow_error() _STLP_NOTHROW_INHERENTLY;
93#    endif
94};
95
96class _STLP_CLASS_DECLSPEC underflow_error : public runtime_error {
97public:
98  underflow_error(const string& __arg) : runtime_error(__arg) {}
99#    ifndef _STLP_USE_NO_IOSTREAMS
100  ~underflow_error() _STLP_NOTHROW_INHERENTLY;
101#    endif
102};
103
104_STLP_END_NAMESPACE
105
106#  endif
107#endif
108
109#endif /* _STLP_INTERNAL_STDEXCEPT */
110