119 lines
2.6 KiB
C++
119 lines
2.6 KiB
C++
//
|
|
// Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)
|
|
//
|
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
//
|
|
// Official repository: https://github.com/boostorg/url
|
|
//
|
|
|
|
#ifndef BOOST_URL_IGNORE_CASE_HPP
|
|
#define BOOST_URL_IGNORE_CASE_HPP
|
|
|
|
#include <boost/url/detail/config.hpp>
|
|
|
|
namespace boost {
|
|
namespace urls {
|
|
|
|
#ifndef BOOST_URL_DOCS
|
|
struct ignore_case_t
|
|
{
|
|
};
|
|
#endif
|
|
|
|
/** Ignore case when comparing
|
|
|
|
This value may be optionally passed to
|
|
functions accepting a parameter of type
|
|
@ref ignore_case_param to indicate that
|
|
comparisons should be case-insensitive.
|
|
*/
|
|
constexpr
|
|
#ifdef BOOST_URL_DOCS
|
|
__implementation_defined__
|
|
#else
|
|
ignore_case_t
|
|
#endif
|
|
ignore_case{};
|
|
|
|
/** An optional parameter to determine case-sensitivity
|
|
|
|
Functions may use parameters of this type
|
|
to allow the user to optionally indicate
|
|
that comparisons should be case-insensitive
|
|
when the value @ref ignore_case is passed.
|
|
*/
|
|
class ignore_case_param
|
|
{
|
|
/** True if an algorithm should ignore case
|
|
|
|
Functions accepting a parameter of type
|
|
`ignore_case_param` can check `value`
|
|
to determine if the caller has indicated
|
|
that comparisons should ignore case.
|
|
*/
|
|
bool value_ = false;
|
|
|
|
public:
|
|
/** Constructor
|
|
|
|
By default, comparisons are
|
|
case-sensitive.
|
|
|
|
@par Example
|
|
This function performs case-sensitive
|
|
comparisons when called with no
|
|
arguments:
|
|
@code
|
|
void f( ignore_case_param = {} );
|
|
@endcode
|
|
*/
|
|
constexpr
|
|
ignore_case_param() noexcept = default;
|
|
|
|
/** Constructor
|
|
|
|
Construction from @ref ignore_case
|
|
indicates that comparisons should
|
|
be case-insensitive.
|
|
|
|
@par Example
|
|
When @ref ignore_case is passed as
|
|
an argument, this function ignores
|
|
case when performing comparisons:
|
|
@code
|
|
void f( ignore_case_param = {} );
|
|
@endcode
|
|
*/
|
|
constexpr
|
|
ignore_case_param(
|
|
#ifdef BOOST_URL_DOCS
|
|
__implementation_defined__
|
|
#else
|
|
ignore_case_t
|
|
#endif
|
|
) noexcept
|
|
: value_(true)
|
|
{
|
|
}
|
|
|
|
/** True if an algorithm should ignore case
|
|
|
|
Values of type `ignore_case_param`
|
|
evaluate to true when constructed
|
|
with the constant @ref ignore_case.
|
|
Otherwise, they are default-constructed
|
|
and evaluate to `false`.
|
|
*/
|
|
operator
|
|
bool() const noexcept
|
|
{
|
|
return value_;
|
|
}
|
|
};
|
|
|
|
} // urls
|
|
} // boost
|
|
|
|
#endif
|