11#ifndef CTRE__ACTIONS__CAPTURE__HPP
22#define CTRE__ACTIONS__CAPTURE__HPP
33
4+ // prepare_capture
5+ template <auto V, typename ... Ts, size_t Counter> static constexpr auto apply (pcre::prepare_capture, ctll::term<V>, pcre_context<ctll::list<Ts...>, pcre_parameters<Counter>>) {
6+ return pcre_context{ctll::push_front (capture_id<Counter+1 >(), ctll::list<Ts...>()), pcre_parameters<Counter+1 >()};
7+ }
8+
9+ // reset_capture
10+ template <auto V, typename ... Ts, size_t Id, size_t Counter> static constexpr auto apply (pcre::reset_capture, ctll::term<V>, pcre_context<ctll::list<capture_id<Id>, Ts...>, pcre_parameters<Counter>>) {
11+ return pcre_context{ctll::list<Ts...>(), pcre_parameters<Counter-1 >()};
12+ }
13+
414// capture
5- template <auto V, typename A, typename ... Ts, size_t Counter> static constexpr auto apply (pcre::make_capture, ctll::term<V>, pcre_context<ctll::list<A, Ts...>, pcre_parameters<Counter>>) {
6- return pcre_context{ctll::push_front (capture<Counter+ 1 , A>(), ctll::list<Ts...>()), pcre_parameters<Counter+ 1 >()};
15+ template <auto V, typename A, size_t Id, typename ... Ts, size_t Counter> static constexpr auto apply (pcre::make_capture, ctll::term<V>, pcre_context<ctll::list<A, capture_id<Id> , Ts...>, pcre_parameters<Counter>>) {
16+ return pcre_context{ctll::push_front (capture<Id , A>(), ctll::list<Ts...>()), pcre_parameters<Counter>()};
717}
818// capture (sequence)
9- template <auto V, typename ... Content, typename ... Ts, size_t Counter> static constexpr auto apply (pcre::make_capture, ctll::term<V>, pcre_context<ctll::list<sequence<Content...>, Ts...>, pcre_parameters<Counter>>) {
10- return pcre_context{ctll::push_front (capture<Counter+ 1 , Content...>(), ctll::list<Ts...>()), pcre_parameters<Counter+ 1 >()};
19+ template <auto V, typename ... Content, size_t Id, typename ... Ts, size_t Counter> static constexpr auto apply (pcre::make_capture, ctll::term<V>, pcre_context<ctll::list<sequence<Content...>, capture_id<Id >, Ts...>, pcre_parameters<Counter>>) {
20+ return pcre_context{ctll::push_front (capture<Id , Content...>(), ctll::list<Ts...>()), pcre_parameters<Counter>()};
1121}
1222// push_name
1323template <auto V, typename ... Ts, typename Parameters> static constexpr auto apply (pcre::push_name, ctll::term<V>, pcre_context<ctll::list<Ts...>, Parameters> subject) {
@@ -18,12 +28,12 @@ template <auto... Str, auto V, typename... Ts, typename Parameters> static const
1828 return pcre_context{ctll::push_front (id<Str..., V>(), ctll::list<Ts...>()), subject.parameters };
1929}
2030// capture with name
21- template <auto ... Str, auto V, typename A, typename ... Ts, size_t Counter> static constexpr auto apply (pcre::make_capture_with_name, ctll::term<V>, pcre_context<ctll::list<A, id<Str...>, Ts...>, pcre_parameters<Counter>>) {
22- return pcre_context{ctll::push_front (capture_with_name<Counter+ 1 , id<Str...>, A>(), ctll::list<Ts...>()), pcre_parameters<Counter+ 1 >()};
31+ template <auto ... Str, auto V, typename A, size_t Id, typename ... Ts, size_t Counter> static constexpr auto apply (pcre::make_capture_with_name, ctll::term<V>, pcre_context<ctll::list<A, id<Str...>, capture_id<Id >, Ts...>, pcre_parameters<Counter>>) {
32+ return pcre_context{ctll::push_front (capture_with_name<Id , id<Str...>, A>(), ctll::list<Ts...>()), pcre_parameters<Counter>()};
2333}
2434// capture with name (sequence)
25- template <auto ... Str, auto V, typename ... Content, typename ... Ts, size_t Counter> static constexpr auto apply (pcre::make_capture_with_name, ctll::term<V>, pcre_context<ctll::list<sequence<Content...>, id<Str...>, Ts...>, pcre_parameters<Counter>>) {
26- return pcre_context{ctll::push_front (capture_with_name<Counter+ 1 , id<Str...>, Content...>(), ctll::list<Ts...>()), pcre_parameters<Counter+ 1 >()};
35+ template <auto ... Str, auto V, typename ... Content, size_t Id, typename ... Ts, size_t Counter> static constexpr auto apply (pcre::make_capture_with_name, ctll::term<V>, pcre_context<ctll::list<sequence<Content...>, id<Str...>, capture_id<Id >, Ts...>, pcre_parameters<Counter>>) {
36+ return pcre_context{ctll::push_front (capture_with_name<Id , id<Str...>, Content...>(), ctll::list<Ts...>()), pcre_parameters<Counter>()};
2737}
2838
2939
0 commit comments