|
2 | 2 | #define CTRE__ACTIONS__BACKREFERENCE__HPP |
3 | 3 |
|
4 | 4 | // backreference with name |
5 | | -template <auto... Str, auto V, typename... Ts, size_t Counter> static constexpr auto apply(pcre::make_back_reference, ctll::term<V>, pcre_context<ctll::list<id<Str...>, Ts...>, pcre_parameters<Counter>> subject) { |
6 | | - return pcre_context{ctll::push_front(back_reference_with_name<id<Str...>>(), ctll::list<Ts...>()), subject}; |
| 5 | +template <auto... Str, auto V, typename... Ts, size_t Counter> static constexpr auto apply(pcre::make_back_reference, ctll::term<V>, pcre_context<ctll::list<id<Str...>, Ts...>, pcre_parameters<Counter>>) { |
| 6 | + return pcre_context{ctll::push_front(back_reference_with_name<id<Str...>>(), ctll::list<Ts...>()), pcre_parameters<Counter>()}; |
7 | 7 | } |
8 | 8 |
|
9 | 9 | // with just a number |
10 | | -template <auto V, size_t Id, typename... Ts, size_t Counter> static constexpr auto apply(pcre::make_back_reference, ctll::term<V>, pcre_context<ctll::list<number<Id>, Ts...>, pcre_parameters<Counter>> subject) { |
| 10 | +template <auto V, size_t Id, typename... Ts, size_t Counter> static constexpr auto apply(pcre::make_back_reference, ctll::term<V>, pcre_context<ctll::list<number<Id>, Ts...>, pcre_parameters<Counter>>) { |
11 | 11 | // if we are looking outside of existing list of Ids ... reject input during parsing |
12 | 12 | if constexpr (Counter < Id) { |
13 | 13 | return ctll::reject{}; |
14 | 14 | } else { |
15 | | - return pcre_context{ctll::push_front(back_reference<Id>(), ctll::list<Ts...>()), subject}; |
| 15 | + return pcre_context{ctll::push_front(back_reference<Id>(), ctll::list<Ts...>()), pcre_parameters<Counter>()}; |
16 | 16 | } |
17 | 17 | } |
18 | 18 |
|
19 | 19 | // relative backreference |
20 | | -template <auto V, size_t Id, typename... Ts, size_t Counter> static constexpr auto apply(pcre::make_relative_back_reference, ctll::term<V>, [[maybe_unused]] pcre_context<ctll::list<number<Id>, Ts...>, pcre_parameters<Counter>> subject) { |
| 20 | +template <auto V, size_t Id, typename... Ts, size_t Counter> static constexpr auto apply(pcre::make_relative_back_reference, ctll::term<V>, [[maybe_unused]] pcre_context<ctll::list<number<Id>, Ts...>, pcre_parameters<Counter>>) { |
21 | 21 | // if we are looking outside of existing list of Ids ... reject input during parsing |
22 | 22 | if constexpr (Counter < Id) { |
23 | 23 | return ctll::reject{}; |
24 | 24 | } else { |
25 | 25 | constexpr size_t absolute_id = (Counter + 1) - Id; |
26 | | - return pcre_context{ctll::push_front(back_reference<absolute_id>(), ctll::list<Ts...>()), subject}; |
| 26 | + return pcre_context{ctll::push_front(back_reference<absolute_id>(), ctll::list<Ts...>()), pcre_parameters<Counter>()}; |
27 | 27 | } |
28 | 28 | } |
29 | 29 |
|
|
0 commit comments