GCC Code Coverage Report


Directory: libs/url/
File: boost/url/ignore_case.hpp
Date: 2024-03-12 19:37:18
Exec Total Coverage
Lines: 6 6 100.0%
Functions: 3 3 100.0%
Branches: 0 0 -%

Line Branch Exec Source
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_IGNORE_CASE_HPP
11 #define BOOST_URL_IGNORE_CASE_HPP
12
13 #include <boost/url/detail/config.hpp>
14
15 namespace boost {
16 namespace urls {
17
18 #ifndef BOOST_URL_DOCS
19 struct ignore_case_t
20 {
21 };
22 #endif
23
24 /** Ignore case when comparing
25
26 This value may be optionally passed to
27 functions accepting a parameter of type
28 @ref ignore_case_param to indicate that
29 comparisons should be case-insensitive.
30 */
31 constexpr
32 #ifdef BOOST_URL_DOCS
33 __implementation_defined__
34 #else
35 ignore_case_t
36 #endif
37 ignore_case{};
38
39 /** An optional parameter to determine case-sensitivity
40
41 Functions may use parameters of this type
42 to allow the user to optionally indicate
43 that comparisons should be case-insensitive
44 when the value @ref ignore_case is passed.
45 */
46 class ignore_case_param
47 {
48 /** True if an algorithm should ignore case
49
50 Functions accepting a parameter of type
51 `ignore_case_param` can check `value`
52 to determine if the caller has indicated
53 that comparisons should ignore case.
54 */
55 bool value_ = false;
56
57 public:
58 /** Constructor
59
60 By default, comparisons are
61 case-sensitive.
62
63 @par Example
64 This function performs case-sensitive
65 comparisons when called with no
66 arguments:
67 @code
68 void f( ignore_case_param = {} );
69 @endcode
70 */
71 constexpr
72 101 ignore_case_param() noexcept = default;
73
74 /** Constructor
75
76 Construction from @ref ignore_case
77 indicates that comparisons should
78 be case-insensitive.
79
80 @par Example
81 When @ref ignore_case is passed as
82 an argument, this function ignores
83 case when performing comparisons:
84 @code
85 void f( ignore_case_param = {} );
86 @endcode
87 */
88 constexpr
89 54 ignore_case_param(
90 #ifdef BOOST_URL_DOCS
91 __implementation_defined__
92 #else
93 ignore_case_t
94 #endif
95 ) noexcept
96 54 : value_(true)
97 {
98 54 }
99
100 /** True if an algorithm should ignore case
101
102 Values of type `ignore_case_param`
103 evaluate to true when constructed
104 with the constant @ref ignore_case.
105 Otherwise, they are default-constructed
106 and evaluate to `false`.
107 */
108 224 operator
109 bool() const noexcept
110 {
111 224 return value_;
112 }
113 };
114
115 } // urls
116 } // boost
117
118 #endif
119