GCC Code Coverage Report


Directory: libs/url/
File: include/boost/url/grammar/detail/range_rule.hpp
Date: 2025-11-10 19:06:22
Exec Total Coverage
Lines: 11 11 100.0%
Functions: 11 11 100.0%
Branches: 0 0 -%

Line Branch Exec Source
1 //
2 // Copyright (c) 2025 Alan de Freitas (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_DETAIL_RANGE_RULE_HPP
11 #define BOOST_URL_GRAMMAR_DETAIL_RANGE_RULE_HPP
12
13 #include <boost/url/detail/config.hpp>
14 #include <type_traits>
15 #include <utility>
16
17 namespace boost {
18 namespace urls {
19 namespace grammar {
20 namespace detail {
21
22 template<class RangeRule, bool = std::is_empty<RangeRule>::value>
23 class range_base_storage;
24
25 template<class RangeRule>
26 class range_base_storage<RangeRule, false>
27 {
28 RangeRule rule_;
29
30 protected:
31 1 range_base_storage() = default;
32
33 explicit
34 229 range_base_storage(RangeRule const& rule)
35 229 : rule_(rule)
36 {
37 229 }
38
39 explicit
40 681 range_base_storage(RangeRule&& rule)
41 681 : rule_(std::move(rule))
42 {
43 681 }
44
45 RangeRule&
46 529 rule() noexcept
47 {
48 529 return rule_;
49 }
50
51 RangeRule const&
52 708 rule() const noexcept
53 {
54 708 return rule_;
55 }
56 };
57
58 template<class RangeRule>
59 class range_base_storage<RangeRule, true>
60 : private RangeRule
61 {
62 protected:
63 range_base_storage() = default;
64
65 explicit
66 range_base_storage(RangeRule const& rule)
67 : RangeRule(rule)
68 {
69 }
70
71 explicit
72 range_base_storage(RangeRule&& rule)
73 : RangeRule(std::move(rule))
74 {
75 }
76
77 RangeRule&
78 rule() noexcept
79 {
80 return *this;
81 }
82
83 RangeRule const&
84 rule() const noexcept
85 {
86 return *this;
87 }
88 };
89
90 } // detail
91 } // grammar
92 } // urls
93 } // boost
94
95 #endif
96