The Gaudi Framework  master (e98cfcff)
Loading...
Searching...
No Matches
details.h File Reference
#include <Gaudi/Algorithm.h>
#include <GaudiKernel/Algorithm.h>
#include <GaudiKernel/DataObjectHandle.h>
#include <GaudiKernel/FunctionalFilterDecision.h>
#include <GaudiKernel/GaudiException.h>
#include <GaudiKernel/IBinder.h>
#include <algorithm>
#include <array>
#include <cassert>
#include <concepts>
#include <functional>
#include <initializer_list>
#include <iterator>
#include <memory>
#include <optional>
#include <source_location>
#include <string>
#include <tuple>
#include <type_traits>
#include <utility>
#include <vector>
#include "zip.h"
#include "deprecated.h"
Include dependency graph for details.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Gaudi::Functional::details::details2::value_type_of< T >
 
struct  Gaudi::Functional::details::details2::value_type_of< T >
 
struct  Gaudi::Functional::details::invoke_optionally_t
 
struct  Gaudi::Functional::details::insert_t
 
struct  Gaudi::Functional::details::deref_t
 
struct  Gaudi::Functional::details::details2::get_from_handle< In >
 
class  Gaudi::Functional::details::details2::indirect_iterator< Iterator >
 
class  Gaudi::Functional::details::vector_of_const_< Container >
 
class  Gaudi::Functional::details::HandleVector< Handle, I >
 
struct  Gaudi::Functional::details::HandleVector< Handle, I >::Payload
 
struct  Gaudi::Functional::details::vector_of_output_< T >
 
struct  Gaudi::Functional::details::vector_of_input_< T >
 
struct  Gaudi::Functional::details::handle_vector_input< Arg >
 
struct  Gaudi::Functional::details::handle_vector_input< vector_of_const_< T > >
 
struct  Gaudi::Functional::details::type_list< T >
 
struct  Gaudi::Functional::details::EventContextHandle
 
struct  Gaudi::Functional::details::detail2::BaseClass< Tr, Default >
 
struct  Gaudi::Functional::details::detail2::BaseClass< Tr, Default >
 
struct  Gaudi::Functional::details::detail2::OutputHandle< T, Tr, Default >
 
struct  Gaudi::Functional::details::detail2::OutputHandle< T, Tr, Default >
 
struct  Gaudi::Functional::details::detail2::OutputHandleFor< Tr, Default >
 
struct  Gaudi::Functional::details::detail2::OutputHandle< vector_of_output_< T >, Tr, Default >
 
struct  Gaudi::Functional::details::detail2::InputHandle< T, Tr, Default >
 
struct  Gaudi::Functional::details::detail2::InputHandle< T, Tr, Default >
 
struct  Gaudi::Functional::details::detail2::InputHandleFor< Tr, Default >
 
struct  Gaudi::Functional::details::detail2::InputHandle< vector_of_input_< T >, Tr, Default >
 
struct  Gaudi::Functional::details::detail2::DefaultInputHandle< T >
 
struct  Gaudi::Functional::details::detail2::DefaultInputHandle< T >
 
struct  Gaudi::Functional::details::detail2::DefaultInputHandle< EventContext >
 
struct  Gaudi::Functional::details::LocationSpec
 
struct  Gaudi::Functional::details::LocationSpecFor< Arg >
 
struct  Gaudi::Functional::details::LocationSpecFor< EventContext >
 
struct  Gaudi::Functional::details::LocationSpecFor< vector_of_input_< T > >
 
struct  Gaudi::Functional::details::LocationSpecFor< vector_of_output_< T > >
 
struct  Gaudi::Functional::details::TailLocationSpecs< Args >
 
struct  Gaudi::Functional::details::TailLocationSpecs< First, Rest... >
 
struct  Gaudi::Functional::details::first_or_empty< Tuple >
 
struct  Gaudi::Functional::details::first_or_empty< std::tuple< First, Rest... > >
 
class  Gaudi::Functional::details::LocationSpecs< Tuple >
 
class  Gaudi::Functional::details::DataHandleMixin< type_list< Out... >, type_list< In... >, Traits_ >
 
class  Gaudi::Functional::details::DataHandleMixin< type_list< void >, InputSpec, Traits_ >
 

Namespaces

namespace  Gaudi
 This file provides a Grammar for the type Gaudi::Accumulators::Axis It allows to use that type from python with a format liks : ( nbins, min, max, title ) where title can be ommited.
 
namespace  Gaudi::Functional
 
namespace  Gaudi::Functional::details
 
namespace  Gaudi::Functional::details::details2
 
namespace  Gaudi::Functional::details::detail2
 

Concepts

concept  Gaudi::Functional::details::is_optional
 
concept  Gaudi::Functional::details::has_handle_vector_input
 
concept  Gaudi::Functional::details::location_vector_handle
 
concept  Gaudi::Functional::details::detail2::algtool_interface
 

Typedefs

template<typename T>
using Gaudi::Functional::details::remove_optional_t = typename details2::value_type_of<T>::type
 
template<typename Value, auto N>
using Gaudi::Functional::details::RepeatValues_ = decltype( get_values_helper<Value>( std::make_index_sequence<N>() ) )
 
template<typename Arg>
using Gaudi::Functional::details::handle_vector_input_t = typename handle_vector_input<Arg>::type
 
template<typename Tr>
using Gaudi::Functional::details::detail2::BaseClass_t = typename Tr::BaseClass
 
template<typename T>
using Gaudi::Functional::details::detail2::DefaultInputHandle_t = typename DefaultInputHandle<T>::type
 
template<typename Tr, typename Default = Gaudi::Algorithm>
using Gaudi::Functional::details::BaseClass_t = detail2::BaseClass<Tr, Default>::type
 
template<typename Tr, typename T>
using Gaudi::Functional::details::OutputHandle_t = typename detail2::OutputHandle<T, Tr, DataObjectWriteHandle>::type
 
template<typename Tr, typename T>
using Gaudi::Functional::details::InputHandle_t = typename detail2::InputHandle<T, Tr, detail2::DefaultInputHandle_t>::type
 
template<typename Arg>
using Gaudi::Functional::details::LocationSpec_t = typename LocationSpecFor<std::remove_cvref_t<Arg>>::type
 
template<typename... Args>
using Gaudi::Functional::details::LocationSpecs_t = std::tuple<LocationSpec_t<Args>...>
 
template<typename... Args>
using Gaudi::Functional::details::TailLocationSpecs_t = typename TailLocationSpecs<Args...>::type
 
template<typename Tuple>
using Gaudi::Functional::details::first_or_empty_t = typename first_or_empty<Tuple>::type
 
template<typename Outputs, typename Traits_, typename... Args>
using Gaudi::Functional::details::DataHandleVectorMixin = DataHandleMixin<Outputs, type_list<handle_vector_input_t<Args>...>, Traits_>
 

Functions

std::vector< DataObjIDGaudi::Functional::details::to_DataObjID (const std::vector< std::string > &in)
 
template<typename Value, std::size_t... I>
auto Gaudi::Functional::details::get_values_helper (std::index_sequence< I... >)
 
template<std::derived_from< DataObject > Out1, std::convertible_to< Out1 > Out2>
auto Gaudi::Functional::details::put (const DataObjectHandle< Out1 > &out_handle, Out2 &&out)
 
template<typename Out1, std::convertible_to< Out1 > Out2>
auto Gaudi::Functional::details::put (const DataObjectHandle< AnyDataWrapper< Out1 > > &out_handle, Out2 &&out)
 
template<template< typename > class Handle, typename Out, typename Value>
auto Gaudi::Functional::details::put (const HandleVector< Handle, Out > &out_handle, Value &&out)
 
template<typename OutHandle, typename OptOut>
requires ( is_optional<OptOut> )
void Gaudi::Functional::details::put (const OutHandle &out_handle, OptOut &&out)
 
template<typename Vectors>
decltype(auto) Gaudi::Functional::details::getLocations (Vectors const &vectors, unsigned int i)
 
template<typename F>
StatusCode Gaudi::Functional::details::execute (CommonMessagingBase const &alg, F &&f)
 
template<typename Tuple, typename Spec, std::size_t... I>
Tuple Gaudi::Functional::details::location_specs_tuple (std::initializer_list< Spec > specs, std::index_sequence< I... >, const char *component)
 
template<typename Handle, typename Algo>
auto Gaudi::Functional::details::get (const Handle &handle, const Algo &, const EventContext &) -> decltype(details::deref(handle.get()))
 
template<typename Algo>
const EventContextGaudi::Functional::details::get (const EventContextHandle &, const Algo &, const EventContext &ctx)
 
template<template< typename > class Handle, typename In, typename Algo>
auto Gaudi::Functional::details::get (const HandleVector< Handle, In > &handle, const Algo &, const EventContext &ctx)
 
template<typename IFace, typename Algo>
auto Gaudi::Functional::details::get (const ToolHandle< Gaudi::Interface::Bind::IBinder< IFace > > &handle, const Algo &, const EventContext &ctx)
 
template<typename Handle>
auto Gaudi::Functional::details::getKey (const Handle &h) -> decltype(h.objKey())
 
template<template< typename > class Handle, typename T>
auto Gaudi::Functional::details::getKey (const HandleVector< Handle, T > &h) -> decltype(h.locations())
 
template<typename OutHandles, typename Outputs>
void Gaudi::Functional::details::put_results (const OutHandles &out_handles, Outputs &&outputs)
 
template<typename Algorithm, typename OutHandles = std::tuple<>>
requires ( std::tuple_size_v<OutHandles> <= 1 )
StatusCode Gaudi::Functional::details::execute_single_output (const Algorithm &algo, const EventContext &ctx, const OutHandles &out_handles={})
 
template<typename Algorithm, typename OutHandles>
StatusCode Gaudi::Functional::details::execute_outputs (const Algorithm &algo, const EventContext &ctx, const OutHandles &out_handles)
 
template<typename Algorithm, typename OutHandles>
StatusCode Gaudi::Functional::details::execute_filtered_outputs (const Algorithm &algo, const EventContext &ctx, const OutHandles &out_handles)
 

Variables

constexpr struct Gaudi::Functional::details::invoke_optionally_t Gaudi::Functional::details::invoke_optionally
 
constexpr struct Gaudi::Functional::details::insert_t Gaudi::Functional::details::insert
 
constexpr struct Gaudi::Functional::details::deref_t Gaudi::Functional::details::deref
 
template<typename Arg>
constexpr bool Gaudi::Functional::details::is_handle_vector_input_v = handle_vector_input<Arg>::is_range
 
template<typename T>
constexpr bool Gaudi::Functional::details::is_event_context_v = std::is_same_v<std::remove_cvref_t<T>, EventContext>
 
template<typename Tuple, typename T>
constexpr bool Gaudi::Functional::details::tuple_elements_are_v = false
 
template<typename T, typename... Elements>
constexpr bool Gaudi::Functional::details::tuple_elements_are_v< std::tuple< Elements... >, T > = ( std::same_as<Elements, T> && ... )
 
template<typename Tuple, typename T>
constexpr bool Gaudi::Functional::details::tuple_elements_constructible_from_v = false
 
template<typename T, typename... Elements>
constexpr bool Gaudi::Functional::details::tuple_elements_constructible_from_v< std::tuple< Elements... >, T >
 
template<typename... Args>
constexpr bool Gaudi::Functional::details::first_is_event_context_v = false
 
template<typename First, typename... Rest>
constexpr bool Gaudi::Functional::details::first_is_event_context_v< First, Rest... > = is_event_context_v<First>
 
template<bool starts_with_event_context, typename InputSpecTuple>
constexpr auto Gaudi::Functional::details::empty_input_specs
 
template<typename Traits>
constexpr bool Gaudi::Functional::details::isLegacy