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 160