// -*- C++ -*- //===--------------------------- stdexcept --------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef _LIBCPP_STDEXCEPT #define _LIBCPP_STDEXCEPT /* stdexcept synopsis namespace std { class logic_error; class domain_error; class invalid_argument; class length_error; class out_of_range; class runtime_error; class range_error; class overflow_error; class underflow_error; for each class xxx_error: class xxx_error : public exception // at least indirectly { public: explicit xxx_error(const string& what_arg); explicit xxx_error(const char* what_arg); // extension virtual const char* what() const // returns what_arg }; } // std */ #include <__config> #include #include // for string forward decl #pragma GCC system_header namespace std // purposefully not using versioning namespace { class _LIBCPP_EXCEPTION_ABI logic_error : public exception { private: void* __imp_; public: explicit logic_error(const string&); explicit logic_error(const char*); logic_error(const logic_error&) throw(); logic_error& operator=(const logic_error&) throw(); virtual ~logic_error() throw(); virtual const char* what() const throw(); }; class _LIBCPP_EXCEPTION_ABI runtime_error : public exception { private: void* __imp_; public: explicit runtime_error(const string&); explicit runtime_error(const char*); runtime_error(const runtime_error&) throw(); runtime_error& operator=(const runtime_error&) throw(); virtual ~runtime_error() throw(); virtual const char* what() const throw(); }; class _LIBCPP_EXCEPTION_ABI domain_error : public logic_error { public: _LIBCPP_INLINE_VISIBILITY explicit domain_error(const string& __s) : logic_error(__s) {} _LIBCPP_INLINE_VISIBILITY explicit domain_error(const char* __s) : logic_error(__s) {} virtual ~domain_error() throw(); }; class _LIBCPP_EXCEPTION_ABI invalid_argument : public logic_error { public: _LIBCPP_INLINE_VISIBILITY explicit invalid_argument(const string& __s) : logic_error(__s) {} _LIBCPP_INLINE_VISIBILITY explicit invalid_argument(const char* __s) : logic_error(__s) {} virtual ~invalid_argument() throw(); }; class _LIBCPP_EXCEPTION_ABI length_error : public logic_error { public: _LIBCPP_INLINE_VISIBILITY explicit length_error(const string& __s) : logic_error(__s) {} _LIBCPP_INLINE_VISIBILITY explicit length_error(const char* __s) : logic_error(__s) {} virtual ~length_error() throw(); }; class _LIBCPP_EXCEPTION_ABI out_of_range : public logic_error { public: _LIBCPP_INLINE_VISIBILITY explicit out_of_range(const string& __s) : logic_error(__s) {} _LIBCPP_INLINE_VISIBILITY explicit out_of_range(const char* __s) : logic_error(__s) {} virtual ~out_of_range() throw(); }; class _LIBCPP_EXCEPTION_ABI range_error : public runtime_error { public: _LIBCPP_INLINE_VISIBILITY explicit range_error(const string& __s) : runtime_error(__s) {} _LIBCPP_INLINE_VISIBILITY explicit range_error(const char* __s) : runtime_error(__s) {} virtual ~range_error() throw(); }; class _LIBCPP_EXCEPTION_ABI overflow_error : public runtime_error { public: _LIBCPP_INLINE_VISIBILITY explicit overflow_error(const string& __s) : runtime_error(__s) {} _LIBCPP_INLINE_VISIBILITY explicit overflow_error(const char* __s) : runtime_error(__s) {} virtual ~overflow_error() throw(); }; class _LIBCPP_EXCEPTION_ABI underflow_error : public runtime_error { public: _LIBCPP_INLINE_VISIBILITY explicit underflow_error(const string& __s) : runtime_error(__s) {} _LIBCPP_INLINE_VISIBILITY explicit underflow_error(const char* __s) : runtime_error(__s) {} virtual ~underflow_error() throw(); }; } // std #endif // _LIBCPP_STDEXCEPT