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_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