The Gaudi Framework  master (ff829712)
Loading...
Searching...
No Matches
Gaudi::Functional::details Namespace Reference

Namespaces

namespace  detail2
 
namespace  details2
 
namespace  zip
 

Classes

struct  Consumer
 
struct  Consumer< void(const In &...), Traits_, false >
 
struct  Consumer< void(const In &...), Traits_, true >
 
class  DataHandleMixin
 
class  DataHandleMixin< std::tuple< Out... >, std::tuple< In... >, Traits_ >
 
class  DataHandleMixin< std::tuple< Out... >, std::tuple<>, Traits_ >
 
class  DataHandleMixin< std::tuple< void >, std::tuple<>, Traits_ >
 
class  DataHandleMixin< std::tuple<>, std::tuple< In... >, Traits_ >
 
class  DataHandleMixin< std::tuple<>, std::tuple<>, Traits_ >
 
struct  deref_t
 
struct  filter_evtcontext_t
 
struct  filter_evtcontext_t< EventContext, In... >
 
struct  FilterPredicate
 
struct  FilterPredicate< bool(const In &...), Traits_, false >
 
struct  FilterPredicate< bool(const In &...), Traits_, true >
 
struct  insert_t
 
struct  invoke_optionally_t
 
struct  MergingTransformer
 
struct  MergingTransformer< Out(const vector_of_const_< In > &), Traits_, true >
 
struct  MergingTransformer< Out(const vector_of_const_< Ins > &...), Traits_, false >
 
struct  Producer
 
class  SplittingMergingTransformer
 
class  SplittingMergingTransformer< vector_of_< Out >(const vector_of_const_< In > &), Traits_, false >
 
class  SplittingTransformer
 
class  SplittingTransformer< vector_of_< Out >(const In &...), Traits_, false >
 
class  SplittingTransformer< vector_of_< Out >(const In &...), Traits_, true >
 
class  ToolBinder
 
class  ToolBinder< Gaudi::Interface::Bind::Box< IFace >(Args const &...), Traits >
 
class  vector_of_const_
 

Concepts

concept  is_optional
 
concept  is_void_fun
 

Typedefs

template<typename T>
using remove_optional_t = typename details2::value_type_of<T>::type
 
template<typename Value, auto N>
using RepeatValues_ = decltype( get_values_helper<Value>( std::make_index_sequence<N>() ) )
 
template<typename Tr, typename Default = Gaudi::Algorithm>
using BaseClass_t = detail2::BaseClass<Tr, Default>::type
 
template<typename Tr, typename T>
using OutputHandle_t = typename detail2::OutputHandle<T, Tr, DataObjectWriteHandle>::type
 
template<typename Tr, typename T>
using InputHandle_t = typename detail2::InputHandle<T, Tr, detail2::DefaultInputHandle>::type
 
template<typename... In>
using filter_evtcontext = typename filter_evtcontext_t<In...>::type
 

Functions

std::vector< DataObjIDto_DataObjID (const std::vector< std::string > &in)
 
template<typename Value, std::size_t... I>
auto get_values_helper (std::index_sequence< I... >)
 
template<std::derived_from< DataObject > Out1, std::convertible_to< Out1 > Out2>
auto put (const DataObjectHandle< Out1 > &out_handle, Out2 &&out)
 
template<typename Out1, std::convertible_to< Out1 > Out2>
auto put (const DataObjectHandle< AnyDataWrapper< Out1 > > &out_handle, Out2 &&out)
 
template<typename OutHandle, typename OptOut>
requires ( is_optional<OptOut> )
void put (const OutHandle &out_handle, OptOut &&out)
 
template<typename Handles>
Handles make_vector_of_handles (IDataHandleHolder *owner, const std::vector< DataObjID > &init)
 
template<typename Handle, typename Algo>
auto get (const Handle &handle, const Algo &, const EventContext &) -> decltype(details::deref(handle.get()))
 
template<typename IFace, typename Algo>
auto get (const ToolHandle< Gaudi::Interface::Bind::IBinder< IFace > > &handle, const Algo &, const EventContext &ctx)
 
template<typename Handle>
auto getKey (const Handle &h) -> decltype(h.objKey())
 
template<typename Out, typename In, typename Tr>
void updateHandleLocation (DataHandleMixin< Out, In, Tr > &parent, const std::string &prop, const std::string &newLoc)
 
template<typename Out, typename In, typename Tr>
void updateHandleLocations (DataHandleMixin< Out, In, Tr > &parent, const std::string &prop, const std::vector< std::string > &newLocs)
 
template<typename Fun, typename Container, typename... Args>
constexpr void applyPostProcessing (const Fun &, Container &, Args...)
 
template<typename Fun, typename Container>
auto applyPostProcessing (const Fun &fun, Container &c) -> decltype(fun.postprocess(c), void())
 
template<typename F, size_t... Is>
auto for_impl (F &&f, std::index_sequence< Is... >)
 
template<auto N, typename F>
decltype(auto) for_ (F &&f)
 

Variables

constexpr struct Gaudi::Functional::details::invoke_optionally_t invoke_optionally
 
constexpr struct Gaudi::Functional::details::insert_t insert
 
constexpr struct Gaudi::Functional::details::deref_t deref
 
template<typename Traits>
constexpr bool isLegacy
 
template<typename Sig>
constexpr bool is_void_fun_v = false
 
template<typename... Args>
constexpr bool is_void_fun_v< void(Args...)> = true
 

Typedef Documentation

◆ BaseClass_t

template<typename Tr, typename Default = Gaudi::Algorithm>
using Gaudi::Functional::details::BaseClass_t = detail2::BaseClass<Tr, Default>::type

Definition at line 454 of file details.h.

◆ filter_evtcontext

template<typename... In>
using Gaudi::Functional::details::filter_evtcontext = typename filter_evtcontext_t<In...>::type

Definition at line 541 of file details.h.

◆ InputHandle_t

template<typename Tr, typename T>
using Gaudi::Functional::details::InputHandle_t = typename detail2::InputHandle<T, Tr, detail2::DefaultInputHandle>::type

Definition at line 463 of file details.h.

◆ OutputHandle_t

template<typename Tr, typename T>
using Gaudi::Functional::details::OutputHandle_t = typename detail2::OutputHandle<T, Tr, DataObjectWriteHandle>::type

Definition at line 460 of file details.h.

◆ remove_optional_t

template<typename T>
using Gaudi::Functional::details::remove_optional_t = typename details2::value_type_of<T>::type

Definition at line 142 of file details.h.

◆ RepeatValues_

template<typename Value, auto N>
using Gaudi::Functional::details::RepeatValues_ = decltype( get_values_helper<Value>( std::make_index_sequence<N>() ) )

Definition at line 163 of file details.h.

Function Documentation

◆ applyPostProcessing() [1/2]

template<typename Fun, typename Container, typename... Args>
void Gaudi::Functional::details::applyPostProcessing ( const Fun & ,
Container & ,
Args...  )
constexpr

Definition at line 739 of file details.h.

739 {
740 static_assert( sizeof...( Args ) == 0, "Args should not be used!" );
741 }

◆ applyPostProcessing() [2/2]

template<typename Fun, typename Container>
auto Gaudi::Functional::details::applyPostProcessing ( const Fun & fun,
Container & c ) -> decltype( fun.postprocess( c ), void() )

Definition at line 744 of file details.h.

744 {
745 fun.postprocess( c );
746 }

◆ for_()

template<auto N, typename F>
decltype(auto) Gaudi::Functional::details::for_ ( F && f)

Definition at line 36 of file MergingTransformer.h.

36 {
37 return for_impl( std::forward<F>( f ), std::make_index_sequence<N>{} );
38 }
auto for_impl(F &&f, std::index_sequence< Is... >)

◆ for_impl()

template<typename F, size_t... Is>
auto Gaudi::Functional::details::for_impl ( F && f,
std::index_sequence< Is... >  )

Definition at line 27 of file MergingTransformer.h.

27 {
28 if constexpr ( std::disjunction_v<std::is_void<std::invoke_result_t<F, std::integral_constant<int, Is>>>...> ) {
29 ( std::invoke( f, std::integral_constant<int, Is>{} ), ... );
30 } else {
31 return std::array{ std::invoke( f, std::integral_constant<int, Is>{} )... };
32 }
33 }

◆ get() [1/2]

template<typename Handle, typename Algo>
auto Gaudi::Functional::details::get ( const Handle & handle,
const Algo & ,
const EventContext &  ) -> decltype( details::deref( handle.get() ) )

Definition at line 484 of file details.h.

486 {
487 return details::deref( handle.get() );
488 }
constexpr struct Gaudi::Functional::details::deref_t deref

◆ get() [2/2]

template<typename IFace, typename Algo>
auto Gaudi::Functional::details::get ( const ToolHandle< Gaudi::Interface::Bind::IBinder< IFace > > & handle,
const Algo & ,
const EventContext & ctx )

Definition at line 491 of file details.h.

491 {
492 return handle.bind( ctx );
493 }
auto bind(const EventContext &ctx) const
Definition ToolHandle.h:344

◆ get_values_helper()

template<typename Value, std::size_t... I>
auto Gaudi::Functional::details::get_values_helper ( std::index_sequence< I... > )

Definition at line 158 of file details.h.

158 {
159 return std::make_tuple( ( (void)I, Value{} )... );
160 }

◆ getKey()

template<typename Handle>
auto Gaudi::Functional::details::getKey ( const Handle & h) -> decltype( h.objKey() )

Definition at line 496 of file details.h.

496 {
497 return h.objKey();
498 }

◆ make_vector_of_handles()

template<typename Handles>
Handles Gaudi::Functional::details::make_vector_of_handles ( IDataHandleHolder * owner,
const std::vector< DataObjID > & init )

Definition at line 473 of file details.h.

473 {
474 Handles handles;
475 handles.reserve( init.size() );
476 std::transform( init.begin(), init.end(), std::back_inserter( handles ),
477 [&]( const auto& loc ) -> typename Handles::value_type {
478 return { loc, owner };
479 } );
480 return handles;
481 }

◆ put() [1/3]

template<typename Out1, std::convertible_to< Out1 > Out2>
auto Gaudi::Functional::details::put ( const DataObjectHandle< AnyDataWrapper< Out1 > > & out_handle,
Out2 && out )

Definition at line 172 of file details.h.

172 {
173 return out_handle.put( std::forward<Out2>( out ) );
174 }
T * put(std::unique_ptr< T > object) const
Register object in transient store.

◆ put() [2/3]

template<std::derived_from< DataObject > Out1, std::convertible_to< Out1 > Out2>
auto Gaudi::Functional::details::put ( const DataObjectHandle< Out1 > & out_handle,
Out2 && out )

Definition at line 167 of file details.h.

167 {
168 return out_handle.put( std::make_unique<Out1>( std::forward<Out2>( out ) ) );
169 }

◆ put() [3/3]

template<typename OutHandle, typename OptOut>
requires ( is_optional<OptOut> )
void Gaudi::Functional::details::put ( const OutHandle & out_handle,
OptOut && out )

Definition at line 179 of file details.h.

179 {
180 if ( out ) put( out_handle, *std::forward<OptOut>( out ) );
181 }
auto put(const DataObjectHandle< Out1 > &out_handle, Out2 &&out)
Definition details.h:167

◆ to_DataObjID()

std::vector< DataObjID > Gaudi::Functional::details::to_DataObjID ( const std::vector< std::string > & in)
inline

Definition at line 111 of file details.h.

111 {
112 std::vector<DataObjID> out;
113 out.reserve( in.size() );
114 std::transform( in.begin(), in.end(), std::back_inserter( out ),
115 []( const std::string& i ) { return DataObjID{ i }; } );
116 return out;
117 }

◆ updateHandleLocation()

template<typename Out, typename In, typename Tr>
void Gaudi::Functional::details::updateHandleLocation ( DataHandleMixin< Out, In, Tr > & parent,
const std::string & prop,
const std::string & newLoc )

Definition at line 547 of file details.h.

548 {
549 auto sc = parent.setProperty( prop, newLoc );
550 if ( sc.isFailure() ) throw GaudiException( "Could not set Property", prop + " -> " + newLoc, sc );
551 }
Define general base for Gaudi exception.

◆ updateHandleLocations()

template<typename Out, typename In, typename Tr>
void Gaudi::Functional::details::updateHandleLocations ( DataHandleMixin< Out, In, Tr > & parent,
const std::string & prop,
const std::vector< std::string > & newLocs )

Definition at line 554 of file details.h.

555 {
556 std::ostringstream ss;
557 GaudiUtils::details::ostream_joiner( ss << '[', newLocs, ", ", []( std::ostream& os, const auto& i ) -> auto& {
558 return os << "'" << i << "'";
559 } ) << ']';
560 auto sc = parent.setProperty( prop, ss.str() );
561 if ( sc.isFailure() ) throw GaudiException( "Could not set Property", prop + " -> " + ss.str(), sc );
562 }
Stream & ostream_joiner(Stream &os, Iterator first, Iterator last, Separator sep, OutputElement output=OutputElement{})

Variable Documentation

◆ deref

struct Gaudi::Functional::details::deref_t Gaudi::Functional::details::deref

◆ insert

struct Gaudi::Functional::details::insert_t Gaudi::Functional::details::insert

◆ invoke_optionally

struct Gaudi::Functional::details::invoke_optionally_t Gaudi::Functional::details::invoke_optionally

◆ is_void_fun_v

template<typename Sig>
bool Gaudi::Functional::details::is_void_fun_v = false
constexpr

Definition at line 41 of file MergingTransformer.h.

◆ is_void_fun_v< void(Args...)>

template<typename... Args>
bool Gaudi::Functional::details::is_void_fun_v< void(Args...)> = true
constexpr

Definition at line 43 of file MergingTransformer.h.

◆ isLegacy

template<typename Traits>
bool Gaudi::Functional::details::isLegacy
inlineconstexpr
Initial value:
=
std::is_base_of_v<Gaudi::details::LegacyAlgorithmAdapter, details::BaseClass_t<Traits>>

Definition at line 466 of file details.h.