GCC Code Coverage Report


Directory: libs/url/
File: boost/url/grammar/literal_rule.hpp
Date: 2024-08-19 20:08:56
Exec Total Coverage
Lines: 8 8 100.0%
Functions: 2 2 100.0%
Branches: 2 2 100.0%

Line Branch Exec Source
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
2/2
✓ Branch 0 taken 38 times.
✓ Branch 1 taken 10 times.
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
89