22 template <
typename Sig>
24 template <
typename... Args>
26 template <
typename Sig>
29 template <
typename Signature,
typename Traits_,
bool isLegacy>
33 template <
typename Out,
typename... Ins,
typename Traits_>
38 using KeyValue =
typename base_class::KeyValue;
45 std::tuple<HandleVector<InputHandle, Ins>...>
m_ins;
49 requires std::is_void_v<Out>
54 requires( std::is_void_v<Out> &&
sizeof...( Ins ) == 1 )
58 requires( !std::is_void_v<Out> )
63 requires( !std::is_void_v<Out> &&
sizeof...( Ins ) == 1 )
67 const std::string&
inputLocation(
unsigned int i,
unsigned int j )
const {
72 requires(
sizeof...( Ins ) == 1 )
83 if constexpr ( std::is_void_v<Out> ) {
84 std::apply( [&](
auto&&... handle ) { ( *this )( handle.get( ctx )... ); },
m_ins );
86 put( std::get<0>( this->m_outputs ),
87 std::apply( [&](
auto&&... handle ) {
return ( *
this )( handle.get( ctx )... ); },
m_ins ) );
97 template <
typename Out,
typename... Ins,
typename Traits_>
107 template <
typename T>
109 std::tuple<HandleVector<InputHandle, Ins>...>
m_ins;
113 requires std::is_void_v<Out>
118 requires( std::is_void_v<Out> &&
sizeof...( Ins ) == 1 )
122 requires( !std::is_void_v<Out> )
127 requires( !std::is_void_v<Out> &&
sizeof...( Ins ) == 1 )
136 requires(
sizeof...( Ins ) == 1 )
146 if constexpr ( std::is_void_v<Out> ) {
147 std::apply( [&](
auto&&... handle ) { ( *this )( handle.get( ctx )... ); },
m_ins );
149 put( std::get<0>( this->m_outputs ),
150 std::apply( [&](
auto&&... handle ) {
return ( *
this )( handle.get( ctx )... ); },
m_ins ) );
161 template <
typename Signature,
typename Traits_ = Traits::useDefaults>
165 template <details::is_
void_fun Signature,
typename Traits_ = Traits::useDefaults>
171 template <
typename Signature,
typename Traits_ = Traits::BaseClass_t<Gaudi::Algorithm>>
174 template <
typename... Outs,
typename... Ins,
typename Traits_>
180 template <
typename T>
182 std::tuple<details::HandleVector<InputHandle, Ins>...>
m_ins;
189 static constexpr size_t n_args =
sizeof...( Ins );
196 requires(
sizeof...( Ins ) == 1 )
201 return getLocations(
m_ins, i ).at( j ).key();
214 [&](
auto&... outhandle ) {
216 [&outhandle...](
auto&&... data ) {
217 ( details::put( outhandle, std::forward<decltype( data )>( data ) ), ... );
219 std::apply( [&](
auto&&... in ) { return ( *this )( in.get( ctx )... ); }, this->m_ins ) );
230 template <
typename Signature,
typename Traits_ = Traits::BaseClass_t<Gaudi::Algorithm>>
233 template <
typename... Outs,
typename In,
typename Traits_>
241 template <
typename T>
262 [&](
auto&... outhandle ) {
264 [&outhandle...](
bool passed,
auto&&... data ) {
265 ( details::put( outhandle, std::forward<decltype( data )>( data ) ), ... );
268 ( *
this )( this->m_ins.get( ctx ) ) );
This class represents an entry point to all the event specific data.
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
This class is used for returning status codes from appropriate routines.
constexpr bool is_void_fun_v
typename detail2::InputHandle< T, Tr, detail2::DefaultInputHandle >::type InputHandle_t
auto put(const DataObjectHandle< Out1 > &out_handle, Out2 &&out)
auto make_HandleVectorTuple(Algorithm *parent, InKeys const &keys)
decltype(get_values_helper< Value >(std::make_index_sequence< N >())) RepeatValues_
decltype(auto) getLocations(std::tuple< HandleVector< Handle, I >... > const &vectors, unsigned int i)
StatusCode execute(CommonMessagingBase const &alg, F &&f)
details::MergingTransformer< Signature, Traits_, details::isLegacy< Traits_ > > MergingTransformer
details::MergingTransformer< Signature, Traits_, details::isLegacy< Traits_ > > MergingConsumer
GAUDI_API const EventContext & currentContext()