13e519524SHoward Hinnant// -*- C++ -*- 23e519524SHoward Hinnant//===--------------------------- stdexcept --------------------------------===// 33e519524SHoward Hinnant// 45b08a8a4SHoward Hinnant// The LLVM Compiler Infrastructure 53e519524SHoward Hinnant// 6412dbebeSHoward Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 7412dbebeSHoward Hinnant// Source Licenses. See LICENSE.TXT for details. 83e519524SHoward Hinnant// 93e519524SHoward Hinnant//===----------------------------------------------------------------------===// 103e519524SHoward Hinnant 113e519524SHoward Hinnant#ifndef _LIBCPP_STDEXCEPT 123e519524SHoward Hinnant#define _LIBCPP_STDEXCEPT 133e519524SHoward Hinnant 143e519524SHoward Hinnant/* 153e519524SHoward Hinnant stdexcept synopsis 163e519524SHoward Hinnant 173e519524SHoward Hinnantnamespace std 183e519524SHoward Hinnant{ 193e519524SHoward Hinnant 203e519524SHoward Hinnantclass logic_error; 213e519524SHoward Hinnant class domain_error; 223e519524SHoward Hinnant class invalid_argument; 233e519524SHoward Hinnant class length_error; 243e519524SHoward Hinnant class out_of_range; 253e519524SHoward Hinnantclass runtime_error; 263e519524SHoward Hinnant class range_error; 273e519524SHoward Hinnant class overflow_error; 283e519524SHoward Hinnant class underflow_error; 293e519524SHoward Hinnant 303e519524SHoward Hinnantfor each class xxx_error: 313e519524SHoward Hinnant 323e519524SHoward Hinnantclass xxx_error : public exception // at least indirectly 333e519524SHoward Hinnant{ 343e519524SHoward Hinnantpublic: 353e519524SHoward Hinnant explicit xxx_error(const string& what_arg); 36a62f2899SHoward Hinnant explicit xxx_error(const char* what_arg); 373e519524SHoward Hinnant 38a62f2899SHoward Hinnant virtual const char* what() const noexcept // returns what_arg 393e519524SHoward Hinnant}; 403e519524SHoward Hinnant 413e519524SHoward Hinnant} // std 423e519524SHoward Hinnant 433e519524SHoward Hinnant*/ 443e519524SHoward Hinnant 453e519524SHoward Hinnant#include <__config> 463e519524SHoward Hinnant#include <exception> 473e519524SHoward Hinnant#include <iosfwd> // for string forward decl 483e519524SHoward Hinnant 49*073458b1SHoward Hinnant#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 503e519524SHoward Hinnant#pragma GCC system_header 51*073458b1SHoward Hinnant#endif 523e519524SHoward Hinnant 533e519524SHoward Hinnantnamespace std // purposefully not using versioning namespace 543e519524SHoward Hinnant{ 553e519524SHoward Hinnant 563e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI logic_error 573e519524SHoward Hinnant : public exception 583e519524SHoward Hinnant{ 593e519524SHoward Hinnantprivate: 603e519524SHoward Hinnant void* __imp_; 613e519524SHoward Hinnantpublic: 623e519524SHoward Hinnant explicit logic_error(const string&); 633e519524SHoward Hinnant explicit logic_error(const char*); 643e519524SHoward Hinnant 65a62f2899SHoward Hinnant logic_error(const logic_error&) _NOEXCEPT; 66a62f2899SHoward Hinnant logic_error& operator=(const logic_error&) _NOEXCEPT; 673e519524SHoward Hinnant 68a62f2899SHoward Hinnant virtual ~logic_error() _NOEXCEPT; 693e519524SHoward Hinnant 70a62f2899SHoward Hinnant virtual const char* what() const _NOEXCEPT; 713e519524SHoward Hinnant}; 723e519524SHoward Hinnant 733e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI runtime_error 743e519524SHoward Hinnant : public exception 753e519524SHoward Hinnant{ 763e519524SHoward Hinnantprivate: 773e519524SHoward Hinnant void* __imp_; 783e519524SHoward Hinnantpublic: 793e519524SHoward Hinnant explicit runtime_error(const string&); 803e519524SHoward Hinnant explicit runtime_error(const char*); 813e519524SHoward Hinnant 82a62f2899SHoward Hinnant runtime_error(const runtime_error&) _NOEXCEPT; 83a62f2899SHoward Hinnant runtime_error& operator=(const runtime_error&) _NOEXCEPT; 843e519524SHoward Hinnant 85a62f2899SHoward Hinnant virtual ~runtime_error() _NOEXCEPT; 863e519524SHoward Hinnant 87a62f2899SHoward Hinnant virtual const char* what() const _NOEXCEPT; 883e519524SHoward Hinnant}; 893e519524SHoward Hinnant 903e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI domain_error 913e519524SHoward Hinnant : public logic_error 923e519524SHoward Hinnant{ 933e519524SHoward Hinnantpublic: 943e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit domain_error(const string& __s) : logic_error(__s) {} 953e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit domain_error(const char* __s) : logic_error(__s) {} 963e519524SHoward Hinnant 97a62f2899SHoward Hinnant virtual ~domain_error() _NOEXCEPT; 983e519524SHoward Hinnant}; 993e519524SHoward Hinnant 1003e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI invalid_argument 1013e519524SHoward Hinnant : public logic_error 1023e519524SHoward Hinnant{ 1033e519524SHoward Hinnantpublic: 1043e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit invalid_argument(const string& __s) : logic_error(__s) {} 1053e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit invalid_argument(const char* __s) : logic_error(__s) {} 1063e519524SHoward Hinnant 107a62f2899SHoward Hinnant virtual ~invalid_argument() _NOEXCEPT; 1083e519524SHoward Hinnant}; 1093e519524SHoward Hinnant 1103e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI length_error 1113e519524SHoward Hinnant : public logic_error 1123e519524SHoward Hinnant{ 1133e519524SHoward Hinnantpublic: 1143e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit length_error(const string& __s) : logic_error(__s) {} 1153e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit length_error(const char* __s) : logic_error(__s) {} 1163e519524SHoward Hinnant 117a62f2899SHoward Hinnant virtual ~length_error() _NOEXCEPT; 1183e519524SHoward Hinnant}; 1193e519524SHoward Hinnant 1203e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI out_of_range 1213e519524SHoward Hinnant : public logic_error 1223e519524SHoward Hinnant{ 1233e519524SHoward Hinnantpublic: 1243e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit out_of_range(const string& __s) : logic_error(__s) {} 1253e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit out_of_range(const char* __s) : logic_error(__s) {} 1263e519524SHoward Hinnant 127a62f2899SHoward Hinnant virtual ~out_of_range() _NOEXCEPT; 1283e519524SHoward Hinnant}; 1293e519524SHoward Hinnant 1303e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI range_error 1313e519524SHoward Hinnant : public runtime_error 1323e519524SHoward Hinnant{ 1333e519524SHoward Hinnantpublic: 1343e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit range_error(const string& __s) : runtime_error(__s) {} 1353e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit range_error(const char* __s) : runtime_error(__s) {} 1363e519524SHoward Hinnant 137a62f2899SHoward Hinnant virtual ~range_error() _NOEXCEPT; 1383e519524SHoward Hinnant}; 1393e519524SHoward Hinnant 1403e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI overflow_error 1413e519524SHoward Hinnant : public runtime_error 1423e519524SHoward Hinnant{ 1433e519524SHoward Hinnantpublic: 1443e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit overflow_error(const string& __s) : runtime_error(__s) {} 1453e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit overflow_error(const char* __s) : runtime_error(__s) {} 1463e519524SHoward Hinnant 147a62f2899SHoward Hinnant virtual ~overflow_error() _NOEXCEPT; 1483e519524SHoward Hinnant}; 1493e519524SHoward Hinnant 1503e519524SHoward Hinnantclass _LIBCPP_EXCEPTION_ABI underflow_error 1513e519524SHoward Hinnant : public runtime_error 1523e519524SHoward Hinnant{ 1533e519524SHoward Hinnantpublic: 1543e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit underflow_error(const string& __s) : runtime_error(__s) {} 1553e519524SHoward Hinnant _LIBCPP_INLINE_VISIBILITY explicit underflow_error(const char* __s) : runtime_error(__s) {} 1563e519524SHoward Hinnant 157a62f2899SHoward Hinnant virtual ~underflow_error() _NOEXCEPT; 1583e519524SHoward Hinnant}; 1593e519524SHoward Hinnant 1603e519524SHoward Hinnant} // std 1613e519524SHoward Hinnant 1623e519524SHoward Hinnant#endif // _LIBCPP_STDEXCEPT 163