LCOV - code coverage report
Current view: top level - url/impl - error.hpp (source / functions) Coverage Total Hit
Test: coverage_remapped.info Lines: 100.0 % 27 27
Test Date: 2026-02-25 21:00:01 Functions: 100.0 % 6 6

           TLA  Line data    Source code
       1                 : //
       2                 : // Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)
       3                 : //
       4                 : // Distributed under the Boost Software License, Version 1.0. (See accompanying
       5                 : // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       6                 : //
       7                 : // Official repository: https://github.com/boostorg/url
       8                 : //
       9                 : 
      10                 : #ifndef BOOST_URL_IMPL_ERROR_HPP
      11                 : #define BOOST_URL_IMPL_ERROR_HPP
      12                 : 
      13                 : #include <boost/url/grammar/error.hpp>
      14                 : #include <type_traits>
      15                 : 
      16                 : namespace boost {
      17                 : 
      18                 : //-----------------------------------------------
      19                 : namespace system {
      20                 : template<>
      21                 : struct is_error_code_enum<::boost::urls::error>
      22                 : {
      23                 :     static bool const value = true;
      24                 : };
      25                 : } // system
      26                 : //-----------------------------------------------
      27                 : 
      28                 : namespace urls {
      29                 : 
      30                 : namespace detail {
      31                 : 
      32                 : struct BOOST_SYMBOL_VISIBLE
      33                 :     error_cat_type
      34                 :     : system::error_category
      35                 : {
      36                 :     BOOST_URL_CXX20_CONSTEXPR
      37 HIT          87 :     const char* name(
      38                 :         ) const noexcept override
      39                 :     {
      40              87 :         return "boost.url";
      41                 :     }
      42                 : 
      43              88 :     std::string message(
      44                 :         int code) const override
      45                 :     {
      46             176 :         return message(code, nullptr, 0);
      47                 :     }
      48                 : 
      49                 :     BOOST_URL_CXX20_CONSTEXPR
      50              88 :     char const* message(
      51                 :         int code,
      52                 :         char*,
      53                 :         std::size_t) const noexcept override
      54                 :     {
      55              88 :         switch(static_cast<error>(code))
      56                 :         {
      57               1 :         case error::success: return "success";
      58               1 :         case error::illegal_null: return "illegal null";
      59               1 :         case error::illegal_reserved_char: return "illegal reserved char";
      60               1 :         case error::non_canonical: return "non canonical";
      61              17 :         case error::bad_pct_hexdig: return "bad hexdig in pct-encoding";
      62              63 :         case error::incomplete_encoding: return "incomplete pct-encoding";
      63               1 :         case error::missing_pct_hexdig: return "missing hexdig in pct-encoding";
      64               1 :         case error::no_space: return "no space";
      65               1 :         case error::not_a_base: return "not a base";
      66                 :         }
      67               1 :         return "";
      68                 :     }
      69                 : 
      70                 :     BOOST_URL_CXX20_CONSTEXPR
      71                 :     system::error_condition
      72                 :         default_error_condition(
      73                 :             int ev) const noexcept override;
      74                 : 
      75              75 :     BOOST_SYSTEM_CONSTEXPR error_cat_type() noexcept
      76              75 :         : error_category(0xbc15399d7a4ce829)
      77                 :     {
      78              75 :     }
      79                 : };
      80                 : 
      81                 : #if defined(BOOST_URL_HAS_CXX20_CONSTEXPR)
      82                 : inline constexpr error_cat_type error_cat{};
      83                 : #else
      84                 : BOOST_URL_DECL extern error_cat_type error_cat;
      85                 : #endif
      86                 : 
      87                 : } // detail
      88                 : 
      89                 : inline
      90                 : BOOST_SYSTEM_CONSTEXPR
      91                 : system::error_code
      92              98 : make_error_code(
      93                 :     error ev) noexcept
      94                 : {
      95                 :     return system::error_code{
      96                 :         static_cast<std::underlying_type<
      97                 :             error>::type>(ev),
      98              98 :         detail::error_cat};
      99                 : }
     100                 : 
     101                 : BOOST_URL_CXX20_CONSTEXPR_OR_INLINE
     102                 : system::error_condition
     103               9 : detail::error_cat_type::
     104                 :     default_error_condition(
     105                 :         int ev) const noexcept
     106                 : {
     107               9 :     switch(static_cast<error>(ev))
     108                 :     {
     109               6 :     default:
     110               6 :         return {ev, *this};
     111               3 :     case error::bad_pct_hexdig:
     112                 :     case error::incomplete_encoding:
     113                 :     case error::missing_pct_hexdig:
     114               3 :         return grammar::condition::fatal;
     115                 :     }
     116                 : }
     117                 : 
     118                 : } // urls
     119                 : } // boost
     120                 : 
     121                 : #endif
        

Generated by: LCOV version 2.3