/ src / functexcept.cc
functexcept.cc
  1  // Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
  2  //
  3  // This file is part of the GNU ISO C++ Library.  This library is free
  4  // software; you can redistribute it and/or modify it under the
  5  // terms of the GNU General Public License as published by the
  6  // Free Software Foundation; either version 2, or (at your option)
  7  // any later version.
  8  
  9  // This library is distributed in the hope that it will be useful,
 10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
 11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 12  // GNU General Public License for more details.
 13  
 14  // You should have received a copy of the GNU General Public License along
 15  // with this library; see the file COPYING.  If not, write to the Free
 16  // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
 17  // USA.
 18  
 19  // As a special exception, you may use this file as part of a free software
 20  // library without restriction.  Specifically, if other files instantiate
 21  // templates or use macros or inline functions from this file, or you compile
 22  // this file and link it with other files to produce an executable, this
 23  // file does not by itself cause the resulting executable to be covered by
 24  // the GNU General Public License.  This exception does not however
 25  // invalidate any other reasons why the executable file might be covered by
 26  // the GNU General Public License.
 27  
 28  #include <bits/functexcept.h>
 29  #include <cstdlib>
 30  #include <exception>
 31  #include <stdexcept>
 32  #include <new>
 33  #include <typeinfo>
 34  #include <ios>
 35  
 36  #ifdef _GLIBCXX_USE_NLS
 37  # include <libintl.h>
 38  # define _(msgid)   gettext (msgid)
 39  #else
 40  # define _(msgid)   (msgid)
 41  #endif
 42  
 43  _GLIBCXX_BEGIN_NAMESPACE(std)
 44  
 45  #if __EXCEPTIONS
 46    void
 47    __throw_bad_exception(void)
 48    { throw bad_exception(); }
 49  
 50    void
 51    __throw_bad_alloc(void)
 52    { throw bad_alloc(); }
 53  
 54    void
 55    __throw_bad_cast(void)
 56    { throw bad_cast(); }
 57  
 58    void
 59    __throw_bad_typeid(void)
 60    { throw bad_typeid(); }
 61  
 62    void
 63    __throw_logic_error(const char* __s)
 64    { throw logic_error(_(__s)); }
 65  
 66    void
 67    __throw_domain_error(const char* __s)
 68    { throw domain_error(_(__s)); }
 69  
 70    void
 71    __throw_invalid_argument(const char* __s)
 72    { throw invalid_argument(_(__s)); }
 73  
 74    void
 75    __throw_length_error(const char* __s)
 76    { throw length_error(_(__s)); }
 77  
 78    void
 79    __throw_out_of_range(const char* __s)
 80    { throw out_of_range(_(__s)); }
 81  
 82    void
 83    __throw_runtime_error(const char* __s)
 84    { throw runtime_error(_(__s)); }
 85  
 86    void
 87    __throw_range_error(const char* __s)
 88    { throw range_error(_(__s)); }
 89  
 90    void
 91    __throw_overflow_error(const char* __s)
 92    { throw overflow_error(_(__s)); }
 93  
 94    void
 95    __throw_underflow_error(const char* __s)
 96    { throw underflow_error(_(__s)); }
 97  
 98    void
 99    __throw_ios_failure(const char* __s)
100    { throw ios_base::failure(_(__s)); }
101  #else
102    void
103    __throw_bad_exception(void)
104    { std::abort(); }
105  
106    void
107    __throw_bad_alloc(void)
108    { std::abort(); }
109  
110    void
111    __throw_bad_cast(void)
112    { std::abort(); }
113  
114    void
115    __throw_bad_typeid(void)
116    { std::abort(); }
117  
118    void
119    __throw_logic_error(const char*)
120    { std::abort(); }
121  
122    void
123    __throw_domain_error(const char*)
124    { std::abort(); }
125  
126    void
127    __throw_invalid_argument(const char*)
128    { std::abort(); }
129  
130    void
131    __throw_length_error(const char*)
132    { std::abort(); }
133  
134    void
135    __throw_out_of_range(const char*)
136    { std::abort(); }
137  
138    void
139    __throw_runtime_error(const char*)
140    { std::abort(); }
141  
142    void
143    __throw_range_error(const char*)
144    { std::abort(); }
145  
146    void
147    __throw_overflow_error(const char*)
148    { std::abort(); }
149  
150    void
151    __throw_underflow_error(const char*)
152    { std::abort(); }
153  
154    void
155    __throw_ios_failure(const char*)
156    { std::abort(); }
157  #endif //__EXCEPTIONS
158  
159  _GLIBCXX_END_NAMESPACE