1*3e519524SHoward Hinnant// -*- C++ -*- 2*3e519524SHoward Hinnant//===--------------------------- stdexcept --------------------------------===// 3*3e519524SHoward Hinnant// 4*3e519524SHoward Hinnant// ��������������������The LLVM Compiler Infrastructure 5*3e519524SHoward Hinnant// 6*3e519524SHoward Hinnant// This file is distributed under the University of Illinois Open Source 7*3e519524SHoward Hinnant// License. See LICENSE.TXT for details. 8*3e519524SHoward Hinnant// 9*3e519524SHoward Hinnant//===----------------------------------------------------------------------===// 10*3e519524SHoward Hinnant 11*3e519524SHoward Hinnant#ifndef _LIBCPP_STDEXCEPT 12*3e519524SHoward Hinnant#define _LIBCPP_STDEXCEPT 13*3e519524SHoward Hinnant 14*3e519524SHoward Hinnant/* 15*3e519524SHoward Hinnant stdexcept synopsis 16*3e519524SHoward Hinnant 17*3e519524SHoward Hinnantnamespace std 18*3e519524SHoward Hinnant{ 19*3e519524SHoward Hinnant 20*3e519524SHoward Hinnantclass logic_error; 21*3e519524SHoward Hinnant class domain_error; 22*3e519524SHoward Hinnant class invalid_argument; 23*3e519524SHoward Hinnant class length_error; 24*3e519524SHoward Hinnant class out_of_range; 25*3e519524SHoward Hinnantclass runtime_error; 26*3e519524SHoward Hinnant class range_error; 27*3e519524SHoward Hinnant class overflow_error; 28*3e519524SHoward Hinnant class underflow_error; 29*3e519524SHoward Hinnant 30*3e519524SHoward Hinnantfor each class xxx_error: 31*3e519524SHoward Hinnant 32*3e519524SHoward Hinnantclass xxx_error : public exception // at least indirectly 33*3e519524SHoward Hinnant{ 34*3e519524SHoward Hinnantpublic: 35*3e519524SHoward Hinnant explicit xxx_error(const string& what_arg); 36*3e519524SHoward Hinnant explicit xxx_error(const char* what_arg); // extension 37*3e519524SHoward Hinnant 38*3e519524SHoward Hinnant virtual const char* what() const // returns what_arg 39*3e519524SHoward Hinnant}; 40*3e519524SHoward Hinnant 41*3e519524SHoward Hinnant} // std 42*3e519524SHoward Hinnant 43*3e519524SHoward Hinnant*/ 44*3e519524SHoward Hinnant 45*3e519524SHoward Hinnant#include <__config> 46*3e519524SHoward Hinnant#include <exception> 47*3e519524SHoward Hinnant#include <iosfwd> // for string forward decl 48*3e519524SHoward Hinnant 49*3e519524SHoward Hinnant#pragma GCC system_header 50*3e519524SHoward Hinnant 51*3e519524SHoward Hinnantnamespace std // purposefully not using versioning namespace 52*3e519524SHoward Hinnant{ 53*3e519524SHoward Hinnant 54*3e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI logic_error 55*3e519524SHoward Hinnant : public exception 56*3e519524SHoward Hinnant{ 57*3e519524SHoward Hinnantprivate: 58*3e519524SHoward Hinnant void* __imp_; 59*3e519524SHoward Hinnantpublic: 60*3e519524SHoward Hinnant explicit logic_error(const string&); 61*3e519524SHoward Hinnant explicit logic_error(const char*); 62*3e519524SHoward Hinnant 63*3e519524SHoward Hinnant logic_error(const logic_error&) throw(); 64*3e519524SHoward Hinnant logic_error& operator=(const logic_error&) throw(); 65*3e519524SHoward Hinnant 66*3e519524SHoward Hinnant virtual ~logic_error() throw(); 67*3e519524SHoward Hinnant 68*3e519524SHoward Hinnant virtual const char* what() const throw(); 69*3e519524SHoward Hinnant}; 70*3e519524SHoward Hinnant 71*3e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI runtime_error 72*3e519524SHoward Hinnant : public exception 73*3e519524SHoward Hinnant{ 74*3e519524SHoward Hinnantprivate: 75*3e519524SHoward Hinnant void* __imp_; 76*3e519524SHoward Hinnantpublic: 77*3e519524SHoward Hinnant explicit runtime_error(const string&); 78*3e519524SHoward Hinnant explicit runtime_error(const char*); 79*3e519524SHoward Hinnant 80*3e519524SHoward Hinnant runtime_error(const runtime_error&) throw(); 81*3e519524SHoward Hinnant runtime_error& operator=(const runtime_error&) throw(); 82*3e519524SHoward Hinnant 83*3e519524SHoward Hinnant virtual ~runtime_error() throw(); 84*3e519524SHoward Hinnant 85*3e519524SHoward Hinnant virtual const char* what() const throw(); 86*3e519524SHoward Hinnant}; 87*3e519524SHoward Hinnant 88*3e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI domain_error 89*3e519524SHoward Hinnant : public logic_error 90*3e519524SHoward Hinnant{ 91*3e519524SHoward Hinnantpublic: 92*3e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit domain_error(const string& __s) : logic_error(__s) {} 93*3e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit domain_error(const char* __s) : logic_error(__s) {} 94*3e519524SHoward Hinnant 95*3e519524SHoward Hinnant virtual ~domain_error() throw(); 96*3e519524SHoward Hinnant}; 97*3e519524SHoward Hinnant 98*3e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI invalid_argument 99*3e519524SHoward Hinnant : public logic_error 100*3e519524SHoward Hinnant{ 101*3e519524SHoward Hinnantpublic: 102*3e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit invalid_argument(const string& __s) : logic_error(__s) {} 103*3e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit invalid_argument(const char* __s) : logic_error(__s) {} 104*3e519524SHoward Hinnant 105*3e519524SHoward Hinnant virtual ~invalid_argument() throw(); 106*3e519524SHoward Hinnant}; 107*3e519524SHoward Hinnant 108*3e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI length_error 109*3e519524SHoward Hinnant : public logic_error 110*3e519524SHoward Hinnant{ 111*3e519524SHoward Hinnantpublic: 112*3e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit length_error(const string& __s) : logic_error(__s) {} 113*3e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit length_error(const char* __s) : logic_error(__s) {} 114*3e519524SHoward Hinnant 115*3e519524SHoward Hinnant virtual ~length_error() throw(); 116*3e519524SHoward Hinnant}; 117*3e519524SHoward Hinnant 118*3e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI out_of_range 119*3e519524SHoward Hinnant : public logic_error 120*3e519524SHoward Hinnant{ 121*3e519524SHoward Hinnantpublic: 122*3e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit out_of_range(const string& __s) : logic_error(__s) {} 123*3e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit out_of_range(const char* __s) : logic_error(__s) {} 124*3e519524SHoward Hinnant 125*3e519524SHoward Hinnant virtual ~out_of_range() throw(); 126*3e519524SHoward Hinnant}; 127*3e519524SHoward Hinnant 128*3e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI range_error 129*3e519524SHoward Hinnant : public runtime_error 130*3e519524SHoward Hinnant{ 131*3e519524SHoward Hinnantpublic: 132*3e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit range_error(const string& __s) : runtime_error(__s) {} 133*3e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit range_error(const char* __s) : runtime_error(__s) {} 134*3e519524SHoward Hinnant 135*3e519524SHoward Hinnant virtual ~range_error() throw(); 136*3e519524SHoward Hinnant}; 137*3e519524SHoward Hinnant 138*3e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI overflow_error 139*3e519524SHoward Hinnant : public runtime_error 140*3e519524SHoward Hinnant{ 141*3e519524SHoward Hinnantpublic: 142*3e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit overflow_error(const string& __s) : runtime_error(__s) {} 143*3e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit overflow_error(const char* __s) : runtime_error(__s) {} 144*3e519524SHoward Hinnant 145*3e519524SHoward Hinnant virtual ~overflow_error() throw(); 146*3e519524SHoward Hinnant}; 147*3e519524SHoward Hinnant 148*3e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI underflow_error 149*3e519524SHoward Hinnant : public runtime_error 150*3e519524SHoward Hinnant{ 151*3e519524SHoward Hinnantpublic: 152*3e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit underflow_error(const string& __s) : runtime_error(__s) {} 153*3e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit underflow_error(const char* __s) : runtime_error(__s) {} 154*3e519524SHoward Hinnant 155*3e519524SHoward Hinnant virtual ~underflow_error() throw(); 156*3e519524SHoward Hinnant}; 157*3e519524SHoward Hinnant 158*3e519524SHoward Hinnant 159*3e519524SHoward Hinnant} // std 160*3e519524SHoward Hinnant 161*3e519524SHoward Hinnant#endif // _LIBCPP_STDEXCEPT 162