The Gaudi Framework  master (37c0b60a)
details.h File Reference
#include <Gaudi/Algorithm.h>
#include <GaudiKernel/Algorithm.h>
#include <GaudiKernel/DataObjectHandle.h>
#include <GaudiKernel/GaudiException.h>
#include <GaudiKernel/IBinder.h>
#include <GaudiKernel/ThreadLocalContext.h>
#include <GaudiKernel/detected.h>
#include <cassert>
#include <range/v3/version.hpp>
#include <range/v3/view/const.hpp>
#include <range/v3/view/zip.hpp>
#include <sstream>
#include <type_traits>
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::invoke_optionally_t
 
struct  Gaudi::Functional::details::insert_t
 
struct  Gaudi::Functional::details::deref_t
 
struct  Gaudi::Functional::details::details2::is_gaudi_range< T >
 
struct  Gaudi::Functional::details::details2::is_gaudi_range< Gaudi::Range_< T, IT > >
 
struct  Gaudi::Functional::details::details2::is_gaudi_range< Gaudi::NamedRange_< T, IT > >
 
struct  Gaudi::Functional::details::details2::is_gaudi_range< std::optional< Gaudi::NamedRange_< T, IT > > >
 
struct  Gaudi::Functional::details::details2::get_from_handle< In >
 
class  Gaudi::Functional::details::vector_of_const_< Container >
 
class  Gaudi::Functional::details::vector_of_const_< Container >::iterator
 
struct  Gaudi::Functional::details::filter_evtcontext_t< In >
 
struct  Gaudi::Functional::details::filter_evtcontext_t< EventContext, In... >
 
class  Gaudi::Functional::details::DataHandleMixin< OutputSpec, InputSpec, Traits_ >
 
class  Gaudi::Functional::details::DataHandleMixin< std::tuple< Out... >, std::tuple< In... >, Traits_ >
 
class  Gaudi::Functional::details::DataHandleMixin< std::tuple<>, std::tuple<>, Traits_ >
 
class  Gaudi::Functional::details::DataHandleMixin< std::tuple<>, std::tuple< In... >, Traits_ >
 
class  Gaudi::Functional::details::DataHandleMixin< std::tuple< void >, std::tuple<>, Traits_ >
 
class  Gaudi::Functional::details::DataHandleMixin< std::tuple< Out... >, std::tuple<>, Traits_ >
 

Namespaces

 ranges
 
 ranges::views
 
 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.
 
 Gaudi::Functional
 
 Gaudi::Functional::details
 
 Gaudi::Functional::details::zip
 
 Gaudi::Functional::details::details2
 
 Gaudi::Functional::details::detail2
 

Macros

#define GF_SUPPRESS_SPURIOUS_CLANG_WARNING_BEGIN
 
#define GF_SUPPRESS_SPURIOUS_CLANG_WARNING_END
 
#define GAUDI_FUNCTIONAL_CONSTRUCTOR_USES_TUPLE
 
#define GAUDI_FUNCTIONAL_MAKE_VECTOR_OF_HANDLES_USES_DATAOBJID
 

Typedefs

template<typename T >
using Gaudi::Functional::details::details2::is_optional_ = decltype(std::declval< T >().has_value(), std::declval< T >().value())
 
template<typename T >
using Gaudi::Functional::details::details2::value_type_of_t = typename T::value_type
 
template<typename Arg >
using Gaudi::Functional::details::require_is_optional = std::enable_if_t< is_optional_v< Arg > >
 
template<typename Arg >
using Gaudi::Functional::details::require_is_not_optional = std::enable_if_t<!is_optional_v< Arg > >
 
template<typename T >
using Gaudi::Functional::details::remove_optional_t = std::conditional_t< is_optional_v< T >, Gaudi::cpp17::detected_t< details2::value_type_of_t, T >, T >
 
template<typename Value , auto N>
using Gaudi::Functional::details::RepeatValues_ = decltype(get_values_helper< Value >(std::make_index_sequence< N >()))
 
template<typename Tr >
using Gaudi::Functional::details::detail2::BaseClass_t = typename Tr::BaseClass
 
template<typename Tr , typename T >
using Gaudi::Functional::details::detail2::OutputHandle_t = typename Tr::template OutputHandle< T >
 
template<typename Tr , typename T >
using Gaudi::Functional::details::detail2::InputHandle_t = typename Tr::template InputHandle< T >
 
template<typename T >
using Gaudi::Functional::details::detail2::ToolHandle_t = ToolHandle< Gaudi::Interface::Bind::IBinder< std::decay_t< T > >>
 
template<typename T >
using Gaudi::Functional::details::detail2::DefaultInputHandle = std::conditional_t< is_tool_v< T >, ToolHandle_t< T >, DataObjectReadHandle< T > >
 
template<typename Tr , typename Base = Gaudi::Algorithm>
using Gaudi::Functional::details::BaseClass_t = Gaudi::cpp17::detected_or_t< Base, detail2::BaseClass_t, Tr >
 
template<typename Tr , typename T >
using Gaudi::Functional::details::OutputHandle_t = Gaudi::cpp17::detected_or_t< DataObjectWriteHandle< T >, detail2::OutputHandle_t, Tr, T >
 
template<typename Tr , typename T >
using Gaudi::Functional::details::InputHandle_t = Gaudi::cpp17::detected_or_t< detail2::DefaultInputHandle< T >, detail2::InputHandle_t, Tr, T >
 
template<typename... In>
using Gaudi::Functional::details::filter_evtcontext = typename filter_evtcontext_t< In... >::type
 

Functions

template<typename OS , typename Arg >
void Gaudi::Functional::details::zip::printSizes (OS &out, Arg &&arg)
 Print the parameter. More...
 
template<typename OS , typename Arg , typename... Args>
void Gaudi::Functional::details::zip::printSizes (OS &out, Arg &&arg, Args &&... args)
 Print the parameters. More...
 
template<typename A >
bool Gaudi::Functional::details::zip::check_sizes (const A &) noexcept
 Resolve case there is only one container in the range. More...
 
template<typename A , typename B >
bool Gaudi::Functional::details::zip::check_sizes (const A &a, const B &b) noexcept
 Compare sizes of two containers. More...
 
template<typename A , typename B , typename... C>
bool Gaudi::Functional::details::zip::check_sizes (const A &a, const B &b, const C &... c) noexcept
 Compare sizes of 3 or more containers. More...
 
template<typename... Args>
decltype(auto) Gaudi::Functional::details::zip::verifySizes (Args &... args)
 Verify the data container sizes have the same sizes. More...
 
template<typename... Args>
decltype(auto) Gaudi::Functional::details::zip::range (Args &&... args)
 Zips multiple containers together to form a single range. More...
 
template<typename... Args>
decltype(auto) Gaudi::Functional::details::zip::const_range (Args &&... args)
 Zips multiple containers together to form a single const range. More...
 
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<typename Out1 , typename Out2 , typename = std::enable_if_t<std::is_constructible_v<Out1, Out2> && std::is_base_of_v<DataObject, Out1>>>
auto Gaudi::Functional::details::put (const DataObjectHandle< Out1 > &out_handle, Out2 &&out)
 
template<typename Out1 , typename Out2 , typename = std::enable_if_t<std::is_constructible_v<Out1, Out2>>>
auto Gaudi::Functional::details::put (const DataObjectHandle< AnyDataWrapper< Out1 >> &out_handle, Out2 &&out)
 
template<typename OutHandle , typename OptOut , typename = require_is_optional<OptOut>>
void Gaudi::Functional::details::put (const OutHandle &out_handle, OptOut &&out)
 
template<typename Container , typename Value >
void Gaudi::Functional::details::details2::push_back (Container &c, const Value &v, std::true_type)
 
template<typename Container , typename Value >
void Gaudi::Functional::details::details2::push_back (Container &c, const Value &v, std::false_type)
 
template<typename T >
T * Gaudi::Functional::details::details2::deref_if (T *const t, std::false_type)
 
template<typename T >
T & Gaudi::Functional::details::details2::deref_if (T *const t, std::true_type)
 
template<typename Handles >
Handles Gaudi::Functional::details::make_vector_of_handles (IDataHandleHolder *owner, const std::vector< DataObjID > &init)
 
template<typename Handle , typename Algo >
auto Gaudi::Functional::details::get (const Handle &handle, const Algo &, const EventContext &) -> decltype(details::deref(handle.get()))
 
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<typename Out , typename In , typename Tr >
void Gaudi::Functional::details::updateHandleLocation (DataHandleMixin< Out, In, Tr > &parent, const std::string &prop, const std::string &newLoc)
 
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)
 
template<typename Fun , typename Container , typename... Args>
constexpr void Gaudi::Functional::details::applyPostProcessing (const Fun &, Container &, Args...)
 
template<typename Fun , typename Container >
auto Gaudi::Functional::details::applyPostProcessing (const Fun &fun, Container &c) -> decltype(fun.postprocess(c), void())
 

Variables

template<typename Arg >
constexpr bool Gaudi::Functional::details::is_optional_v = Gaudi::cpp17::is_detected_v<details2::is_optional_, Arg>
 
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 T >
constexpr auto Gaudi::Functional::details::detail2::is_tool_v = std::is_base_of_v<IAlgTool, std::decay_t<T>>
 
template<typename Traits >
constexpr bool Gaudi::Functional::details::isLegacy
 

Macro Definition Documentation

◆ GAUDI_FUNCTIONAL_CONSTRUCTOR_USES_TUPLE

#define GAUDI_FUNCTIONAL_CONSTRUCTOR_USES_TUPLE

Definition at line 46 of file details.h.

◆ GAUDI_FUNCTIONAL_MAKE_VECTOR_OF_HANDLES_USES_DATAOBJID

#define GAUDI_FUNCTIONAL_MAKE_VECTOR_OF_HANDLES_USES_DATAOBJID

Definition at line 433 of file details.h.

◆ GF_SUPPRESS_SPURIOUS_CLANG_WARNING_BEGIN

#define GF_SUPPRESS_SPURIOUS_CLANG_WARNING_BEGIN

Definition at line 40 of file details.h.

◆ GF_SUPPRESS_SPURIOUS_CLANG_WARNING_END

#define GF_SUPPRESS_SPURIOUS_CLANG_WARNING_END

Definition at line 41 of file details.h.