GCC Code Coverage Report


Directory: libs/url/
File: boost/url/grammar/impl/parse.hpp
Date: 2024-03-08 17:32:04
Exec Total Coverage
Lines: 10 10 100.0%
Functions: 60 64 93.8%
Branches: 7 8 87.5%

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_IMPL_PARSE_HPP
11 #define BOOST_URL_GRAMMAR_IMPL_PARSE_HPP
12
13 #include <boost/url/grammar/error.hpp>
14 #include <boost/url/grammar/type_traits.hpp>
15
16 namespace boost {
17 namespace urls {
18 namespace grammar {
19
20 template<class R>
21 BOOST_URL_NO_INLINE
22 auto
23 72079 parse(
24 char const*& it,
25 char const* end,
26 R const& r) ->
27 system::result<typename R::value_type>
28 {
29 // If this goes off, it means the rule
30 // passed in did not meet the requirements.
31 // Please check the documentation.
32 static_assert(
33 is_rule<R>::value,
34 "Rule requirements not met");
35
36 72079 return r.parse(it, end);
37 }
38
39 template<class R>
40 BOOST_URL_NO_INLINE
41 auto
42 5767 parse(
43 core::string_view s,
44 R const& r) ->
45 system::result<typename R::value_type>
46 {
47 // If this goes off, it means the rule
48 // passed in did not meet the requirements.
49 // Please check the documentation.
50 static_assert(
51 is_rule<R>::value,
52 "Rule requirements not met");
53
54 5767 auto it = s.data();
55 5767 auto const end = it + s.size();
56
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6398 auto rv = r.parse(it, end);
57
4/4
✓ Branch 1 taken 456 times.
✓ Branch 2 taken 655 times.
✓ Branch 3 taken 18 times.
✓ Branch 4 taken 1093 times.
10755 if( rv &&
58
2/2
✓ Branch 0 taken 18 times.
✓ Branch 1 taken 438 times.
4988 it != end)
59 233 return error::leftover;
60 5534 return rv;
61 }
62
63 } // grammar
64 } // urls
65 } // boost
66
67 #endif
68