1 #ifndef MERGING_TRANSFORMER_H 2 #define MERGING_TRANSFORMER_H 14 using details::vector_of_const_;
18 template <
typename Signature,
typename Traits_,
bool isLegacy>
22 template <
typename Out,
typename In,
typename Traits_>
29 using KeyValue =
typename base_class::KeyValue;
35 , m_inputLocations{
this, inputs.first, inputs.second,
38 this, m_inputLocations );
39 if ( std::is_pointer_v<In> ) {
43 [](
auto& h ) { h.setOptional(
true ); } );
59 details::put( std::get<0>( this->m_outputs ), std::as_const( *
this )( std::as_const( ins ) ) );
79 template <
typename Out,
typename In,
typename Traits_>
86 using KeyValue =
typename base_class::KeyValue;
92 , m_inputLocations{
this, inputs.first, inputs.second,
95 this, m_inputLocations );
96 if ( std::is_pointer_v<In> ) {
100 [](
auto& h ) { h.setOptional(
true ); } );
112 ins.
reserve( m_inputs.size() );
116 details::put( std::get<0>( this->m_outputs ), ( *
this )( std::as_const( ins ) ) );
128 template <
typename T>
138 template <
typename Signature,
typename Traits_ = Traits::useDefaults>
142 template <
typename Signature,
typename Traits_ = Traits::BaseClass_t<Gaudi::Algorithm>>
145 template <
typename... Outs,
typename In,
typename Traits_>
167 ins.
reserve( m_inputs.size() );
172 [&](
auto&... outhandle ) {
174 [&outhandle...](
auto&&... data ) {
175 ( details::put( outhandle, std::forward<decltype( data )>( data ) ), ... );
177 std::as_const( *
this )( std::as_const( ins ) ) );
191 template <
typename T>
199 template <
typename... Outs,
typename In,
typename Traits_>
202 : base_class(
name, pSvcLocator, outputs )
204 this, inputs.first, inputs.second,
207 if ( std::is_pointer_v<In> ) {
210 std::for_each( this->m_inputs.begin(), this->m_inputs.end(), [](
auto& h ) { h.setOptional(
true ); } );
Define general base for Gaudi exception.
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
void reserve(size_type size)
Implementation of property with value of concrete type.
Gaudi::cpp17::detected_or_t< DataObjectReadHandle< T >, detail2::InputHandle_t, Tr, T > InputHandle_t
Gaudi::tagged_bool< class ImmediatelyInvokeHandler_tag > ImmediatelyInvokeHandler
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.
This class is used for returning status codes from appropriate routines.
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
virtual const StatusCode & code() const
StatusCode for Exception.
T back_inserter(T... args)
Out1 * put(const DataObjectHandle< Out1 > &out_handle, Out2 &&out)
Handles make_vector_of_handles(IDataHandleHolder *owner, const std::vector< std::string > &init)
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.