30 template <
typename Signature,
typename Traits_,
bool isLegacy>
34 template <
typename Out,
typename... In,
typename Traits_>
36 : DataHandleMixin<std::tuple<Out>, filter_evtcontext<In...>, Traits_> {
37 using DataHandleMixin<std::tuple<Out>,
filter_evtcontext<In...>, Traits_>::DataHandleMixin;
42 if constexpr (
sizeof...( In ) == 0 ) {
43 put( std::get<0>( this->m_outputs ), ( *
this )() );
44 }
else if constexpr ( std::tuple_size_v<filter_evtcontext<In...>> == 0 ) {
47 put( std::get<0>( this->m_outputs ), filter_evtcontext_t<In...>::apply( *
this, this->m_inputs ) );
49 return FilterDecision::PASSED;
60 template <
typename Out,
typename... In,
typename Traits_>
62 : DataHandleMixin<std::tuple<Out>, filter_evtcontext<In...>, Traits_> {
63 using DataHandleMixin<std::tuple<Out>,
filter_evtcontext<In...>, Traits_>::DataHandleMixin;
68 if constexpr (
sizeof...( In ) == 0 ) {
69 put( std::get<0>( this->m_outputs ), ( *
this )() );
70 }
else if constexpr ( std::tuple_size_v<filter_evtcontext<In...>> == 0 ) {
71 put( std::get<0>( this->m_outputs ), ( *
this )(
ctx ) );
73 put( std::get<0>( this->m_outputs ), filter_evtcontext_t<In...>::apply( *
this,
ctx, this->m_inputs ) );
75 return FilterDecision::PASSED;
89 template <
typename Signature,
typename Traits_,
bool isLegacy>
92 template <
typename... Out,
typename... In,
typename Traits_>
94 : DataHandleMixin<std::tuple<Out...>, filter_evtcontext<In...>, Traits_> {
95 using DataHandleMixin<std::tuple<Out...>,
filter_evtcontext<In...>, Traits_>::DataHandleMixin;
101 [
this](
auto&... ohandle ) {
102 if constexpr (
sizeof...( In ) == 0 ) {
103 std::apply( [&ohandle...](
104 auto&&... data ) { ( put( ohandle, std::forward<decltype( data )>( data ) ), ... ); },
105 std::as_const( *
this )() );
107 std::apply( [&ohandle...](
108 auto&&... data ) { ( put( ohandle, std::forward<decltype( data )>( data ) ), ... ); },
109 filter_evtcontext_t<In...>::apply( std::as_const( *
this ), this->m_inputs ) );
113 return FilterDecision::PASSED;
121 virtual std::tuple<Out...>
operator()(
const In&... )
const = 0;
124 template <
typename... Out,
typename... In,
typename Traits_>
126 : DataHandleMixin<std::tuple<Out...>, filter_evtcontext<In...>, Traits_> {
127 using DataHandleMixin<std::tuple<Out...>,
filter_evtcontext<In...>, Traits_>::DataHandleMixin;
133 [
this, &
ctx](
auto&... ohandle ) {
134 if constexpr (
sizeof...( In ) == 0 ) {
135 std::apply( [&ohandle...](
136 auto&&... data ) { ( put( ohandle, std::forward<decltype( data )>( data ) ), ... ); },
138 }
else if constexpr ( std::tuple_size_v<filter_evtcontext<In...>> == 0 ) {
139 std::apply( [&ohandle...](
140 auto&&... data ) { ( put( ohandle, std::forward<decltype( data )>( data ) ), ... ); },
143 std::apply( [&ohandle...](
144 auto&&... data ) { ( put( ohandle, std::forward<decltype( data )>( data ) ), ... ); },
145 filter_evtcontext_t<In...>::apply( *
this,
ctx, this->m_inputs ) );
149 return FilterDecision::PASSED;
157 virtual std::tuple<Out...>
operator()(
const In&... )
const = 0;
163 template <
typename Signature,
typename Traits_,
bool isLegacy>
166 template <
typename... Out,
typename... In,
typename Traits_>
168 : DataHandleMixin<std::tuple<Out...>, filter_evtcontext<In...>, Traits_> {
169 using DataHandleMixin<std::tuple<Out...>,
filter_evtcontext<In...>, Traits_>::DataHandleMixin;
175 [&](
auto&... ohandle ) {
177 [&ohandle...](
bool passed,
auto&&... data ) {
178 ( put( ohandle, std::forward<decltype( data )>( data ) ), ... );
181 filter_evtcontext_t<In...>::apply( *
this, this->m_inputs ) );
184 ? FilterDecision::PASSED
185 : FilterDecision::FAILED;
193 virtual std::tuple<bool, Out...>
operator()(
const In&... )
const = 0;
196 template <
typename... Out,
typename... In,
typename Traits_>
198 : DataHandleMixin<std::tuple<Out...>, filter_evtcontext<In...>, Traits_> {
199 using DataHandleMixin<std::tuple<Out...>,
filter_evtcontext<In...>, Traits_>::DataHandleMixin;
205 [&](
auto&... ohandle ) {
207 [&ohandle...](
bool passed,
auto&&... data ) {
208 ( put( ohandle, std::forward<decltype( data )>( data ) ), ... );
211 filter_evtcontext_t<In...>::apply( *
this,
ctx, this->m_inputs ) );
214 ? FilterDecision::PASSED
215 : FilterDecision::FAILED;
223 virtual std::tuple<bool, Out...>
operator()(
const In&... )
const = 0;
227 template <
typename Signature,
typename Traits_ = Traits::useDefaults>
230 template <
typename Signature,
typename Traits_ = Traits::useDefaults>
233 template <
typename Signature,
typename Traits_ = Traits::useDefaults>