]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - contrib/libcxxrt/stdexcept.h
MFC r368207,368607:
[FreeBSD/stable/10.git] / contrib / libcxxrt / stdexcept.h
1 /* 
2  * Copyright 2010-2011 PathScale, Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  * 1. Redistributions of source code must retain the above copyright notice,
8  *    this list of conditions and the following disclaimer.
9  *
10  * 2. Redistributions in binary form must reproduce the above copyright notice,
11  *    this list of conditions and the following disclaimer in the documentation
12  *    and/or other materials provided with the distribution.
13  * 
14  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
15  * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
16  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
21  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
22  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
24  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  */
26
27 /**
28  * stdexcept.h - provides a stub version of <stdexcept>, which defines enough
29  * of the exceptions for the runtime to use.  
30  */
31
32 namespace std
33 {
34
35         class exception
36         {
37         public:
38                 exception() throw();
39                 exception(const exception&) throw();
40                 exception& operator=(const exception&) throw();
41                 virtual ~exception();
42                 virtual const char* what() const throw();
43         };
44
45
46         /**
47          * Bad allocation exception.  Thrown by ::operator new() if it fails.
48          */
49         class bad_alloc: public exception
50         {
51         public:
52                 bad_alloc() throw();
53                 bad_alloc(const bad_alloc&) throw();
54                 bad_alloc& operator=(const bad_alloc&) throw();
55                 ~bad_alloc();
56                 virtual const char* what() const throw();
57         };
58
59         /**
60          * Bad cast exception.  Thrown by the __cxa_bad_cast() helper function.
61          */
62         class bad_cast: public exception {
63         public:
64                 bad_cast() throw();
65                 bad_cast(const bad_cast&) throw();
66                 bad_cast& operator=(const bad_cast&) throw();
67                 virtual ~bad_cast();
68                 virtual const char* what() const throw();
69         };
70
71         /**
72          * Bad typeidexception.  Thrown by the __cxa_bad_typeid() helper function.
73          */
74         class bad_typeid: public exception
75         {
76         public:
77                 bad_typeid() throw();
78                 bad_typeid(const bad_typeid &__rhs) throw();
79                 virtual ~bad_typeid();
80                 bad_typeid& operator=(const bad_typeid &__rhs) throw();
81                 virtual const char* what() const throw();
82         };
83
84         class bad_array_new_length: public bad_alloc
85         {
86         public:
87                 bad_array_new_length() throw();
88                 bad_array_new_length(const bad_array_new_length&) throw();
89                 bad_array_new_length& operator=(const bad_array_new_length&) throw();
90                 virtual ~bad_array_new_length();
91                 virtual const char *what() const throw();
92         };
93
94
95 } // namespace std
96