11 #ifndef SPLITTING_TRANSFORMER_H 12 #define SPLITTING_TRANSFORMER_H 25 template <
typename Container>
27 template <
typename Container>
32 template <
typename Signature,
typename Traits_,
bool isLegacy>
36 template <
typename Out,
typename... In,
typename Traits_>
38 :
public details::DataHandleMixin<
std::tuple<>, filter_evtcontext<In...>, Traits_> {
43 using KeyValue =
typename base_class::KeyValue;
50 this, outputs.first, outputs.
second,
51 [=](
Gaudi::Details::PropertyBase& ) {
54 if constexpr ( details::is_optional_v<Out> ) {
57 std::for_each( this->m_outputs.begin(), this->m_outputs.end(),
58 [](
auto& h ) { h.setOptional(
true ); } );
65 static_assert(
N == 1,
"single input argument requires single input signature" );
76 auto out = details::filter_evtcontext_t<In...>::apply( *
this, this->m_inputs );
77 if ( out.size() != m_outputs.size() ) {
97 using OutputHandle = details::OutputHandle_t<Traits_, details::remove_optional_t<T>>;
103 template <
typename Out,
typename... In,
typename Traits_>
105 :
public details::DataHandleMixin<
std::tuple<>, filter_evtcontext<In...>, Traits_> {
117 this, outputs.first, outputs.
second,
118 [=](
Gaudi::Details::PropertyBase& ) {
121 if constexpr ( details::is_optional_v<Out> ) {
124 std::for_each( this->m_outputs.begin(), this->m_outputs.end(),
125 [](
auto& h ) { h.setOptional(
true ); } );
132 static_assert(
N == 1,
"single input argument requires single input signature" );
143 auto out = details::filter_evtcontext_t<In...>::apply( *
this,
ctx, this->m_inputs );
144 if ( out.size() != m_outputs.size() ) {
163 template <
typename T>
164 using OutputHandle = details::OutputHandle_t<Traits_, details::remove_optional_t<T>>;
172 template <
typename Signature,
typename Traits_ = Traits::useDefaults>
Out1 * put(const DataObjectHandle< Out1 > &out_handle, Out2 &&out)
Define general base for Gaudi exception.
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Implementation of property with value of concrete type.
Gaudi::tagged_bool< class ImmediatelyInvokeHandler_tag > ImmediatelyInvokeHandler
virtual const std::string & message() const
error message to be printed
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.
details::template vector_of_const_< Container > vector_of_
virtual const StatusCode & code() const
StatusCode for Exception.
struct GAUDI_API array
Parametrisation class for redirection array - like implementation.
constexpr static const auto FAILURE
Handles make_vector_of_handles(IDataHandleHolder *owner, const std::vector< std::string > &init)
Header file for std:chrono::duration-based Counters.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.