| The Gaudi Framework v28r2-patches (bc4ad17a)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

Classes | Namespaces | Typedefs | Functions | Variables
FunctionalDetails.h File Reference
`#include <type_traits>`
`#include <stdexcept>`
`#include <cassert>`
`#include "GaudiKernel/DataObjectHandle.h"`
`#include "GaudiKernel/AnyDataHandle.h"`
`#include "GaudiKernel/GaudiException.h"`
`#include "GaudiAlg/GaudiAlgorithm.h"`
`#include "boost/optional.hpp"`
`#include <range/v3/view/zip.hpp>`
`#include <range/v3/view/const.hpp>`
Include dependency graph for FunctionalDetails.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::insert_t
struct | Gaudi::Functional::details::deref_t
struct | Gaudi::Functional::details::details2::remove_optional< T >
struct | Gaudi::Functional::details::details2::remove_optional< boost::optional< T > >
struct | Gaudi::Functional::details::is_optional< T >
struct | Gaudi::Functional::details::is_optional< boost::optional< T > >
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::detail2::void_t_<... >
struct | Gaudi::Functional::details::detail2::detector< Default, AlwaysVoid, Op, Args >
| Implementation of the detection idiom (negative case). More...
struct | Gaudi::Functional::details::detail2::detector< Default, void_t< Op< Args... > >, Op, Args... >
| Implementation of the detection idiom (positive case). More...
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< void, std::tuple< In... >, Traits_ >
class | Gaudi::Functional::details::DataHandleMixin< std::tuple< Out... >, void, Traits_ >

## Namespaces
| Gaudi
| Helper functions to set/get the application return code.
| Gaudi::Functional
| Gaudi::Functional::details
| Gaudi::Functional::details::zip
| Gaudi::Functional::details::details2
| Gaudi::Functional::details::detail2

## Typedefs
template<typename T >
using | Gaudi::Functional::details::remove_optional_t = typename details2::remove_optional< T >::type
template<typename... T>
using | Gaudi::Functional::details::detail2::void_t = typename void_t_< T... >::type
template<typename Default , template< typename... > class Op, typename... Args>
using | Gaudi::Functional::details::detected_or_t = typename detail2::detector< Default, void, Op, Args... >::type
template<template< typename... > class Default, template< typename... > class Op, typename Tr , typename T >
using | Gaudi::Functional::details::detected_or_t_ = detected_or_t< Default< Tr, T >, Op, Tr, T >
template<typename Tr >
using | Gaudi::Functional::details::detail2::BaseClass_ = typename Tr::BaseClass
template<typename Tr , typename T >
using | Gaudi::Functional::details::detail2::defaultHandle_ = typename std::conditional< std::is_base_of< DataObject, T >::value, DataObjectHandle< T >, AnyDataHandle< T >>::type
template<typename Tr , typename T >
using | Gaudi::Functional::details::detail2::OutputHandle_ = typename Tr::template OutputHandle< T >
template<typename Tr , typename T >
using | Gaudi::Functional::details::detail2::InputHandle_ = typename Tr::template InputHandle< T >
template<typename Tr >
using | Gaudi::Functional::details::BaseClass_t = detected_or_t< GaudiAlgorithm, detail2::BaseClass_, Tr >
template<typename Tr , typename T >
using | Gaudi::Functional::details::OutputHandle_t = detected_or_t_< detail2::defaultHandle_, detail2::OutputHandle_, Tr, T >
template<typename Tr , typename T >
using | Gaudi::Functional::details::InputHandle_t = detected_or_t_< detail2::defaultHandle_, detail2::InputHandle_, Tr, T >
template<std::size_t N, typename Tuple >
using | Gaudi::Functional::details::details2::element_t = typename std::tuple_element< N, Tuple >::type

## Functions
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...
template<typename T >
constexpr std::add_const< T >::type & | Gaudi::Functional::details::as_const (T &t) noexcept
template<typename T >
void | Gaudi::Functional::details::as_const (T &&t)=delete
template<typename Out1 , typename Out2 , typename = typename std::enable_if<std::is_constructible<Out1,Out2>::value>::type>
Out1 * | Gaudi::Functional::details::put (DataObjectHandle< Out1 > &out_handle, Out2 &&out)
template<typename Out1 , typename Out2 , typename = typename std::enable_if<std::is_constructible<Out1,Out2>::value>::type>
void | Gaudi::Functional::details::put (AnyDataHandle< Out1 > &out_handle, Out2 &&out)
template<typename OutHandle , typename Out >
void | Gaudi::Functional::details::put (OutHandle &out_handle, boost::optional< Out > &&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 Tuple , typename KeyValues , std::size_t... I>
Tuple | Gaudi::Functional::details::details2::make_tuple_of_handles_helper (IDataHandleHolder *o, const KeyValues &initvalue, Gaudi::DataHandle::Mode m, std::index_sequence< I... >)
template<typename KeyValues , typename Properties , std::size_t... I>
void | Gaudi::Functional::details::details2::declare_tuple_of_properties_helper (GaudiAlgorithm *owner, const KeyValues &inputs, Properties &props, std::index_sequence< I... >)
template<typename Tuple , typename KeyValues >
Tuple | Gaudi::Functional::details::make_tuple_of_handles (IDataHandleHolder *owner, const KeyValues &initvalue, Gaudi::DataHandle::Mode mode)
template<typename KeyValues , typename Properties >
void | Gaudi::Functional::details::declare_tuple_of_properties (GaudiAlgorithm *owner, const KeyValues &inputs, Properties &props)
template<typename Handles >
Handles | Gaudi::Functional::details::make_vector_of_handles (IDataHandleHolder *owner, const std::vector< std::string > &init, Gaudi::DataHandle::Mode mode)
template<typename Fun , typename Container , typename... Args>
constexpr void | Gaudi::Functional::details::apply (const Fun &, Container &, Args...)
template<typename Fun , typename Container >
auto | Gaudi::Functional::details::apply (const Fun &fun, Container &c) -> decltype(fun(c), void())

## Variables
constexpr struct Gaudi::Functional::details::insert_t | Gaudi::Functional::details::insert
constexpr struct Gaudi::Functional::details::deref_t | Gaudi::Functional::details::deref