29 #ifndef ETL_TYPE_LOOKUP_INCLUDED
30 #define ETL_TYPE_LOOKUP_INCLUDED
36 #include "static_assert.h"
38 #include "null_type.h"
44 #error THIS HEADER IS A GENERATOR. DO NOT INCLUDE.
56 template <
typename T,
int ID_>
70 template <
typename T1,
typename T2>
77 #if ETL_CPP11_SUPPORTED && !defined(ETL_TYPE_SELECT_FORCE_CPP03)
81 template <
typename... TTypes>
90 template <
size_t ID,
typename T1,
typename... TRest>
91 struct type_from_id_helper
95 typename type_from_id_helper<ID, TRest...>::type>::type;
99 template <
size_t ID,
typename T1>
100 struct type_from_id_helper<ID, T1>
115 using type =
typename type_from_id_helper<ID, TTypes...>::type;
120 #if ETL_CPP14_SUPPORTED
122 using type_from_id_t =
typename type_from_id<ID>::type;
130 template <
typename T,
typename T1,
typename... TRest>
131 struct id_from_type_helper
137 template <
typename T,
typename T1>
138 struct id_from_type_helper<T, T1>
148 template <
typename T>
151 static constexpr
size_t value = id_from_type_helper<T, TTypes...>::value;
153 static_assert(value != UNKNOWN,
"Invalid type");
156 #if ETL_CPP17_SUPPORTED
157 template <
typename T>
158 static constexpr
size_t id_from_type_v = id_from_type<T>::value;
162 template <
typename T>
163 static unsigned int get_id_from_type(
const T&)
165 return get_id_from_type<T>();
169 template <
typename T>
170 static unsigned int get_id_from_type()
172 return id_from_type<T>::value;
179 template <
typename... TTypes>
180 class type_type_lookup
187 template <
typename T,
typename T1,
typename... TRest>
188 struct type_from_type_helper
192 typename type_from_type_helper<T, TRest...>::type>::type;
195 template <
typename T,
typename T1>
196 struct type_from_type_helper<T, T1>
205 template <
typename T>
211 using type =
typename type_from_type_helper<T, TTypes...>::type;
216 #if ETL_CPP14_SUPPORTED
218 template <
typename T>
219 using type_from_type_t =
typename type_from_type<T>::type;
228 template <
typename T1,
283 template <
typename T>
305 (
unsigned int) UNKNOWN
308 ETL_STATIC_ASSERT(((
unsigned int)value != (
unsigned int)UNKNOWN),
"Invalid type");
312 template <
typename T>
313 static unsigned int get_id_from_type(
const T&)
315 return get_id_from_type<T>();
319 template <
typename T>
320 static unsigned int get_id_from_type()
322 return id_from_type<T>::value;
329 template <
typename T1,
350 template <
typename T>
Definition: constant.h:45
Definition: null_type.h:39
Definition: integral_limits.h:54
conditional
Definition: type_traits_generator.h:1202
is_same
Definition: type_traits_generator.h:981
Definition: absolute.h:37
Definition: type_lookup.h:285
Definition: type_lookup.h:251
Definition: type_lookup.h:245
The type/id pair type to use for type/id lookup template parameters.
Definition: type_lookup_generator.h:70
Definition: type_lookup.h:352
Definition: type_lookup.h:346
The type/type pair type to use for type/type lookup template parameters.
Definition: type_lookup_generator.h:84