The Gaudi Framework  v41r0 (bdbe7744)
Loading...
Searching...
No Matches
Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits > Class Template Reference

#include </builds/gaudi/Gaudi/GaudiFunctional/include/Gaudi/Functional/ToolBinder.h>

Inheritance diagram for Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >:
Collaboration diagram for Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >:

Public Types

using KeyValue = LocationSpec::KeyValue
using KeyValues = LocationSpec::KeyValues
using InputSpecTuple = LocationSpecs_t<Args...>
using InputSpecs = LocationSpecs<InputSpecTuple>
using Creator = Gaudi::Interface::Bind::Box<IFace> ( * )( void const*, Args const&... )
Public Types inherited from extends< details::BaseClass_t< Traits, AlgTool >, Gaudi::Interface::Bind::IBinder< IFace > >
using base_class
 Typedef to this class.
using extend_interfaces_base
 Typedef to the base of this class.
Public Types inherited from extend_interfaces< Interfaces... >
using ext_iids
 take union of the ext_iids of all Interfaces...

Public Member Functions

template<size_t... I>
 ToolBinder (std::string type, std::string name, const IInterface *parent, InputSpecTuple const &args, Creator creator, std::index_sequence< I... >)
 ToolBinder (std::string type, std::string name, const IInterface *parent, InputSpecs const &inputs, Creator creator)
Gaudi::Interface::Bind::Box< IFace > bind (EventContext const &ctx) const final
template<std::size_t N = 0>
decltype(auto) inputLocation () const
template<typename T>
decltype(auto) inputLocation () const
Public Member Functions inherited from extends< details::BaseClass_t< Traits, AlgTool >, Gaudi::Interface::Bind::IBinder< IFace > >
void const * i_cast (const InterfaceID &tid) const override
 Implementation of IInterface::i_cast.
StatusCode queryInterface (const InterfaceID &ti, void **pp) override
 Implementation of IInterface::queryInterface.
std::vector< std::string > getInterfaceNames () const override
 Implementation of IInterface::getInterfaceNames.

Static Public Member Functions

template<typename BoundInstance, typename Self>
static auto construct (Self *)

Static Public Attributes

static constexpr std::size_t N = sizeof...( Args )

Private Attributes

std::tuple< details::InputHandle_t< Traits, Args >... > m_handles
Creator m_creator

Detailed Description

template<typename IFace, typename... Args, typename Traits>
class Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >

Definition at line 23 of file ToolBinder.h.

Member Typedef Documentation

◆ Creator

template<typename IFace, typename... Args, typename Traits>
using Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >::Creator = Gaudi::Interface::Bind::Box<IFace> ( * )( void const*, Args const&... )

Definition at line 32 of file ToolBinder.h.

◆ InputSpecs

template<typename IFace, typename... Args, typename Traits>
using Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >::InputSpecs = LocationSpecs<InputSpecTuple>

Definition at line 31 of file ToolBinder.h.

◆ InputSpecTuple

template<typename IFace, typename... Args, typename Traits>
using Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >::InputSpecTuple = LocationSpecs_t<Args...>

Definition at line 30 of file ToolBinder.h.

◆ KeyValue

template<typename IFace, typename... Args, typename Traits>
using Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >::KeyValue = LocationSpec::KeyValue

Definition at line 28 of file ToolBinder.h.

◆ KeyValues

template<typename IFace, typename... Args, typename Traits>
using Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >::KeyValues = LocationSpec::KeyValues

Definition at line 29 of file ToolBinder.h.

Constructor & Destructor Documentation

◆ ToolBinder() [1/2]

template<typename IFace, typename... Args, typename Traits>
template<size_t... I>
Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >::ToolBinder ( std::string type,
std::string name,
const IInterface * parent,
InputSpecTuple const & args,
Creator creator,
std::index_sequence< I... >  )
inline

◆ ToolBinder() [2/2]

template<typename IFace, typename... Args, typename Traits>
Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >::ToolBinder ( std::string type,
std::string name,
const IInterface * parent,
InputSpecs const & inputs,
Creator creator )
inline

Definition at line 48 of file ToolBinder.h.

ToolBinder(std::string type, std::string name, const IInterface *parent, InputSpecTuple const &args, Creator creator, std::index_sequence< I... >)
Definition ToolBinder.h:35

Member Function Documentation

◆ bind()

template<typename IFace, typename... Args, typename Traits>
Gaudi::Interface::Bind::Box< IFace > Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >::bind ( EventContext const & ctx) const
inlinefinal

Definition at line 53 of file ToolBinder.h.

53 {
54 return std::apply(
55 [&]( auto const&... arg ) {
56 using namespace details;
57 return std::invoke( m_creator, this, get( arg, *this, ctx )... );
58 },
59 m_handles );
60 }
auto get(const Handle &handle, const Algo &, const EventContext &) -> decltype(details::deref(handle.get()))
Definition details.h:652

◆ construct()

template<typename IFace, typename... Args, typename Traits>
template<typename BoundInstance, typename Self>
auto Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >::construct ( Self * )
inlinestatic

Definition at line 75 of file ToolBinder.h.

75 {
77 return +[]( void const* ptr, const Args&... args ) {
79 static_cast<std::add_const_t<Self>*>( ptr ), args... };
80 };
81 }

◆ inputLocation() [1/2]

template<typename IFace, typename... Args, typename Traits>
template<typename T>
decltype(auto) Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >::inputLocation ( ) const
inline

Definition at line 68 of file ToolBinder.h.

68 {
69 using namespace details;
71 }
auto getKey(const Handle &h) -> decltype(h.objKey())
Definition details.h:677

◆ inputLocation() [2/2]

template<typename IFace, typename... Args, typename Traits>
template<std::size_t N = 0>
decltype(auto) Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >::inputLocation ( ) const
inline

Definition at line 63 of file ToolBinder.h.

63 {
64 using namespace details;
65 return getKey( std::get<N>( m_handles ) );
66 }

Member Data Documentation

◆ m_creator

template<typename IFace, typename... Args, typename Traits>
Creator Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >::m_creator
private

Definition at line 45 of file ToolBinder.h.

◆ m_handles

template<typename IFace, typename... Args, typename Traits>
std::tuple<details::InputHandle_t<Traits, Args>...> Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >::m_handles
private

Definition at line 44 of file ToolBinder.h.

◆ N

template<typename IFace, typename... Args, typename Traits>
std::size_t Gaudi::Functional::details::ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >::N = sizeof...( Args )
staticconstexpr

Definition at line 27 of file ToolBinder.h.


The documentation for this class was generated from the following file: