mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-07 19:34:56 +00:00
base: remove length limit of Type_list
This commit is contained in:
parent
a99989af40
commit
ef9a7d2230
@ -87,41 +87,17 @@ namespace Genode {
|
||||
/**
|
||||
* Type list with variable number of types
|
||||
*/
|
||||
template <typename T1 = Void, typename T2 = Void, typename T3 = Void, typename T4 = Void,
|
||||
typename T5 = Void, typename T6 = Void, typename T7 = Void, typename T8 = Void,
|
||||
typename T9 = Void, typename T10 = Void>
|
||||
template <typename...>
|
||||
struct Type_list;
|
||||
|
||||
template <>
|
||||
struct Type_list<Void, Void, Void, Void, Void, Void, Void, Void, Void, Void> { typedef Empty Head; };
|
||||
struct Type_list<> { typedef Empty Head; };
|
||||
|
||||
template <typename T1>
|
||||
struct Type_list<T1, Void> : public Type_tuple<T1, Empty> { };
|
||||
|
||||
template <typename T1, typename T2>
|
||||
struct Type_list<T1, T2, Void> : public Type_tuple<T1, Type_list<T2> > { };
|
||||
|
||||
template <typename T1, typename T2, typename T3>
|
||||
struct Type_list<T1, T2, T3, Void> : public Type_tuple<T1, Type_list<T2, T3> > { };
|
||||
|
||||
template <typename T1, typename T2, typename T3, typename T4>
|
||||
struct Type_list<T1, T2, T3, T4, Void> : public Type_tuple<T1, Type_list<T2, T3, T4> > { };
|
||||
|
||||
template <typename T1, typename T2, typename T3, typename T4, typename T5>
|
||||
struct Type_list<T1, T2, T3, T4, T5, Void> : public Type_tuple<T1, Type_list<T2, T3, T4, T5> > { };
|
||||
|
||||
template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
|
||||
struct Type_list<T1, T2, T3, T4, T5, T6, Void> : public Type_tuple<T1, Type_list<T2, T3, T4, T5, T6> > { };
|
||||
|
||||
template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
|
||||
struct Type_list<T1, T2, T3, T4, T5, T6, T7, Void> : public Type_tuple<T1, Type_list<T2, T3, T4, T5, T6, T7> > { };
|
||||
|
||||
template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
|
||||
struct Type_list<T1, T2, T3, T4, T5, T6, T7, T8, Void> : public Type_tuple<T1, Type_list<T2, T3, T4, T5, T6, T7, T8> > { };
|
||||
|
||||
template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
|
||||
struct Type_list<T1, T2, T3, T4, T5, T6, T7, T8, T9, Void> : public Type_tuple<T1, Type_list<T2, T3, T4, T5, T6, T7, T8, T9> > { };
|
||||
template <typename T>
|
||||
struct Type_list<T> : Type_tuple<T, Empty> { };
|
||||
|
||||
template <typename HEAD, typename... TAIL>
|
||||
struct Type_list<HEAD, TAIL...> : Type_tuple<HEAD, Type_list<TAIL...> > { };
|
||||
|
||||
/**
|
||||
* Macro for wrapping the 'Type_list' template
|
||||
|
Loading…
x
Reference in New Issue
Block a user