GCC Code Coverage Report


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