LCOV - code coverage report
Current view: top level - libs/url/src - error.cpp (source / functions) Hit Total Coverage
Test: coverage_filtered.info Lines: 22 22 100.0 %
Date: 2024-02-29 20:02:55 Functions: 4 4 100.0 %

          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_IPP
      11             : #define BOOST_URL_IMPL_ERROR_IPP
      12             : 
      13             : #include <boost/url/detail/config.hpp>
      14             : #include <boost/url/error.hpp>
      15             : #include <boost/url/grammar/error.hpp>
      16             : 
      17             : namespace boost {
      18             : namespace urls {
      19             : 
      20             : namespace detail {
      21             : 
      22             : const char*
      23          97 : error_cat_type::
      24             : name() const noexcept
      25             : {
      26          97 :     return "boost.url";
      27             : }
      28             : 
      29             : std::string
      30          98 : error_cat_type::
      31             : message(int code) const
      32             : {
      33          98 :     return message(code, nullptr, 0);
      34             : }
      35             : 
      36             : char const*
      37          98 : error_cat_type::
      38             : message(
      39             :     int code,
      40             :     char*,
      41             :     std::size_t) const noexcept
      42             : {
      43          98 :     switch(static_cast<error>(code))
      44             :     {
      45           1 : case error::success: return "success";
      46           1 : case error::illegal_null: return "illegal null";
      47           1 : case error::illegal_reserved_char: return "illegal reserved char";
      48           1 : case error::non_canonical: return "non canonical";
      49             : 
      50          19 : case error::bad_pct_hexdig: return "bad hexdig in pct-encoding";
      51          63 : case error::incomplete_encoding: return "incomplete pct-encoding";
      52           9 : case error::missing_pct_hexdig: return "missing hexdig in pct-encoding";
      53           1 : case error::no_space: return "no space";
      54           1 : case error::not_a_base: return "not a base";
      55             :     }
      56           1 :     return "";
      57             : }
      58             : 
      59             : system::error_condition
      60           9 : error_cat_type::
      61             : default_error_condition(
      62             :     int ev) const noexcept
      63             : {
      64           9 :     switch(static_cast<error>(ev))
      65             :     {
      66           6 :     default:
      67           6 :         return {ev, *this};
      68             : 
      69           3 : case error::bad_pct_hexdig:
      70             : case error::incomplete_encoding:
      71             : case error::missing_pct_hexdig:
      72           3 :         return grammar::condition::fatal;
      73             :     }
      74             : }
      75             : 
      76             : //-----------------------------------------------
      77             : 
      78             : // msvc 14.0 has a bug that warns about inability
      79             : // to use constexpr construction here, even though
      80             : // there's no constexpr construction
      81             : #if defined(_MSC_VER) && _MSC_VER <= 1900
      82             : # pragma warning( push )
      83             : # pragma warning( disable : 4592 )
      84             : #endif
      85             : 
      86             : error_cat_type error_cat;
      87             : 
      88             : #if defined(_MSC_VER) && _MSC_VER <= 1900
      89             : # pragma warning( pop )
      90             : #endif
      91             : 
      92             : } // detail
      93             : 
      94             : } // urls
      95             : } // boost
      96             : 
      97             : #endif

Generated by: LCOV version 1.15