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/grammar/error.hpp>
13 :
14 : namespace boost {
15 : namespace urls {
16 : namespace grammar {
17 :
18 : namespace detail {
19 :
20 : const char*
21 72 : error_cat_type::
22 : name() const noexcept
23 : {
24 72 : return "boost.url.grammar";
25 : }
26 :
27 : std::string
28 72 : error_cat_type::
29 : message(int code) const
30 : {
31 72 : return message(code, nullptr, 0);
32 : }
33 :
34 : char const*
35 72 : error_cat_type::
36 : message(
37 : int code,
38 : char*,
39 : std::size_t) const noexcept
40 : {
41 72 : switch(static_cast<error>(code))
42 : {
43 1 : default:
44 1 : case error::need_more: return "need more";
45 14 : case error::mismatch: return "mismatch";
46 13 : case error::invalid: return "invalid";
47 1 : case error::end_of_range: return "end of range";
48 42 : case error::leftover: return "leftover";
49 1 : case error::out_of_range: return "out of range";
50 : }
51 : }
52 :
53 : system::error_condition
54 6 : error_cat_type::
55 : default_error_condition(
56 : int ev) const noexcept
57 : {
58 6 : switch(static_cast<error>(ev))
59 : {
60 2 : case error::invalid:
61 : case error::out_of_range:
62 2 : return condition::fatal;
63 4 : default:
64 4 : return {ev, *this};
65 : }
66 : }
67 :
68 : //------------------------------------------------
69 :
70 : const char*
71 5 : condition_cat_type::
72 : name() const noexcept
73 : {
74 5 : return "boost.url.grammar";
75 : }
76 :
77 : std::string
78 5 : condition_cat_type::
79 : message(int code) const
80 : {
81 5 : return message(code, nullptr, 0);
82 : }
83 :
84 : char const*
85 5 : condition_cat_type::
86 : message(
87 : int code, char*, std::size_t) const noexcept
88 : {
89 : switch(static_cast<condition>(code))
90 : {
91 : default:
92 : case condition::fatal:
93 5 : return "fatal condition";
94 : }
95 : }
96 :
97 : //-----------------------------------------------
98 :
99 : // msvc 14.0 has a bug that warns about inability
100 : // to use constexpr construction here, even though
101 : // there's no constexpr construction
102 : #if defined(_MSC_VER) && _MSC_VER <= 1900
103 : # pragma warning( push )
104 : # pragma warning( disable : 4592 )
105 : #endif
106 :
107 : error_cat_type error_cat;
108 : condition_cat_type condition_cat;
109 :
110 : #if defined(_MSC_VER) && _MSC_VER <= 1900
111 : # pragma warning( pop )
112 : #endif
113 :
114 : } // detail
115 :
116 : } // grammar
117 : } // urls
118 : } // boost
119 :
|