LCOV - code coverage report
Current view: top level - boost/url/grammar - literal_rule.hpp (source / functions) Hit Total Coverage
Test: coverage_filtered.info Lines: 8 8 100.0 %
Date: 2024-03-13 19:32:03 Functions: 2 2 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/url
       8             : //
       9             : 
      10             : #ifndef BOOST_URL_GRAMMAR_LITERAL_RULE_HPP
      11             : #define BOOST_URL_GRAMMAR_LITERAL_RULE_HPP
      12             : 
      13             : #include <boost/url/detail/config.hpp>
      14             : #include <boost/url/error_types.hpp>
      15             : #include <boost/core/detail/string_view.hpp>
      16             : #include <cstdlib>
      17             : 
      18             : namespace boost {
      19             : namespace urls {
      20             : namespace grammar {
      21             : 
      22             : /** Match a string literal exactly
      23             : 
      24             :     If there is no more input, or if the
      25             :     end of the input is reached, and a prefix
      26             :     of the literal matches exactly, the error
      27             :     returned is @ref error::need_more.
      28             : 
      29             :     @par Value Type
      30             :     @code
      31             :     using value_type = core::string_view;
      32             :     @endcode
      33             : 
      34             :     @par Example
      35             :     Rules are used with the function @ref parse.
      36             :     @code
      37             :     system::result< core::string_view > rv = parse( "HTTP", literal_rule( "HTTP" ) );
      38             :     @endcode
      39             : 
      40             :     @see
      41             :         @ref delim_rule,
      42             :         @ref parse.
      43             : */
      44             : #ifdef BOOST_URL_DOCS
      45             : constexpr
      46             : __implementation_defined__
      47             : literal_rule( char const* s );
      48             : #else
      49             : class literal_rule
      50             : {
      51             :     char const* s_ = nullptr;
      52             :     std::size_t n_ = 0;
      53             : 
      54             :     constexpr
      55             :     static
      56             :     std::size_t
      57          48 :     len(char const* s) noexcept
      58             :     {
      59          48 :         return *s
      60          48 :             ? 1 + len(s + 1)
      61          48 :             : 0;
      62             :     }
      63             : 
      64             : public:
      65             :     using value_type = core::string_view;
      66             : 
      67             :     constexpr
      68             :     explicit
      69          10 :     literal_rule(
      70             :         char const* s) noexcept
      71          10 :         : s_(s)
      72          10 :         , n_(len(s))
      73             :     {
      74          10 :     }
      75             : 
      76             :     BOOST_URL_DECL
      77             :     system::result<value_type>
      78             :     parse(
      79             :         char const*& it,
      80             :         char const* end) const noexcept;
      81             : };
      82             : #endif
      83             : 
      84             : } // grammar
      85             : } // urls
      86             : } // boost
      87             : 
      88             : #endif

Generated by: LCOV version 1.15