/* ************************************ * * * arg_tuple_size.h * * * ************************************ */ // last modified: April 17, 2002 #ifndef ARG_TUPLE_SIZE_H #define ARG_TUPLE_SIZE_H #include #include "chaos.h" #ifndef ARG_TUPLE_SIZE_LIMIT #define ARG_TUPLE_SIZE_LIMIT 50 #endif #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) // map_integral template struct map_integral { static const T value = V; }; template const T map_integral::value; // arg_type_size // no definition template struct arg_type_size; // arg_type_size (function pointers) ??=include ENABLE(linearize.h) #define MACRO(C) \ template \ struct arg_tuple_size \ : map_integral { }; #define LBOUND 0 #define UBOUND ARG_TUPLE_SIZE_LIMIT #include MAKE() ??=include DISABLE(linearize.h) // arg_type_size (member function pointers) ??=include ENABLE(lambda.h) ??=include ENABLE(linearize.h) #define MACRO(C) \ template \ struct arg_tuple_size \ : map_integral { }; #define LBOUND 0 #define UBOUND ARG_TUPLE_SIZE_LIMIT #define ALPHA NIL #include MAKE() #if !defined(__MWERKS__) || __MWERKS__ > 0x2407 #define ALPHA LAMBDA(const) #include MAKE() #define ALPHA LAMBDA(volatile) #include MAKE() #define ALPHA LAMBDA(const volatile) #include MAKE() #endif ??=include DISABLE(linearize.h) ??=include DISABLE(lambda.h) #else // no partial spec. // arg_tuple_size_helper (function pointers) ??=include ENABLE(linearize.h) #define MACRO(C) \ template \ char_array arg_tuple_size_helper(R (*)(LIST_T(C))); #define LBOUND 0 #define UBOUND ARG_TUPLE_SIZE_LIMIT #include MAKE() ??=include DISABLE(linearize.h) // arg_tuple_size_helper (member function pointers) ??=include ENABLE(lambda.h) ??=include ENABLE(linearize.h) #define MACRO(C) \ template \ char_array arg_tuple_size_helper(R (obj::*)(LIST_T(C)) UNARY_AUX(C)); #define LBOUND 0 #define UBOUND ARG_TUPLE_SIZE_LIMIT #define ALPHA NIL #include MAKE() #define ALPHA LAMBDA(const) #include MAKE() #define ALPHA LAMBDA(volatile) #include MAKE() #define ALPHA LAMBDA(const volatile) #include MAKE() ??=include DISABLE(linearize.h) ??=include DISABLE(lambda.h) #endif #endif