// // Copyright (c) 2021 Vinnie Falco (vinnie dot falco at gmail dot 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_GRAMMAR_DIGIT_CHARS_HPP #define BOOST_URL_GRAMMAR_DIGIT_CHARS_HPP #include #include namespace boost { namespace urls { namespace grammar { /** The set of decimal digits @par Example Character sets are used with rules and the functions @ref find_if and @ref find_if_not. @code result< string_view > rv = parse( "2022", token_rule( digit_chars ) ); @endcode @par BNF @code DIGIT = %x30-39 ; 0-9 @endcode @par Specification @li B.1. Core Rules (rfc5234) @see @ref find_if, @ref find_if_not, @ref parse, @ref token_rule. */ #ifdef BOOST_URL_DOCS constexpr __implementation_defined__ digit_chars; #else struct digit_chars_t { constexpr bool operator()(char c) const noexcept { return c >= '0' && c <= '9'; } #ifdef BOOST_URL_USE_SSE2 char const* find_if( char const* first, char const* last) const noexcept { return detail::find_if_pred( *this, first, last); } char const* find_if_not( char const* first, char const* last) const noexcept { return detail::find_if_not_pred( *this, first, last); } #endif }; constexpr digit_chars_t digit_chars{}; #endif } // grammar } // urls } // boost #endif