libcxxrt

git clone https://git.neptards.moe/neptards/libcxxrt.git
Log | Files | Refs | README | LICENSE

stdexcept.h (3025B)


      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