Hedgehog  3.1.0
A library to generate hybrid pipeline workflow systems
Loading...
Searching...
No Matches
meta_functions.h File Reference
#include <iostream>
#include <tuple>
Include dependency graph for meta_functions.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  hh::tool::internals::PushFront< std::tuple< Vs... >, T >
 Definition of PushFront accepting a variadic as template parameter and the element to add. More...
 
struct  hh::tool::internals::SplitInput< Types, std::index_sequence< Indices... > >
 Definition of SplitInput splitting a tuple of type to get the input types. More...
 
struct  hh::tool::internals::SplitOutput< Types, delta, std::index_sequence< Indices... > >
 Base definition of SplitOutput_t splitting a tuple of type to get the output types. More...
 
struct  hh::tool::internals::Splitter< delimiter, Types >
 Metafunction splitting a variadic to input and output types at a specific delimiter. More...
 
struct  hh::tool::internals::HasType< T, std::tuple<> >
 Default definition of HasType if the tuple is empty. More...
 
struct  hh::tool::internals::HasType< T, std::tuple< Front, Ts... > >
 Definition of HasType if T is different than the front type of the variadic. More...
 
struct  hh::tool::internals::HasType< T, std::tuple< T, Ts... > >
 Definition of HasType if T is the same type as the front type of the variadic. More...
 
struct  hh::tool::internals::IntersectImpl< T1, T2, Size, Size >
 Definition of the implementation of the Intersect metafunction when arriving at the end of T1. More...
 
struct  hh::tool::internals::IntersectImpl< T1, T2, Index, Size >
 Base definition of the implementation of the Intersect metafunction. More...
 
struct  hh::tool::internals::Intersect< T1, T2 >
 Intersect metafunction creating a tuple of types that are in T1 and T2. More...
 

Namespaces

namespace  hh
 Hedgehog main namespace.
 
namespace  hh::tool
 Hedgehog tool namespace.
 
namespace  hh::tool::internals
 Hedgehog tool internals namespace.
 

Typedefs

template<typename Ts , typename T >
using hh::tool::internals::PushFront_t = typename PushFront< Ts, T >::Type
 Helper creating a tuple from a tuple Ts in wish we have added on front the type T.
 
template<typename Types , typename Indices >
using hh::tool::internals::SplitInput_t = typename SplitInput< Types, Indices >::Type
 Helper getting the input types in a tuple.
 
template<typename Types , size_t delta, typename Indices >
using hh::tool::internals::SplitOutput_t = typename SplitOutput< Types, delta, Indices >::Type
 Helper to output types of a tuple.
 
template<size_t delta, typename ... Types>
using hh::tool::Inputs = typename internals::Splitter< delta, Types... >::Inputs
 Helper getting the input types from a list of template types (variadic)
 
template<size_t delta, typename ... Types>
using hh::tool::Outputs = typename internals::Splitter< delta, Types... >::Outputs
 Helper getting the output types from a list of template types (variadic)
 
template<class Tuple1 , class Tuple2 >
using hh::tool::Intersect_t = typename internals::Intersect< Tuple1, Tuple2 >::type
 Helper getting the intersection of types between two type tuples.
 

Functions

template<typename T >
constexpr auto hh::tool::typeToStrView ()
 Create a string_view containing the type name.
 
template<typename T >
constexpr auto hh::tool::typeToStr ()
 Create a string containing the type name.
 

Variables

template<class T , class ... Ts>
constexpr bool hh::tool::isContainedIn_v = std::disjunction_v<std::is_same<T, Ts>...>
 Helper testing if a type T is in variadic Ts.
 
template<class T , class Tuple >
constexpr bool hh::tool::isContainedInTuple_v = std::tuple_size_v<Intersect_t<std::tuple<T>, Tuple>> == 1
 Helper testing if a type is in a tuple of types.