Horizon Official Technical Documentation
TypeList.hpp
Go to the documentation of this file.
1#ifndef HORIZON_CORE_STRUCTURES_TYPELIST_HPP
2#define HORIZON_CORE_STRUCTURES_TYPELIST_HPP
3
4class TypeNull;
5
6template<typename HEAD, typename TAIL>
7struct TypeList
8{
9 typedef HEAD Head;
10 typedef TAIL Tail;
11};
12
13#define TYPELIST_1(T1) \
14 TypeList<T1, TypeNull>
15#define TYPELIST_2(T1, T2) \
16 TypeList<T1, TYPELIST_1(T2) >
17#define TYPELIST_3(T1, T2, T3) \
18 TypeList<T1, TYPELIST_2(T2, T3) >
19#define TYPELIST_4(T1, T2, T3, T4) \
20 TypeList<T1, TYPELIST_3(T2, T3, T4) >
21#define TYPELIST_5(T1, T2, T3, T4, T5) \
22 TypeList<T1, TYPELIST_4(T2, T3, T4, T5) >
23#define TYPELIST_6(T1, T2, T3, T4, T5, T6) \
24 TypeList<T1, TYPELIST_5(T2, T3, T4, T5, T6) >
25#define TYPELIST_7(T1, T2, T3, T4, T5, T6, T7) \
26 TypeList<T1, TYPELIST_6(T2, T3, T4, T5, T6, T7) >
27#define TYPELIST_8(T1, T2, T3, T4, T5, T6, T7, T8) \
28 TypeList<T1, TYPELIST_7(T2, T3, T4, T5, T6, T7, T8) >
29#define TYPELIST_9(T1, T2, T3, T4, T5, T6, T7, T8, T9) \
30 TypeList<T1, TYPELIST_8(T2, T3, T4, T5, T6, T7, T8, T9) >
31#define TYPELIST_10(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) \
32 TypeList<T1, TYPELIST_9(T2, T3, T4, T5, T6, T7, T8, T9, T10) >
33
34#endif /* HORIZON_CORE_STRUCTURES_TYPELIST_HPP */
Definition: TypeList.hpp:8
TAIL Tail
Definition: TypeList.hpp:10
HEAD Head
Definition: TypeList.hpp:9