typelist.h File Reference

#include <comet/config.h>

Include dependency graph for typelist.h:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Namespaces

namespace  comet
namespace  comet::typelist
namespace  comet::typelist::impl

Classes

struct  comet::nil
struct  comet::tl_t< T, U >
struct  comet::make_list<>
struct  comet::make_list< COMET_LIST_NIL >
struct  comet::typelist::length< L >
struct  comet::typelist::length< nil >
struct  comet::typelist::type_at_aux< L >
struct  comet::typelist::type_at_aux< L >::X< idx >
struct  comet::typelist::type_at_aux< L >::X< 0 >
struct  comet::typelist::type_at_aux< nil >
struct  comet::typelist::type_at_aux< nil >::X< idx >
struct  comet::typelist::type_at< L, idx >
struct  comet::typelist::index_of_aux< HEAD >
struct  comet::typelist::index_of_aux< HEAD >::X1< TAIL >
struct  comet::typelist::index_of_aux< HEAD >::X1< TAIL >::X2< T >
struct  comet::typelist::index_of_aux< HEAD >::X1< TAIL >::X2< HEAD >
struct  comet::typelist::index_of< L, T >
struct  comet::typelist::impl::append_aux< L1 >
struct  comet::typelist::impl::append_aux< L1 >::with< L2 >
struct  comet::typelist::impl::append_aux< L1 >::with< nil >
struct  comet::typelist::impl::append_aux< nil >
struct  comet::typelist::impl::append_aux< nil >::with< L2 >
struct  comet::typelist::append< L1, L2 >
struct  comet::typelist::append_element< L, T >
struct  comet::typelist::inherit_all< ITF_LIST >
struct  comet::typelist::inherit_all< nil >

Defines

#define COMET_TL_LIST(X01, X02, X03, X04, X05, X06, X07, X08, X09, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31, X32, X33, X34, X35, X36, X37, X38, X39)
#define COMET_LIST_TEMPLATE
#define COMET_LIST_TEMPLATE_0
#define COMET_LIST_ARG_1
#define COMET_LIST_ARG_0
#define COMET_LIST_NIL
#define COMET_WRAP_EACH_DECLARE(T)
#define COMET_WRAP_EACH(T, L1)   wrap_each_aux##T<L1>


Detailed Description

Implementation of Lists of types. Type lists are rather integral to the operation of Comet, and provide us with many of the mechanisms that allow us to all but remove the need for #define macros in code.

Define Documentation

#define COMET_LIST_ARG_0
 

Value:

COMET_TL_LIST(\ X01,X02,X03,X04,X05,X06,X07,X08,X09, \ X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ X30,X31,X32,X33,X34,X35,X36,X37,X38,X39)

#define COMET_LIST_ARG_1
 

Value:

X00, COMET_TL_LIST(\ X01,X02,X03,X04,X05,X06,X07,X08,X09, \ X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ X30,X31,X32,X33,X34,X35,X36,X37,X38,X39)

#define COMET_LIST_NIL
 

Value:

nil, COMET_TL_LIST(\ nil,nil,nil,nil,nil,nil,nil,nil,nil, \ nil,nil,nil,nil,nil,nil,nil,nil,nil,nil, \ nil,nil,nil,nil,nil,nil,nil,nil,nil,nil, \ nil,nil,nil,nil,nil,nil,nil,nil,nil,nil)

#define COMET_LIST_TEMPLATE
 

Value:

typename X00=nil, COMET_TL_LIST( typename X01=nil, typename X02=nil, typename X03=nil, typename X04=nil, \ typename X05=nil, typename X06=nil, typename X07=nil, typename X08=nil, typename X09=nil, \ typename X10=nil, typename X11=nil, typename X12=nil, typename X13=nil, typename X14=nil, \ typename X15=nil, typename X16=nil, typename X17=nil, typename X18=nil, typename X19=nil, \ typename X20=nil, typename X21=nil, typename X22=nil, typename X23=nil, typename X24=nil, \ typename X25=nil, typename X26=nil, typename X27=nil, typename X28=nil, typename X29=nil, \ typename X30=nil, typename X31=nil, typename X32=nil, typename X33=nil, typename X34=nil, \ typename X35=nil, typename X36=nil, typename X37=nil, typename X38=nil, typename X39=nil)

#define COMET_LIST_TEMPLATE_0
 

Value:

typename X00, COMET_TL_LIST(\ typename X01, typename X02, typename X03, typename X04, \ typename X05, typename X06, typename X07, typename X08, typename X09, \ typename X10, typename X11, typename X12, typename X13, typename X14, \ typename X15, typename X16, typename X17, typename X18, typename X19, \ typename X20, typename X21, typename X22, typename X23, typename X24, \ typename X25, typename X26, typename X27, typename X28, typename X29, \ typename X30, typename X31, typename X32, typename X33, typename X34, \ typename X35, typename X36, typename X37, typename X38, typename X39)

#define COMET_TL_LIST X01,
X02,
X03,
X04,
X05,
X06,
X07,
X08,
X09,
X10,
X11,
X12,
X13,
X14,
X15,
X16,
X17,
X18,
X19,
X20,
X21,
X22,
X23,
X24,
X25,
X26,
X27,
X28,
X29,
X30,
X31,
X32,
X33,
X34,
X35,
X36,
X37,
X38,
X39   ) 
 

Value:

X01,X02,X03,X04,X05,X06,X07,X08,X09, \ X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ X30,X31,X32,X33,X34,X35,X36,X37,X38,X39

#define COMET_WRAP_EACH_DECLARE  ) 
 

Value:

template< typename L1 > struct wrap_each_aux##T; \ namespace impl \ { \ template< typename L1> struct p_wrap_each_aux##T \ { \ typedef wrap_each_aux##T<L1> x; \ }; \ template<> struct p_wrap_each_aux##T <::comet::nil> \ { \ typedef ::comet::nil x; \ }; \ }; \ template< typename L1> struct wrap_each_aux##T \ { \ typedef T<typename L1::head> head; \ typedef typename impl::p_wrap_each_aux##T < typename L1::tail>::x tail;\ }; \ template<> struct wrap_each_aux##T<::comet::nil> { };