1 #ifndef GAUDI_FUNCTIONAL_PRODUCER_H 2 #define GAUDI_FUNCTIONAL_PRODUCER_H 12 template <
typename Signature,
typename Traits_,
bool isLegacy>
15 template <
typename... Out,
typename Traits_>
16 struct Producer<
std::tuple<Out...>(), Traits_, true> : DataHandleMixin<std::tuple<Out...>, void, Traits_> {
17 using DataHandleMixin<
std::tuple<Out...>, void, Traits_>::DataHandleMixin;
23 [&](
auto&... ohandle ) {
25 std::apply( [&ohandle...](
26 auto&&... data ) { ( put( ohandle, std::forward<decltype( data )>( data ) ), ... ); },
27 std::as_const( *
this )() );
39 virtual std::tuple<Out...> operator()()
const = 0;
42 template <
typename... Out,
typename Traits_>
43 struct Producer<
std::tuple<Out...>(), Traits_, false> : DataHandleMixin<std::tuple<Out...>, void, Traits_> {
44 using DataHandleMixin<
std::tuple<Out...>, void, Traits_>::DataHandleMixin;
52 [&](
auto&... ohandle ) {
54 [&ohandle...](
auto&&... data ) {
55 ( put( ohandle, std::forward<decltype( data )>( data ) ), ... );
70 virtual std::tuple<Out...> operator()()
const = 0;
73 template <
typename Out,
typename Traits_>
74 struct Producer<Out(), Traits_, true> :
public DataHandleMixin<std::tuple<Out>, void, Traits_> {
75 using DataHandleMixin<std::tuple<Out>, void, Traits_>::DataHandleMixin;
79 put( std::get<0>( this->m_outputs ), std::as_const( *
this )() );
88 virtual Out operator()()
const = 0;
91 template <
typename Out,
typename Traits_>
92 struct Producer<Out(), Traits_, false> :
public DataHandleMixin<std::tuple<Out>, void, Traits_> {
93 using DataHandleMixin<std::tuple<Out>, void, Traits_>::DataHandleMixin;
97 put( std::get<0>( this->m_outputs ), ( *
this )() );
106 virtual Out operator()()
const = 0;
111 template <
typename Signature,
typename Traits_ = Traits::useDefaults>
Out1 * put(const DataObjectHandle< Out1 > &out_handle, Out2 &&out)
Define general base for Gaudi exception.
StatusCode execute(const EventContext &) const override final
#define GF_SUPPRESS_SPURIOUS_CLANG_WARNING_BEGIN
virtual const std::string & message() const
error message to be printed
constexpr static const auto SUCCESS
StatusCode execute() override final
This class represents an entry point to all the event specific data.
StatusCode execute() override final
StatusCode execute(const EventContext &) const override final
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
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.