GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 77.9% 95 / 0 / 122
Functions: 82.6% 19 / 0 / 23
Branches: 72.9% 35 / 0 / 48

libs/url/include/boost/url/grammar/impl/variant_rule.hpp
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_VARIANT_RULE_HPP
11 #define BOOST_URL_GRAMMAR_IMPL_VARIANT_RULE_HPP
12
13 #include <boost/url/grammar/error.hpp>
14 #include <boost/url/grammar/parse.hpp>
15 #include <boost/core/detail/static_assert.hpp>
16 #include <cstdint>
17 #include <type_traits>
18
19 namespace boost {
20 namespace urls {
21 namespace grammar {
22
23 namespace detail {
24
25 // must come first
26 template<
27 class R0,
28 class... Rn,
29 std::size_t I>
30 auto
31 733 parse_variant(
32 char const*&,
33 char const*,
34 detail::tuple<
35 R0, Rn...> const&,
36 std::integral_constant<
37 std::size_t, I> const&,
38 std::false_type const&) ->
39 system::result<variant2::variant<
40 typename R0::value_type,
41 typename Rn::value_type...>>
42 {
43 // no match
44 733 BOOST_URL_RETURN_EC(
45 error::mismatch);
46 }
47
48 template<
49 class R0,
50 class... Rn,
51 std::size_t I>
52 auto
53 5710 parse_variant(
54 char const*& it,
55 char const* const end,
56 detail::tuple<
57 R0, Rn...> const& rn,
58 std::integral_constant<
59 std::size_t, I> const&,
60 std::true_type const&) ->
61 system::result<variant2::variant<
62 typename R0::value_type,
63 typename Rn::value_type...>>
64 {
65 5710 auto const it0 = it;
66
1/1
✓ Branch 2 taken 432 times.
5710 auto rv = parse(
67 it, end, get<I>(rn));
68
17/24
boost::system::result<boost::variant2::variant<boost::urls::detail::identifier_rule_t::value_type, boost::urls::grammar::unsigned_rule<unsigned long>::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long>, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 1 taken 371 times.
✓ Branch 2 taken 349 times.
boost::system::result<boost::variant2::variant<boost::urls::detail::identifier_rule_t::value_type, boost::urls::grammar::unsigned_rule<unsigned long>::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long>, 1ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > const&, std::integral_constant<unsigned long, 1ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 1 taken 62 times.
✓ Branch 2 taken 287 times.
boost::system::result<boost::variant2::variant<boost::urls::grammar::implementation_defined::ch_delim_rule::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::grammar::implementation_defined::ch_delim_rule, boost::urls::grammar::implementation_defined::ch_delim_rule, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::grammar::implementation_defined::ch_delim_rule, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 1 taken 1 time.
✓ Branch 2 taken 3 times.
boost::system::result<boost::variant2::variant<boost::urls::grammar::implementation_defined::ch_delim_rule::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::grammar::implementation_defined::ch_delim_rule, boost::urls::grammar::implementation_defined::ch_delim_rule, 1ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::grammar::implementation_defined::ch_delim_rule, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 1ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 1 taken 1 time.
✓ Branch 2 taken 2 times.
boost::system::result<boost::variant2::variant<boost::urls::grammar::unsigned_rule<unsigned long>::value_type, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> >::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::grammar::unsigned_rule<unsigned long>, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> >, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::grammar::unsigned_rule<unsigned long>, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> > > const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 1 taken 34 times.
✓ Branch 2 taken 432 times.
boost::system::result<boost::variant2::variant<boost::urls::grammar::unsigned_rule<unsigned long>::value_type, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> >::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::grammar::unsigned_rule<unsigned long>, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> >, 1ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::grammar::unsigned_rule<unsigned long>, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> > > const&, std::integral_constant<unsigned long, 1ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 1 taken 28 times.
✓ Branch 2 taken 404 times.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::origin_form_rule_t::value_type, boost::urls::implementation_defined::absolute_uri_rule_t::value_type, boost::urls::implementation_defined::authority_rule_t::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::origin_form_rule_t::value_type, boost::urls::implementation_defined::absolute_uri_rule_t::value_type, boost::urls::implementation_defined::authority_rule_t::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule, 1ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 1ul> const&, std::integral_constant<bool, true> const&):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::origin_form_rule_t::value_type, boost::urls::implementation_defined::absolute_uri_rule_t::value_type, boost::urls::implementation_defined::authority_rule_t::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule, 2ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 2ul> const&, std::integral_constant<bool, true> const&):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::origin_form_rule_t::value_type, boost::urls::implementation_defined::absolute_uri_rule_t::value_type, boost::urls::implementation_defined::authority_rule_t::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule, 3ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 3ul> const&, std::integral_constant<bool, true> const&):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::uri_rule_t::value_type, boost::urls::implementation_defined::relative_ref_rule_t::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::uri_rule_t, boost::urls::implementation_defined::relative_ref_rule_t, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::uri_rule_t, boost::urls::implementation_defined::relative_ref_rule_t> const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 1 taken 1336 times.
✓ Branch 2 taken 1199 times.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::uri_rule_t::value_type, boost::urls::implementation_defined::relative_ref_rule_t::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::uri_rule_t, boost::urls::implementation_defined::relative_ref_rule_t, 1ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::uri_rule_t, boost::urls::implementation_defined::relative_ref_rule_t> const&, std::integral_constant<unsigned long, 1ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 1 taken 1159 times.
✓ Branch 2 taken 40 times.
5710 if( rv )
69 return variant2::variant<
70 typename R0::value_type,
71 typename Rn::value_type...>{
72
9/12
boost::system::result<boost::variant2::variant<boost::urls::detail::identifier_rule_t::value_type, boost::urls::grammar::unsigned_rule<unsigned long>::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long>, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 2 taken 371 times.
boost::system::result<boost::variant2::variant<boost::urls::detail::identifier_rule_t::value_type, boost::urls::grammar::unsigned_rule<unsigned long>::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long>, 1ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > const&, std::integral_constant<unsigned long, 1ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 2 taken 62 times.
boost::system::result<boost::variant2::variant<boost::urls::grammar::implementation_defined::ch_delim_rule::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::grammar::implementation_defined::ch_delim_rule, boost::urls::grammar::implementation_defined::ch_delim_rule, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::grammar::implementation_defined::ch_delim_rule, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 2 taken 1 time.
boost::system::result<boost::variant2::variant<boost::urls::grammar::implementation_defined::ch_delim_rule::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::grammar::implementation_defined::ch_delim_rule, boost::urls::grammar::implementation_defined::ch_delim_rule, 1ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::grammar::implementation_defined::ch_delim_rule, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 1ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 2 taken 1 time.
boost::system::result<boost::variant2::variant<boost::urls::grammar::unsigned_rule<unsigned long>::value_type, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> >::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::grammar::unsigned_rule<unsigned long>, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> >, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::grammar::unsigned_rule<unsigned long>, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> > > const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 2 taken 34 times.
boost::system::result<boost::variant2::variant<boost::urls::grammar::unsigned_rule<unsigned long>::value_type, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> >::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::grammar::unsigned_rule<unsigned long>, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> >, 1ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::grammar::unsigned_rule<unsigned long>, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> > > const&, std::integral_constant<unsigned long, 1ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 2 taken 28 times.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::origin_form_rule_t::value_type, boost::urls::implementation_defined::absolute_uri_rule_t::value_type, boost::urls::implementation_defined::authority_rule_t::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 2 taken 2 times.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::origin_form_rule_t::value_type, boost::urls::implementation_defined::absolute_uri_rule_t::value_type, boost::urls::implementation_defined::authority_rule_t::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule, 1ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 1ul> const&, std::integral_constant<bool, true> const&):
✗ Branch 2 not taken.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::origin_form_rule_t::value_type, boost::urls::implementation_defined::absolute_uri_rule_t::value_type, boost::urls::implementation_defined::authority_rule_t::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule, 2ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 2ul> const&, std::integral_constant<bool, true> const&):
✗ Branch 2 not taken.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::origin_form_rule_t::value_type, boost::urls::implementation_defined::absolute_uri_rule_t::value_type, boost::urls::implementation_defined::authority_rule_t::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule, 3ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 3ul> const&, std::integral_constant<bool, true> const&):
✗ Branch 2 not taken.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::uri_rule_t::value_type, boost::urls::implementation_defined::relative_ref_rule_t::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::uri_rule_t, boost::urls::implementation_defined::relative_ref_rule_t, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::uri_rule_t, boost::urls::implementation_defined::relative_ref_rule_t> const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 2 taken 1336 times.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::uri_rule_t::value_type, boost::urls::implementation_defined::relative_ref_rule_t::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::uri_rule_t, boost::urls::implementation_defined::relative_ref_rule_t, 1ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::uri_rule_t, boost::urls::implementation_defined::relative_ref_rule_t> const&, std::integral_constant<unsigned long, 1ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 2 taken 1159 times.
2994 variant2::in_place_index_t<I>{}, *rv};
73 2716 it = it0;
74
2/2
boost::system::result<boost::variant2::variant<boost::urls::detail::identifier_rule_t::value_type, boost::urls::grammar::unsigned_rule<unsigned long>::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long>, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 1 taken 349 times.
boost::system::result<boost::variant2::variant<boost::urls::grammar::implementation_defined::ch_delim_rule::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::grammar::implementation_defined::ch_delim_rule, boost::urls::grammar::implementation_defined::ch_delim_rule, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::grammar::implementation_defined::ch_delim_rule, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 1 taken 3 times.
1282 return parse_variant(
75 it, end, rn,
76 std::integral_constant<
77 std::size_t, I+1>{},
78 std::integral_constant<bool,
79 ((I + 1) < (1 +
80
2/5
boost::system::result<boost::variant2::variant<boost::urls::grammar::unsigned_rule<unsigned long>::value_type, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> >::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::grammar::unsigned_rule<unsigned long>, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> >, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::grammar::unsigned_rule<unsigned long>, boost::urls::grammar::implementation_defined::tuple_rule_t<boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule>, boost::urls::grammar::implementation_defined::optional_rule_t<boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> > >, boost::urls::grammar::implementation_defined::squelch_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule> > > const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 1 taken 432 times.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::origin_form_rule_t::value_type, boost::urls::implementation_defined::absolute_uri_rule_t::value_type, boost::urls::implementation_defined::authority_rule_t::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✗ Branch 1 not taken.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::origin_form_rule_t::value_type, boost::urls::implementation_defined::absolute_uri_rule_t::value_type, boost::urls::implementation_defined::authority_rule_t::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule, 1ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 1ul> const&, std::integral_constant<bool, true> const&):
✗ Branch 1 not taken.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::origin_form_rule_t::value_type, boost::urls::implementation_defined::absolute_uri_rule_t::value_type, boost::urls::implementation_defined::authority_rule_t::value_type, boost::urls::grammar::implementation_defined::ch_delim_rule::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule, 2ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule> const&, std::integral_constant<unsigned long, 2ul> const&, std::integral_constant<bool, true> const&):
✗ Branch 1 not taken.
boost::system::result<boost::variant2::variant<boost::urls::implementation_defined::uri_rule_t::value_type, boost::urls::implementation_defined::relative_ref_rule_t::value_type>, boost::system::error_code> boost::urls::grammar::detail::parse_variant<boost::urls::implementation_defined::uri_rule_t, boost::urls::implementation_defined::relative_ref_rule_t, 0ul>(char const*&, char const*, boost::urls::grammar::detail::tuple<boost::urls::implementation_defined::uri_rule_t, boost::urls::implementation_defined::relative_ref_rule_t> const&, std::integral_constant<unsigned long, 0ul> const&, std::integral_constant<bool, true> const&):
✓ Branch 1 taken 1199 times.
2716 sizeof...(Rn)))>{});
81 432 }
82
83 } // detail
84
85 template<class R0, class... Rn>
86 auto
87 3727 implementation_defined::variant_rule_t<R0, Rn...>::
88 parse(
89 char const*& it,
90 char const* end) const ->
91 system::result<value_type>
92 {
93 724 return detail::parse_variant(
94
2/2
boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::detail::identifier_rule_t, boost::urls::grammar::unsigned_rule<unsigned long> >::parse(char const*&, char const*) const:
✓ Branch 1 taken 720 times.
boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::grammar::implementation_defined::ch_delim_rule, boost::urls::grammar::implementation_defined::ch_delim_rule>::parse(char const*&, char const*) const:
✓ Branch 1 taken 4 times.
3727 it, end, rn_,
95 std::integral_constant<
96 std::size_t, 0>{},
97
2/2
boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::implementation_defined::origin_form_rule_t, boost::urls::implementation_defined::absolute_uri_rule_t, boost::urls::implementation_defined::authority_rule_t, boost::urls::grammar::implementation_defined::ch_delim_rule>::parse(char const*&, char const*) const:
✓ Branch 1 taken 2 times.
boost::urls::grammar::implementation_defined::variant_rule_t<boost::urls::implementation_defined::uri_rule_t, boost::urls::implementation_defined::relative_ref_rule_t>::parse(char const*&, char const*) const:
✓ Branch 1 taken 2535 times.
4451 std::true_type{});
98 }
99
100 //------------------------------------------------
101
102 template<BOOST_URL_CONSTRAINT(Rule) R0, BOOST_URL_CONSTRAINT(Rule)... Rn>
103 auto
104 constexpr
105 2536 variant_rule(
106 R0 const& r0,
107 Rn const&... rn) noexcept ->
108 implementation_defined::variant_rule_t<R0, Rn...>
109 {
110 BOOST_CORE_STATIC_ASSERT(
111 mp11::mp_all<
112 is_rule<R0>,
113 is_rule<Rn>...>::value);
114 2536 return { r0, rn... };
115 }
116
117 } // grammar
118 } // urls
119 } // boost
120
121 #endif
122