00001 #define SELECTOR_START(name) template<class List> struct name##_selector_struct { 00002 00003 00004 00005 #define SELECTOR_ERROR(name) }; template<> struct name##_selector_struct<PyCVD::End> { 00006 00007 #define SELECTOR_END }; 00008 00009 00010 #define SELECTOR_FUNC_START() typedef typename List::type type; \ 00011 typedef typename List::next next; 00012 00013 00014 #define SELECTOR_NEXT(name) name##_selector_struct<next>::fun 00015 00016 #define SELECTOR_INVOKE(name, types) name##_selector_struct<types>::fun 00017 00018 #define SELECTOR_INVOKE_FLOATS(name, types) SELECTOR_INVOKE(name, CVDFloatTypes)