16 namespace Gaudi ::Functional {
20 template <
typename Signature,
typename Traits_,
bool isLegacy>
24 template <
typename Out,
typename... In,
typename Traits_>
26 : details::DataHandleMixin<
std::tuple<Out>, details::filter_evtcontext<In...>, Traits_> {
33 details::filter_evtcontext_t<In...>::apply( *
this, this->m_inputs ) );
42 virtual Out operator()(
const In&... )
const = 0;
45 template <
typename Out,
typename... In,
typename Traits_>
47 : details::DataHandleMixin<
std::tuple<Out>, details::filter_evtcontext<In...>, Traits_> {
54 details::filter_evtcontext_t<In...>::apply( *
this, ctx, this->m_inputs ) );
63 virtual Out operator()(
const In&... )
const = 0;
69 template <
typename Signature,
typename Traits_,
bool isLegacy>
72 template <
typename... Out,
typename... In,
typename Traits_>
74 : details::DataHandleMixin<std::tuple<Out...>, details::filter_evtcontext<In...>, Traits_> {
81 [
this](
auto&... ohandle ) {
83 #if defined( __clang__ ) && ( __clang_major__ < 9 ) 85 # pragma clang diagnostic push 86 # pragma clang diagnostic ignored "-Wunused-lambda-capture" 89 [&ohandle...](
auto&&... data ) {
90 ( details::put( ohandle, std::forward<decltype( data )>( data ) ), ... );
92 details::filter_evtcontext_t<In...>::apply( *
this, this->m_inputs ) );
94 #if defined( __clang__ ) && ( __clang_major__ < 9 ) 95 # pragma clang diagnostic pop 107 virtual std::tuple<Out...> operator()(
const In&... )
const = 0;
110 template <
typename... Out,
typename... In,
typename Traits_>
112 : details::DataHandleMixin<std::tuple<Out...>, details::filter_evtcontext<In...>, Traits_> {
119 [
this, &ctx](
auto&... ohandle ) {
121 #if defined( __clang__ ) && ( __clang_major__ < 6 ) 123 # pragma clang diagnostic push 124 # pragma clang diagnostic ignored "-Wunused-lambda-capture" 127 [&ohandle...](
auto&&... data ) {
128 ( details::put( ohandle, std::forward<decltype( data )>( data ) ), ... );
130 details::filter_evtcontext_t<In...>::apply( *
this, ctx, this->m_inputs ) );
132 #if defined( __clang__ ) && ( __clang_major__ < 6 ) 133 # pragma clang diagnostic pop 145 virtual std::tuple<Out...> operator()(
const In&... )
const = 0;
151 template <
typename Signature,
typename Traits_,
bool isLegacy>
154 template <
typename... Out,
typename... In,
typename Traits_>
156 : details::DataHandleMixin<std::tuple<Out...>, std::tuple<In...>, Traits_> {
157 using details::DataHandleMixin<
std::tuple<Out...>,
std::tuple<In...>, Traits_>::DataHandleMixin;
163 [&](
auto&... ohandle ) {
165 [&ohandle...,
this](
bool passed,
auto&&... data ) {
166 this->setFilterPassed( passed );
167 ( details::put( ohandle, std::forward<decltype( data )>( data ) ), ... );
169 details::filter_evtcontext_t<In...>::apply( *
this, this->m_inputs ) );
180 virtual std::tuple<bool, Out...> operator()(
const In&... )
const = 0;
183 template <
typename... Out,
typename... In,
typename Traits_>
185 : details::DataHandleMixin<std::tuple<Out...>, std::tuple<In...>, Traits_> {
186 using details::DataHandleMixin<
std::tuple<Out...>,
std::tuple<In...>, Traits_>::DataHandleMixin;
192 [&](
auto&... ohandle ) {
194 [&ohandle..., &ctx,
this](
bool passed,
auto&&... data ) {
195 this->execState( ctx ).setFilterPassed( passed );
196 ( details::put( ohandle, std::forward<decltype( data )>( data ) ), ... );
198 details::filter_evtcontext_t<In...>::apply( *
this, ctx, this->m_inputs ) );
209 virtual std::tuple<bool, Out...> operator()(
const In&... )
const = 0;
213 template <
typename Signature,
typename Traits_ = Traits::useDefaults>
216 template <
typename Signature,
typename Traits_ = Traits::useDefaults>
219 template <
typename Signature,
typename Traits_ = Traits::useDefaults>
Define general base for Gaudi exception.
virtual const std::string & message() const
error message to be printed
constexpr static const auto SUCCESS
typename filter_evtcontext_t< In... >::type filter_evtcontext
This class represents an entry point to all the event specific data.
This class is used for returning status codes from appropriate routines.
virtual const StatusCode & code() const
StatusCode for Exception.
Out1 * put(const DataObjectHandle< Out1 > &out_handle, Out2 &&out)
Header file for std:chrono::duration-based Counters.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.