LCOV - code coverage report
Current view: top level - boost/url/grammar - token_rule.hpp (source / functions) Hit Total Coverage
Test: coverage_filtered.info Lines: 5 5 100.0 %
Date: 2024-02-29 20:02:55 Functions: 15 15 100.0 %

          Line data    Source code
       1             : //
       2             : // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot 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/http_proto
       8             : //
       9             : 
      10             : #ifndef BOOST_URL_GRAMMAR_TOKEN_RULE_HPP
      11             : #define BOOST_URL_GRAMMAR_TOKEN_RULE_HPP
      12             : 
      13             : #include <boost/url/detail/config.hpp>
      14             : #include <boost/url/grammar/charset.hpp>
      15             : #include <boost/url/error_types.hpp>
      16             : #include <boost/core/detail/string_view.hpp>
      17             : 
      18             : namespace boost {
      19             : namespace urls {
      20             : namespace grammar {
      21             : 
      22             : /** Match a non-empty string of characters from a set
      23             : 
      24             :     If there is no more input, the error code
      25             :     @ref error::need_more is returned.
      26             : 
      27             :     @par Value Type
      28             :     @code
      29             :     using value_type = core::string_view;
      30             :     @endcode
      31             : 
      32             :     @par Example
      33             :     Rules are used with the function @ref parse.
      34             :     @code
      35             :     system::result< core::string_view > rv = parse( "abcdef", token_rule( alpha_chars ) );
      36             :     @endcode
      37             : 
      38             :     @par BNF
      39             :     @code
      40             :     token     = 1*( ch )
      41             :     @endcode
      42             : 
      43             :     @param cs The character set to use
      44             : 
      45             :     @see
      46             :         @ref alpha_chars,
      47             :         @ref parse.
      48             : */
      49             : #ifdef BOOST_URL_DOCS
      50             : template<class CharSet>
      51             : constexpr
      52             : __implementation_defined__
      53             : token_rule(
      54             :     CharSet cs) noexcept;
      55             : #else
      56             : template<class CharSet>
      57             : struct token_rule_t
      58             : {
      59             :     using value_type = core::string_view;
      60             : 
      61             :     static_assert(
      62             :         is_charset<CharSet>::value,
      63             :         "CharSet requirements not met");
      64             : 
      65             :     auto
      66             :     parse(
      67             :         char const*& it,
      68             :         char const* end
      69             :             ) const noexcept ->
      70             :         system::result<value_type>;
      71             : 
      72             : private:
      73             :     template<class CharSet_>
      74             :     friend
      75             :     constexpr
      76             :     auto
      77             :     token_rule(
      78             :         CharSet_ const&) noexcept ->
      79             :             token_rule_t<CharSet_>;
      80             : 
      81             :     constexpr
      82         103 :     token_rule_t(
      83             :         CharSet const& cs) noexcept
      84         103 :         : cs_(cs)
      85             :     {
      86         103 :     }
      87             : 
      88             :     CharSet const cs_;
      89             : };
      90             : 
      91             : template<class CharSet>
      92             : constexpr
      93             : auto
      94         103 : token_rule(
      95             :     CharSet const& cs) noexcept ->
      96             :         token_rule_t<CharSet>
      97             : {
      98         103 :     return {cs};
      99             : }
     100             : #endif
     101             : 
     102             : } // grammar
     103             : } // urls
     104             : } // boost
     105             : 
     106             : #include <boost/url/grammar/impl/token_rule.hpp>
     107             : 
     108             : #endif

Generated by: LCOV version 1.15