|
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