LocalGuidance
A library that generates velocity references to follow a path.
CompileTimeMap.hpp File Reference
#include <cassert>
#include <functional>
#include <stdexcept>
#include <string>
#include <type_traits>
#include <typeinfo>
#include <vector>
#include <std_utils/containers/CompileTimeSet.hpp>
Include dependency graph for CompileTimeMap.hpp:
This graph shows which files directly or indirectly include this file:

Classes

struct  std_utils::KeyValueType< KeyType_, ValueType_ >
 Defines the types (e.g. int, myEnum) for a compile-time map (ctm) key-value pair. Functions as a base class to KeyValuePair. Used to check the validity of the key-value pairs of the ctm. More...
 
struct  std_utils::KeyValuePair< KeyType_, ValueType_, Key_, Value_ >
 Defines the compile time map (ctm) key-value pairs. Ctm consist of a set of key-value pairs. More...
 
class  std_utils::CompileTimeMap< REST_ >
 Defines the compile time map (ctm) as a variadic template. More...
 
class  std_utils::CompileTimeMap< KeyType_, ValueType_, REST_... >
 Defines the compile time map (ctm) that maps from KeyType_ to ValueType_ as a variadic template. More...
 
class  std_utils::CompileTimeMap< KeyType_, ValueType_, KeyValueType_, REST_... >
 Defines the compile time map (ctm) that maps from KeyType_ to ValueType_ but has wrong key-value pairs. More...
 
class  std_utils::CompileTimeMap< KeyType_, ValueType_, KeyValuePair< KeyType_, ValueType_, Key_, Value_ >, REST_... >
 
struct  std_utils::is_compile_time_map< REST_ >
 isCompileTimeMap false type More...
 
struct  std_utils::is_compile_time_map< CompileTimeMap< REST_... > >
 isCompileTimeMap true type More...
 
struct  std_utils::ctm_concatenate< KeyType_, ValueType_, Map1_, Map2_ >
 Default implementation of map concatenation. More...
 
struct  std_utils::ctm_concatenate< KeyType_, ValueType_, CompileTimeMap< KeyType_, ValueType_, Kv1_... >, CompileTimeMap< KeyType_, ValueType_, Kv2_... > >
 Template specialization for CompileTimeMaps of same KV-type. More...
 
struct  std_utils::ctm_insert_back< KeyType_, ValueType_, Map_, Kv_ >
 Default implementation of back insertion of a kv-pair into a map. More...
 
struct  std_utils::ctm_insert_back< KeyType_, ValueType_, CompileTimeMap< KeyType_, ValueType_, Kv_... >, KeyValuePair< KeyType_, ValueType_, key, value > >
 Template specialization for CompileTimeMap with same KV Types as KeyValuePair. More...
 
struct  std_utils::ctm_insert_front< KeyType_, ValueType_, Map_, Kv_ >
 Default implementation of front insertion of a kv-pair into a map. More...
 
struct  std_utils::ctm_insert_front< KeyType_, ValueType_, CompileTimeMap< KeyType_, ValueType_, Kv_... >, KeyValuePair< KeyType_, ValueType_, key, value > >
 Template specialization for CompileTimeMap with same KV Types as KeyValuePair. More...
 
struct  std_utils::ctm_erase< KeyType_, ValueType_, Map_, erase_key >
 Default implementation of erasing a kv-pair from a map. More...
 
struct  std_utils::ctm_erase< KeyType_, ValueType_, CompileTimeMap< KeyType_, ValueType_, KV_... >, erase_key >
 Template specialization for CompileTimeMap with same KeyType as erase_key (recursion termination) More...
 
struct  std_utils::ctm_erase< KeyType_, ValueType_, CompileTimeMap< KeyType_, ValueType_, KeyValuePair< KeyType_, ValueType_, key, value >, KV_... >, erase_key >
 Template specialization for CompileTimeMap with same KeyType as erase_key. More...
 
struct  std_utils::ctm_add_to_values< KeyType_, ValueType_, Map_, summand >
 Default implementation of adding a given summand to all values in the map. More...
 
struct  std_utils::ctm_add_to_values< KeyType_, ValueType_, CompileTimeMap< KeyType_, ValueType_ >, summand >
 Template specialization for CompileTimeMap with same ValueType as summand (recursion termination) More...
 
struct  std_utils::ctm_add_to_values< KeyType_, ValueType_, CompileTimeMap< KeyType_, ValueType_, KeyValuePair< KeyType_, ValueType_, Key_, Value_ >, Kv_... >, summand >
 Template specialization for CompileTimeMap with same ValueType as summand. More...
 
struct  std_utils::ctm_from_sets< KeyType_, ValueType_, KeySet_, ValueSet_ >
 Default implementation of creating a map out of two sets. More...
 
struct  std_utils::ctm_from_sets< KeyType_, ValueType_, CompileTimeSet< KeyType_ >, CompileTimeSet< ValueType_ > >
 Template specialization for CompileTimeSets with proper KeyType_/ValueType_ (Recursion termination) More...
 
struct  std_utils::ctm_from_sets< KeyType_, ValueType_, CompileTimeSet< KeyType_, key, keys... >, CompileTimeSet< ValueType_, value, values... > >
 Template specialization for CompileTimeSets with proper KeyType_/ValueType_. More...
 
struct  std_utils::ctm_transform< TransformedKeyType_, TransformedValueType_, Map_, KeyMap_, ValueMap_ >
 Default implementation of transforming map to different key-value types. More...
 
struct  std_utils::ctm_transform< TransformedKeyType_, TransformedValueType_, CompileTimeMap< KeyType_, ValueType_ >, CompileTimeMap< KeyType_, TransformedKeyType_, Keys_... >, CompileTimeMap< ValueType_, TransformedValueType_, Values_... > >
 Template specialization for proper KeyMap_ and ValueMap_ (recursion termination) More...
 
struct  std_utils::ctm_transform< TransformedKeyType_, TransformedValueType_, CompileTimeMap< KeyType_, ValueType_, KeyValuePair< KeyType_, ValueType_, Key_, Value_ >, KV_... >, CompileTimeMap< KeyType_, TransformedKeyType_, Keys_... >, CompileTimeMap< ValueType_, TransformedValueType_, Values_... > >
 Template specialization for proper KeyMap_ and ValueMap_. More...
 
struct  std_utils::ctm_transform< TransformedKeyType_, ValueType_, CompileTimeMap< KeyType_, ValueType_ >, CompileTimeMap< KeyType_, TransformedKeyType_, Keys_... >, void >
 Template specialization for proper KeyMap_ and empty ValueMap_ (recursion termination) More...
 
struct  std_utils::ctm_transform< TransformedKeyType_, ValueType_, CompileTimeMap< KeyType_, ValueType_, KeyValuePair< KeyType_, ValueType_, Key_, Value_ >, KV_... >, CompileTimeMap< KeyType_, TransformedKeyType_, Keys_... >, void >
 Template specialization for proper KeyMap_ and empty ValueMap_. More...
 
struct  std_utils::ctm_transform< KeyType_, TransformedValueType_, CompileTimeMap< KeyType_, ValueType_ >, void, CompileTimeMap< ValueType_, TransformedValueType_, Values_... > >
 Template specialization for empty KeyMap_ and proper ValueMap_ (recursion termination) More...
 
struct  std_utils::ctm_transform< KeyType_, TransformedValueType_, CompileTimeMap< KeyType_, ValueType_, KeyValuePair< KeyType_, ValueType_, Key_, Value_ >, KV_... >, void, CompileTimeMap< ValueType_, TransformedValueType_, Values_... > >
 Template specialization for empty KeyMap_ and proper ValueMap_. More...
 
struct  std_utils::ctm_combine< KeyType_, ValueType_, Map1_, Map2_, Map1Keys_, Map2Keys_, Map1Values_, Map2Values_ >
 Default implementation of combining two map of different key-value types. More...
 
struct  std_utils::ctm_combine< KeyType_, ValueType_, CompileTimeMap< KeyType1_, ValueType1_, KV1_... >, CompileTimeMap< KeyType2_, ValueType2_, KV2_... >, CompileTimeMap< KeyType1_, KeyType_, KVKeys1_... >, CompileTimeMap< KeyType2_, KeyType_, KVKeys2_... >, CompileTimeMap< ValueType1_, ValueType_, KVValues1_... >, CompileTimeMap< ValueType2_, ValueType_, KVValues2_... > >
 Template specialization for proper KeyMaps and ValueMaps. More...
 
struct  std_utils::ctm_combine< KeyType_, ValueType_, CompileTimeMap< KeyType1_, ValueType_, KV1_... >, CompileTimeMap< KeyType2_, ValueType_, KV2_... >, CompileTimeMap< KeyType1_, KeyType_, KVKeys1_... >, CompileTimeMap< KeyType2_, KeyType_, KVKeys2_... >, void, void >
 Template specialization for proper KeyMaps and empty ValueMaps. More...
 
struct  std_utils::ctm_from_subenum< Enum_, SubEnum_, Offset_, Skip_ >
 Default implementation of combining two map of different key-value types. More...
 
struct  std_utils::ctm_invert< InvertedKeyType_, InvertedValueType_, Map_ >
 Default implementation of inverting a unique map. More...
 
struct  std_utils::ctm_invert< InvertedKeyType_, InvertedValueType_, CompileTimeMap< InvertedValueType_, InvertedKeyType_ > >
 Template specialization for CompileTimeMap with proper KeyType_ and ValueType_. More...
 
struct  std_utils::ctm_invert< InvertedKeyType_, InvertedValueType_, CompileTimeMap< InvertedValueType_, InvertedKeyType_, KeyValuePair< InvertedValueType_, InvertedKeyType_, InvertedValue_, InvertedKey_ >, Kv_... > >
 Template specialization for CompileTimeMap with proper KeyType_ and ValueType_. More...
 

Namespaces

 std_utils
 

Typedefs

template<typename KeyType_ , typename ValueType_ , typename Map1_ , typename Map2_ >
using std_utils::ctm_concatenate_t = typename ctm_concatenate< KeyType_, ValueType_, Map1_, Map2_ >::type
 Helper. More...
 
template<typename KeyType_ , typename ValueType_ , typename Map_ , typename Kv_ >
using std_utils::ctm_insert_back_t = typename ctm_insert_back< KeyType_, ValueType_, Map_, Kv_ >::type
 Helper. More...
 
template<typename KeyType_ , typename ValueType_ , typename Map_ , typename Kv_ >
using std_utils::ctm_insert_front_t = typename ctm_insert_front< KeyType_, ValueType_, Map_, Kv_ >::type
 Helper. More...
 
template<typename KeyType_ , typename ValueType_ , typename Map_ , KeyType_ erase_key>
using std_utils::ctm_erase_t = typename ctm_erase< KeyType_, ValueType_, Map_, erase_key >::type
 Helper. More...
 
template<typename KeyType_ , typename ValueType_ , typename Map_ , ValueType_ summand>
using std_utils::ctm_add_to_values_t = typename ctm_add_to_values< KeyType_, ValueType_, Map_, summand >::type
 Helper. More...
 
template<typename KeyType_ , typename ValueType_ , typename KeySet_ , typename ValueSet_ >
using std_utils::ctm_from_sets_t = typename ctm_from_sets< KeyType_, ValueType_, KeySet_, ValueSet_ >::type
 Helper. More...
 
template<typename TransformedKeyType_ , typename TransformedValueType_ , typename Map_ , typename KeyMap_ , typename ValueMap_ = void>
using std_utils::ctm_transform_t = typename ctm_transform< TransformedKeyType_, TransformedValueType_, Map_, KeyMap_, ValueMap_ >::type
 Helper. More...
 
template<typename KeyType_ , typename ValueType_ , typename Map1_ , typename Map2_ , typename Map1Keys_ , typename Map2Keys_ , typename Map1Values_ = void, typename Map2Values_ = void>
using std_utils::ctm_combine_t = typename ctm_combine< KeyType_, ValueType_, Map1_, Map2_, Map1Keys_, Map2Keys_, Map1Values_, Map2Values_ >::type
 Helper. More...
 
template<typename Enum_ , typename SubEnum_ , std::size_t Offset_ = 0, std::size_t Skip_ = 0>
using std_utils::ctm_from_subenum_t = typename ctm_from_subenum< Enum_, SubEnum_, Offset_, Skip_ >::type
 Helper. More...
 
template<typename InvertedKeyType_ , typename InvertedValueType_ , typename Map_ >
using std_utils::ctm_invert_t = typename ctm_invert< InvertedKeyType_, InvertedValueType_, Map_ >::type
 Helper. More...
 

Detailed Description

Author
Gabriel Hottiger
Date
Apr, 2018