20 template <
typename Signature,
typename Traits_,
bool isLegacy>
24 template <
typename Out,
typename... In,
typename Traits_>
27 using DataHandleMixin<std::tuple<Out>,
filter_evtcontext<In...>, Traits_>::DataHandleMixin;
32 put( std::get<0>( this->m_outputs ), filter_evtcontext_t<In...>::apply( *
this, this->m_inputs ) );
41 virtual Out operator()(
const In&... )
const = 0;
44 template <
typename Out,
typename... In,
typename Traits_>
47 using DataHandleMixin<std::tuple<Out>,
filter_evtcontext<In...>, Traits_>::DataHandleMixin;
52 put( std::get<0>( this->m_outputs ), filter_evtcontext_t<In...>::apply( *
this,
ctx, this->m_inputs ) );
61 virtual Out operator()(
const In&... )
const = 0;
67 template <
typename Signature,
typename Traits_,
bool isLegacy>
70 template <
typename... Out,
typename... In,
typename Traits_>
72 : DataHandleMixin<std::tuple<Out...>, filter_evtcontext<In...>, Traits_> {
79 [
this](
auto&... ohandle ) {
81 std::apply( [&ohandle...](
82 auto&&... data ) { ( put( ohandle, std::forward<decltype( data )>( data ) ), ... ); },
83 filter_evtcontext_t<In...>::apply( *
this, this->m_inputs ) );
95 virtual std::tuple<Out...> operator()(
const In&... )
const = 0;
98 template <
typename... Out,
typename... In,
typename Traits_>
100 : DataHandleMixin<std::tuple<Out...>, filter_evtcontext<In...>, Traits_> {
107 [
this, &
ctx](
auto&... ohandle ) {
109 std::apply( [&ohandle...](
110 auto&&... data ) { ( put( ohandle, std::forward<decltype( data )>( data ) ), ... ); },
111 filter_evtcontext_t<In...>::apply( *
this,
ctx, this->m_inputs ) );
123 virtual std::tuple<Out...> operator()(
const In&... )
const = 0;
129 template <
typename Signature,
typename Traits_,
bool isLegacy>
132 template <
typename... Out,
typename... In,
typename Traits_>
134 : DataHandleMixin<std::tuple<Out...>, std::tuple<In...>, Traits_> {
141 [&](
auto&... ohandle ) {
144 [&ohandle...,
this](
bool passed,
auto&&... data ) {
145 this->setFilterPassed( passed );
146 ( put( ohandle, std::forward<decltype( data )>( data ) ), ... );
148 filter_evtcontext_t<In...>::apply( *
this, this->m_inputs ) );
160 virtual std::tuple<bool, Out...> operator()(
const In&... )
const = 0;
163 template <
typename... Out,
typename... In,
typename Traits_>
165 : DataHandleMixin<std::tuple<Out...>, std::tuple<In...>, Traits_> {
174 [&](
auto&... ohandle ) {
176 [&ohandle..., &
ctx,
this](
bool passed,
auto&&... data ) {
177 this->execState( ctx ).setFilterPassed( passed );
178 ( put( ohandle, std::forward<decltype( data )>( data ) ), ... );
180 filter_evtcontext_t<In...>::apply( *
this,
ctx, this->m_inputs ) );
193 virtual std::tuple<bool, Out...> operator()(
const In&... )
const = 0;
197 template <
typename Signature,
typename Traits_ = Traits::useDefaults>
200 template <
typename Signature,
typename Traits_ = Traits::useDefaults>
203 template <
typename Signature,
typename Traits_ = Traits::useDefaults>
Out1 * put(const DataObjectHandle< Out1 > &out_handle, Out2 &&out)
Define general base for Gaudi exception.
#define GF_SUPPRESS_SPURIOUS_CLANG_WARNING_BEGIN
virtual const std::string & message() const
error message to be printed
constexpr static const auto SUCCESS
This class represents an entry point to all the event specific data.
typename filter_evtcontext_t< In... >::type filter_evtcontext
This class is used for returning status codes from appropriate routines.
virtual const StatusCode & code() const
StatusCode for Exception.
#define GF_SUPPRESS_SPURIOUS_CLANG_WARNING_END
Header file for std:chrono::duration-based Counters.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.