100.00% Lines (11/11) 100.00% Functions (5/5)
TLA Baseline Branch
Line Hits Code Line Hits Code
1   // 1   //
2   // Copyright (c) 2025 Alan de Freitas (vinnie dot falco at gmail dot com) 2   // Copyright (c) 2025 Alan de Freitas (vinnie dot falco at gmail dot com)
3   // 3   //
4   // Distributed under the Boost Software License, Version 1.0. (See accompanying 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) 5   // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6   // 6   //
7   // Official repository: https://github.com/boostorg/url 7   // Official repository: https://github.com/boostorg/url
8   // 8   //
9   9  
10   #ifndef BOOST_URL_GRAMMAR_DETAIL_RANGE_RULE_HPP 10   #ifndef BOOST_URL_GRAMMAR_DETAIL_RANGE_RULE_HPP
11   #define BOOST_URL_GRAMMAR_DETAIL_RANGE_RULE_HPP 11   #define BOOST_URL_GRAMMAR_DETAIL_RANGE_RULE_HPP
12   12  
13   #include <boost/url/detail/config.hpp> 13   #include <boost/url/detail/config.hpp>
14   #include <type_traits> 14   #include <type_traits>
15   #include <utility> 15   #include <utility>
16   16  
17   namespace boost { 17   namespace boost {
18   namespace urls { 18   namespace urls {
19   namespace grammar { 19   namespace grammar {
20   namespace detail { 20   namespace detail {
21   21  
22   template<class RangeRule, bool = std::is_empty<RangeRule>::value> 22   template<class RangeRule, bool = std::is_empty<RangeRule>::value>
23   class range_base_storage; 23   class range_base_storage;
24   24  
25   template<class RangeRule> 25   template<class RangeRule>
26   class range_base_storage<RangeRule, false> 26   class range_base_storage<RangeRule, false>
27   { 27   {
28   RangeRule rule_; 28   RangeRule rule_;
29   29  
30   protected: 30   protected:
HITCBC 31   1 range_base_storage() = default; 31   1 range_base_storage() = default;
32   32  
33   explicit 33   explicit
HITCBC 34   229 range_base_storage(RangeRule const& rule) 34   229 range_base_storage(RangeRule const& rule)
HITCBC 35   229 : rule_(rule) 35   229 : rule_(rule)
36   { 36   {
HITCBC 37   229 } 37   229 }
38   38  
39   explicit 39   explicit
HITCBC 40   659 range_base_storage(RangeRule&& rule) 40   659 range_base_storage(RangeRule&& rule)
HITCBC 41   659 : rule_(std::move(rule)) 41   659 : rule_(std::move(rule))
42   { 42   {
HITCBC 43   659 } 43   659 }
44   44  
45   RangeRule& 45   RangeRule&
HITCBC 46   519 rule() noexcept 46   519 rule() noexcept
47   { 47   {
HITCBC 48   519 return rule_; 48   519 return rule_;
49   } 49   }
50   50  
51   RangeRule const& 51   RangeRule const&
HITCBC 52   708 rule() const noexcept 52   708 rule() const noexcept
53   { 53   {
HITCBC 54   708 return rule_; 54   708 return rule_;
55   } 55   }
56   }; 56   };
57   57  
58   template<class RangeRule> 58   template<class RangeRule>
59   class range_base_storage<RangeRule, true> 59   class range_base_storage<RangeRule, true>
60   : private RangeRule 60   : private RangeRule
61   { 61   {
62   protected: 62   protected:
63   range_base_storage() = default; 63   range_base_storage() = default;
64   64  
65   explicit 65   explicit
66   range_base_storage(RangeRule const& rule) 66   range_base_storage(RangeRule const& rule)
67   : RangeRule(rule) 67   : RangeRule(rule)
68   { 68   {
69   } 69   }
70   70  
71   explicit 71   explicit
72   range_base_storage(RangeRule&& rule) 72   range_base_storage(RangeRule&& rule)
73   : RangeRule(std::move(rule)) 73   : RangeRule(std::move(rule))
74   { 74   {
75   } 75   }
76   76  
77   RangeRule& 77   RangeRule&
78   rule() noexcept 78   rule() noexcept
79   { 79   {
80   return *this; 80   return *this;
81   } 81   }
82   82  
83   RangeRule const& 83   RangeRule const&
84   rule() const noexcept 84   rule() const noexcept
85   { 85   {
86   return *this; 86   return *this;
87   } 87   }
88   }; 88   };
89   89  
90   } // detail 90   } // detail
91   } // grammar 91   } // grammar
92   } // urls 92   } // urls
93   } // boost 93   } // boost
94   94  
95   #endif 95   #endif