100db7afdSDavid E. O'Brien // Function-Based Exception Support -*- C++ -*- 200db7afdSDavid E. O'Brien 3*f8a1b7d9SAlexander Kabaev // Copyright (C) 2001, 2004, 2005 Free Software Foundation, Inc. 400db7afdSDavid E. O'Brien // 500db7afdSDavid E. O'Brien // This file is part of the GNU ISO C++ Library. This library is free 600db7afdSDavid E. O'Brien // software; you can redistribute it and/or modify it under the 700db7afdSDavid E. O'Brien // terms of the GNU General Public License as published by the 800db7afdSDavid E. O'Brien // Free Software Foundation; either version 2, or (at your option) 900db7afdSDavid E. O'Brien // any later version. 1000db7afdSDavid E. O'Brien 1100db7afdSDavid E. O'Brien // This library is distributed in the hope that it will be useful, 1200db7afdSDavid E. O'Brien // but WITHOUT ANY WARRANTY; without even the implied warranty of 1300db7afdSDavid E. O'Brien // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1400db7afdSDavid E. O'Brien // GNU General Public License for more details. 1500db7afdSDavid E. O'Brien 1600db7afdSDavid E. O'Brien // You should have received a copy of the GNU General Public License along 1700db7afdSDavid E. O'Brien // with this library; see the file COPYING. If not, write to the Free 18*f8a1b7d9SAlexander Kabaev // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 1900db7afdSDavid E. O'Brien // USA. 2000db7afdSDavid E. O'Brien 2100db7afdSDavid E. O'Brien // As a special exception, you may use this file as part of a free software 2200db7afdSDavid E. O'Brien // library without restriction. Specifically, if other files instantiate 2300db7afdSDavid E. O'Brien // templates or use macros or inline functions from this file, or you compile 2400db7afdSDavid E. O'Brien // this file and link it with other files to produce an executable, this 2500db7afdSDavid E. O'Brien // file does not by itself cause the resulting executable to be covered by 2600db7afdSDavid E. O'Brien // the GNU General Public License. This exception does not however 2700db7afdSDavid E. O'Brien // invalidate any other reasons why the executable file might be covered by 2800db7afdSDavid E. O'Brien // the GNU General Public License. 2900db7afdSDavid E. O'Brien 30*f8a1b7d9SAlexander Kabaev /** @file functexcept.h 31*f8a1b7d9SAlexander Kabaev * This header provides support for -fno-exceptions. 32*f8a1b7d9SAlexander Kabaev */ 33*f8a1b7d9SAlexander Kabaev 3400db7afdSDavid E. O'Brien // 3500db7afdSDavid E. O'Brien // ISO C++ 14882: 19.1 Exception classes 3600db7afdSDavid E. O'Brien // 3700db7afdSDavid E. O'Brien 38*f8a1b7d9SAlexander Kabaev #ifndef _FUNCTEXCEPT_H 39*f8a1b7d9SAlexander Kabaev #define _FUNCTEXCEPT_H 1 40*f8a1b7d9SAlexander Kabaev 41*f8a1b7d9SAlexander Kabaev #include <bits/c++config.h> 4200db7afdSDavid E. O'Brien #include <exception_defines.h> 4300db7afdSDavid E. O'Brien 44*f8a1b7d9SAlexander Kabaev _GLIBCXX_BEGIN_NAMESPACE(std) 45*f8a1b7d9SAlexander Kabaev 4600db7afdSDavid E. O'Brien // Helper for exception objects in <except> 4700db7afdSDavid E. O'Brien void 48*f8a1b7d9SAlexander Kabaev __throw_bad_exception(void) __attribute__((__noreturn__)); 4900db7afdSDavid E. O'Brien 5000db7afdSDavid E. O'Brien // Helper for exception objects in <new> 5100db7afdSDavid E. O'Brien void 52*f8a1b7d9SAlexander Kabaev __throw_bad_alloc(void) __attribute__((__noreturn__)); 5300db7afdSDavid E. O'Brien 5400db7afdSDavid E. O'Brien // Helper for exception objects in <typeinfo> 5500db7afdSDavid E. O'Brien void 56*f8a1b7d9SAlexander Kabaev __throw_bad_cast(void) __attribute__((__noreturn__)); 5700db7afdSDavid E. O'Brien 5800db7afdSDavid E. O'Brien void 59*f8a1b7d9SAlexander Kabaev __throw_bad_typeid(void) __attribute__((__noreturn__)); 6000db7afdSDavid E. O'Brien 6100db7afdSDavid E. O'Brien // Helpers for exception objects in <stdexcept> 6200db7afdSDavid E. O'Brien void 63*f8a1b7d9SAlexander Kabaev __throw_logic_error(const char*) __attribute__((__noreturn__)); 6400db7afdSDavid E. O'Brien 6500db7afdSDavid E. O'Brien void 66*f8a1b7d9SAlexander Kabaev __throw_domain_error(const char*) __attribute__((__noreturn__)); 6700db7afdSDavid E. O'Brien 6800db7afdSDavid E. O'Brien void 69*f8a1b7d9SAlexander Kabaev __throw_invalid_argument(const char*) __attribute__((__noreturn__)); 7000db7afdSDavid E. O'Brien 7100db7afdSDavid E. O'Brien void 72*f8a1b7d9SAlexander Kabaev __throw_length_error(const char*) __attribute__((__noreturn__)); 7300db7afdSDavid E. O'Brien 7400db7afdSDavid E. O'Brien void 75*f8a1b7d9SAlexander Kabaev __throw_out_of_range(const char*) __attribute__((__noreturn__)); 7600db7afdSDavid E. O'Brien 7700db7afdSDavid E. O'Brien void 78*f8a1b7d9SAlexander Kabaev __throw_runtime_error(const char*) __attribute__((__noreturn__)); 7900db7afdSDavid E. O'Brien 8000db7afdSDavid E. O'Brien void 81*f8a1b7d9SAlexander Kabaev __throw_range_error(const char*) __attribute__((__noreturn__)); 8200db7afdSDavid E. O'Brien 8300db7afdSDavid E. O'Brien void 84*f8a1b7d9SAlexander Kabaev __throw_overflow_error(const char*) __attribute__((__noreturn__)); 8500db7afdSDavid E. O'Brien 8600db7afdSDavid E. O'Brien void 87*f8a1b7d9SAlexander Kabaev __throw_underflow_error(const char*) __attribute__((__noreturn__)); 8800db7afdSDavid E. O'Brien 8900db7afdSDavid E. O'Brien // Helpers for exception objects in basic_ios 9000db7afdSDavid E. O'Brien void 91*f8a1b7d9SAlexander Kabaev __throw_ios_failure(const char*) __attribute__((__noreturn__)); 9200db7afdSDavid E. O'Brien 93*f8a1b7d9SAlexander Kabaev _GLIBCXX_END_NAMESPACE 94*f8a1b7d9SAlexander Kabaev 95*f8a1b7d9SAlexander Kabaev #endif 96