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