File tree Expand file tree Collapse file tree
include/boost/url/grammar Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -41,6 +41,8 @@ implementation-defined:
4141 - ' boost::urls::string_token::*_t'
4242exclude-symbols :
4343 - ' boost::urls::void_t'
44+ # any_rule was previously excluded by the detail path rule
45+ - ' boost::urls::any_rule'
4446
4547# Metadata Extraction
4648private-bases : false
Original file line number Diff line number Diff line change 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+ range_base_storage () = default ;
32+
33+ explicit
34+ range_base_storage (RangeRule const & rule)
35+ : rule_(rule)
36+ {
37+ }
38+
39+ explicit
40+ range_base_storage (RangeRule&& rule)
41+ : rule_(std::move(rule))
42+ {
43+ }
44+
45+ RangeRule&
46+ rule () noexcept
47+ {
48+ return rule_;
49+ }
50+
51+ RangeRule const &
52+ rule () const noexcept
53+ {
54+ 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
You can’t perform that action at this time.
0 commit comments