LCOV - code coverage report
Current view: top level - v1 - stdexcept (source / functions) Coverage Total Hit
Test: vrml_claude.info Lines: 0.0 % 4 0
Test Date: 2024-03-08 16:33:03 Functions: 0.0 % 3 0

            Line data    Source code
       1              : // -*- C++ -*-
       2              : //===----------------------------------------------------------------------===//
       3              : //
       4              : // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
       5              : // See https://llvm.org/LICENSE.txt for license information.
       6              : // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
       7              : //
       8              : //===----------------------------------------------------------------------===//
       9              : 
      10              : #ifndef _LIBCPP_STDEXCEPT
      11              : #define _LIBCPP_STDEXCEPT
      12              : 
      13              : /*
      14              :     stdexcept synopsis
      15              : 
      16              : namespace std
      17              : {
      18              : 
      19              : class logic_error;
      20              :     class domain_error;
      21              :     class invalid_argument;
      22              :     class length_error;
      23              :     class out_of_range;
      24              : class runtime_error;
      25              :     class range_error;
      26              :     class overflow_error;
      27              :     class underflow_error;
      28              : 
      29              : for each class xxx_error:
      30              : 
      31              : class xxx_error : public exception // at least indirectly
      32              : {
      33              : public:
      34              :     explicit xxx_error(const string& what_arg);
      35              :     explicit xxx_error(const char*   what_arg);
      36              : 
      37              :     virtual const char* what() const noexcept // returns what_arg
      38              : };
      39              : 
      40              : }  // std
      41              : 
      42              : */
      43              : 
      44              : #include <__assert> // all public C++ headers provide the assertion handler
      45              : #include <__config>
      46              : #include <cstdlib>
      47              : #include <exception>
      48              : #include <iosfwd>  // for string forward decl
      49              : 
      50              : #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
      51              : #  pragma GCC system_header
      52              : #endif
      53              : 
      54              : _LIBCPP_BEGIN_NAMESPACE_STD
      55              : 
      56              : #ifndef _LIBCPP_ABI_VCRUNTIME
      57              : class _LIBCPP_HIDDEN __libcpp_refstring
      58              : {
      59              :     const char* __imp_;
      60              : 
      61              :     bool __uses_refcount() const;
      62              : public:
      63              :     explicit __libcpp_refstring(const char* __msg);
      64              :     __libcpp_refstring(const __libcpp_refstring& __s) _NOEXCEPT;
      65              :     __libcpp_refstring& operator=(const __libcpp_refstring& __s) _NOEXCEPT;
      66              :     ~__libcpp_refstring();
      67              : 
      68              :     const char* c_str() const _NOEXCEPT {return __imp_;}
      69              : };
      70              : #endif // !_LIBCPP_ABI_VCRUNTIME
      71              : 
      72              : _LIBCPP_END_NAMESPACE_STD
      73              : 
      74              : namespace std  // purposefully not using versioning namespace
      75              : {
      76              : 
      77              : class _LIBCPP_EXCEPTION_ABI logic_error
      78              :     : public exception
      79              : {
      80              : #ifndef _LIBCPP_ABI_VCRUNTIME
      81              : private:
      82              :     _VSTD::__libcpp_refstring __imp_;
      83              : public:
      84              :     explicit logic_error(const string&);
      85              :     explicit logic_error(const char*);
      86              : 
      87              :     logic_error(const logic_error&) _NOEXCEPT;
      88              :     logic_error& operator=(const logic_error&) _NOEXCEPT;
      89              : 
      90              :     ~logic_error() _NOEXCEPT override;
      91              : 
      92              :     const char* what() const _NOEXCEPT override;
      93              : #else
      94              : public:
      95              :     explicit logic_error(const _VSTD::string&); // Symbol uses versioned std::string
      96              :     _LIBCPP_INLINE_VISIBILITY explicit logic_error(const char* __s) : exception(__s) {}
      97              : #endif
      98              : };
      99              : 
     100              : class _LIBCPP_EXCEPTION_ABI runtime_error
     101              :     : public exception
     102              : {
     103              : #ifndef _LIBCPP_ABI_VCRUNTIME
     104              : private:
     105              :     _VSTD::__libcpp_refstring __imp_;
     106              : public:
     107              :     explicit runtime_error(const string&);
     108              :     explicit runtime_error(const char*);
     109              : 
     110              :     runtime_error(const runtime_error&) _NOEXCEPT;
     111              :     runtime_error& operator=(const runtime_error&) _NOEXCEPT;
     112              : 
     113              :     ~runtime_error() _NOEXCEPT override;
     114              : 
     115              :     const char* what() const _NOEXCEPT override;
     116              : #else
     117              : public:
     118              :    explicit runtime_error(const _VSTD::string&); // Symbol uses versioned std::string
     119              :    _LIBCPP_INLINE_VISIBILITY explicit runtime_error(const char* __s) : exception(__s) {}
     120              : #endif // _LIBCPP_ABI_VCRUNTIME
     121              : };
     122              : 
     123              : class _LIBCPP_EXCEPTION_ABI domain_error
     124              :     : public logic_error
     125              : {
     126              : public:
     127              :     _LIBCPP_INLINE_VISIBILITY explicit domain_error(const string& __s) : logic_error(__s) {}
     128              :     _LIBCPP_INLINE_VISIBILITY explicit domain_error(const char* __s)   : logic_error(__s) {}
     129              : 
     130              : #ifndef _LIBCPP_ABI_VCRUNTIME
     131              :     domain_error(const domain_error&) _NOEXCEPT = default;
     132              :     ~domain_error() _NOEXCEPT override;
     133              : #endif
     134              : };
     135              : 
     136              : class _LIBCPP_EXCEPTION_ABI invalid_argument
     137              :     : public logic_error
     138              : {
     139              : public:
     140              :     _LIBCPP_INLINE_VISIBILITY explicit invalid_argument(const string& __s) : logic_error(__s) {}
     141              :     _LIBCPP_INLINE_VISIBILITY explicit invalid_argument(const char* __s)   : logic_error(__s) {}
     142              : 
     143              : #ifndef _LIBCPP_ABI_VCRUNTIME
     144              :     invalid_argument(const invalid_argument&) _NOEXCEPT = default;
     145              :     ~invalid_argument() _NOEXCEPT override;
     146              : #endif
     147              : };
     148              : 
     149              : class _LIBCPP_EXCEPTION_ABI length_error
     150              :     : public logic_error
     151              : {
     152              : public:
     153              :     _LIBCPP_INLINE_VISIBILITY explicit length_error(const string& __s) : logic_error(__s) {}
     154            0 :     _LIBCPP_INLINE_VISIBILITY explicit length_error(const char* __s)   : logic_error(__s) {}
     155              : #ifndef _LIBCPP_ABI_VCRUNTIME
     156              :     length_error(const length_error&) _NOEXCEPT = default;
     157              :     ~length_error() _NOEXCEPT override;
     158              : #endif
     159              : };
     160              : 
     161              : class _LIBCPP_EXCEPTION_ABI out_of_range
     162              :     : public logic_error
     163              : {
     164              : public:
     165              :     _LIBCPP_INLINE_VISIBILITY explicit out_of_range(const string& __s) : logic_error(__s) {}
     166              :     _LIBCPP_INLINE_VISIBILITY explicit out_of_range(const char* __s)   : logic_error(__s) {}
     167              : 
     168              : #ifndef _LIBCPP_ABI_VCRUNTIME
     169              :     out_of_range(const out_of_range&) _NOEXCEPT = default;
     170              :     ~out_of_range() _NOEXCEPT override;
     171              : #endif
     172              : };
     173              : 
     174              : class _LIBCPP_EXCEPTION_ABI range_error
     175              :     : public runtime_error
     176              : {
     177              : public:
     178              :     _LIBCPP_INLINE_VISIBILITY explicit range_error(const string& __s) : runtime_error(__s) {}
     179              :     _LIBCPP_INLINE_VISIBILITY explicit range_error(const char* __s)   : runtime_error(__s) {}
     180              : 
     181              : #ifndef _LIBCPP_ABI_VCRUNTIME
     182              :     range_error(const range_error&) _NOEXCEPT = default;
     183              :     ~range_error() _NOEXCEPT override;
     184              : #endif
     185              : };
     186              : 
     187              : class _LIBCPP_EXCEPTION_ABI overflow_error
     188              :     : public runtime_error
     189              : {
     190              : public:
     191              :     _LIBCPP_INLINE_VISIBILITY explicit overflow_error(const string& __s) : runtime_error(__s) {}
     192              :     _LIBCPP_INLINE_VISIBILITY explicit overflow_error(const char* __s)   : runtime_error(__s) {}
     193              : 
     194              : #ifndef _LIBCPP_ABI_VCRUNTIME
     195              :     overflow_error(const overflow_error&) _NOEXCEPT = default;
     196              :     ~overflow_error() _NOEXCEPT override;
     197              : #endif
     198              : };
     199              : 
     200              : class _LIBCPP_EXCEPTION_ABI underflow_error
     201              :     : public runtime_error
     202              : {
     203              : public:
     204              :     _LIBCPP_INLINE_VISIBILITY explicit underflow_error(const string& __s) : runtime_error(__s) {}
     205              :     _LIBCPP_INLINE_VISIBILITY explicit underflow_error(const char* __s)   : runtime_error(__s) {}
     206              : 
     207              : #ifndef _LIBCPP_ABI_VCRUNTIME
     208              :     underflow_error(const underflow_error&) _NOEXCEPT = default;
     209              :     ~underflow_error() _NOEXCEPT override;
     210              : #endif
     211              : };
     212              : 
     213              : } // namespace std
     214              : 
     215              : _LIBCPP_BEGIN_NAMESPACE_STD
     216              : 
     217              : // in the dylib
     218              : _LIBCPP_NORETURN _LIBCPP_FUNC_VIS void __throw_runtime_error(const char*);
     219              : 
     220              : _LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
     221              : void __throw_logic_error(const char*__msg)
     222              : {
     223              : #ifndef _LIBCPP_NO_EXCEPTIONS
     224              :     throw logic_error(__msg);
     225              : #else
     226              :     ((void)__msg);
     227              :     _VSTD::abort();
     228              : #endif
     229              : }
     230              : 
     231              : _LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
     232              : void __throw_domain_error(const char*__msg)
     233              : {
     234              : #ifndef _LIBCPP_NO_EXCEPTIONS
     235              :     throw domain_error(__msg);
     236              : #else
     237              :     ((void)__msg);
     238              :     _VSTD::abort();
     239              : #endif
     240              : }
     241              : 
     242              : _LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
     243              : void __throw_invalid_argument(const char*__msg)
     244              : {
     245              : #ifndef _LIBCPP_NO_EXCEPTIONS
     246              :     throw invalid_argument(__msg);
     247              : #else
     248              :     ((void)__msg);
     249              :     _VSTD::abort();
     250              : #endif
     251              : }
     252              : 
     253              : _LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
     254            0 : void __throw_length_error(const char*__msg)
     255              : {
     256              : #ifndef _LIBCPP_NO_EXCEPTIONS
     257            0 :     throw length_error(__msg);
     258              : #else
     259              :     ((void)__msg);
     260              :     _VSTD::abort();
     261              : #endif
     262            0 : }
     263              : 
     264              : _LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
     265              : void __throw_out_of_range(const char*__msg)
     266              : {
     267              : #ifndef _LIBCPP_NO_EXCEPTIONS
     268              :     throw out_of_range(__msg);
     269              : #else
     270              :     ((void)__msg);
     271              :     _VSTD::abort();
     272              : #endif
     273              : }
     274              : 
     275              : _LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
     276              : void __throw_range_error(const char*__msg)
     277              : {
     278              : #ifndef _LIBCPP_NO_EXCEPTIONS
     279              :     throw range_error(__msg);
     280              : #else
     281              :     ((void)__msg);
     282              :     _VSTD::abort();
     283              : #endif
     284              : }
     285              : 
     286              : _LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
     287              : void __throw_overflow_error(const char*__msg)
     288              : {
     289              : #ifndef _LIBCPP_NO_EXCEPTIONS
     290              :     throw overflow_error(__msg);
     291              : #else
     292              :     ((void)__msg);
     293              :     _VSTD::abort();
     294              : #endif
     295              : }
     296              : 
     297              : _LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY
     298              : void __throw_underflow_error(const char*__msg)
     299              : {
     300              : #ifndef _LIBCPP_NO_EXCEPTIONS
     301              :     throw underflow_error(__msg);
     302              : #else
     303              :     ((void)__msg);
     304              :     _VSTD::abort();
     305              : #endif
     306              : }
     307              : 
     308              : _LIBCPP_END_NAMESPACE_STD
     309              : 
     310              : #endif // _LIBCPP_STDEXCEPT
        

Generated by: LCOV version 2.0-1