#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/repetition/enum_trailing.hpp>
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/detail/is_unary.hpp>
#include <boost/preprocessor/repetition/repeat.hpp>
#include <boost/preprocessor/tuple/eat.hpp>
#include <boost/preprocessor/seq/transform.hpp>
#include <boost/preprocessor/seq/for_each_i.hpp>
#include <boost/preprocessor/seq/cat.hpp>
#include <boost/typeof/encode_decode.hpp>
#include <boost/typeof/int_encoding.hpp>
#include <boost/typeof/type_template_param.hpp>
#include <boost/typeof/integral_template_param.hpp>
#include <boost/typeof/template_template_param.hpp>
#define BOOST_TYPEOF_CAT_4 | ( | a, | |
b, | |||
c, | |||
d | |||
) | BOOST_TYPEOF_CAT_4_I(a, b, c, d) |
#define BOOST_TYPEOF_CAT_4_I | ( | a, | |
b, | |||
c, | |||
d | |||
) | a ## b ## c ## d |
#define BOOST_TYPEOF_MAKE_OBJ | ( | elem | ) |
#define BOOST_TYPEOF_MAKE_OBJS | ( | Params | ) | BOOST_PP_SEQ_TRANSFORM(BOOST_TYPEOF_OBJECT_MAKER, ~, Params) |
#define BOOST_TYPEOF_OBJECT_MAKER | ( | s, | |
data, | |||
elem | |||
) | BOOST_TYPEOF_MAKE_OBJ(elem) |
#define BOOST_TYPEOF_PLACEHOLDER | ( | z, | |
n, | |||
elem | |||
) | BOOST_TYPEOF_VIRTUAL(PLACEHOLDER, elem)(elem) |
#define BOOST_TYPEOF_PLACEHOLDER_TYPES | ( | z, | |
n, | |||
elem | |||
) | BOOST_TYPEOF_VIRTUAL(PLACEHOLDER_TYPES, elem)(elem, n) |
#define BOOST_TYPEOF_QUALIFY | ( | P | ) | P |
#define BOOST_TYPEOF_REGISTER_DECODER_TYPE_PARAM_PAIR | ( | z, | |
n, | |||
elem | |||
) | BOOST_TYPEOF_VIRTUAL(EXPANDTYPE, elem)(elem) BOOST_PP_CAT(T, n) |
#define BOOST_TYPEOF_REGISTER_DEFAULT_TEMPLATE_TYPE | ( | Name, | |
Params, | |||
ID | |||
) | Name< BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params), P) > |
#define BOOST_TYPEOF_REGISTER_TEMPLATE | ( | Name, | |
Params | |||
) | BOOST_TYPEOF_REGISTER_TEMPLATE_EXPLICIT_ID(Name, Params, BOOST_TYPEOF_UNIQUE_ID()) |
#define BOOST_TYPEOF_REGISTER_TEMPLATE_DECODE_PARAM | ( | r, | |
data, | |||
n, | |||
elem | |||
) | BOOST_TYPEOF_VIRTUAL(DECODE, elem)(elem, n) |
#define BOOST_TYPEOF_REGISTER_TEMPLATE_ENCODE_PARAM | ( | r, | |
data, | |||
n, | |||
elem | |||
) | BOOST_TYPEOF_VIRTUAL(ENCODE, elem)(elem, n) |
#define BOOST_TYPEOF_REGISTER_TEMPLATE_EXPLICIT_ID | ( | Name, | |
Params, | |||
Id | |||
) |
#define BOOST_TYPEOF_REGISTER_TEMPLATE_IMPL | ( | Name, | |
Params, | |||
Size, | |||
ID | |||
) |
#define BOOST_TYPEOF_REGISTER_TEMPLATE_PARAM_PAIR | ( | z, | |
n, | |||
elem | |||
) | BOOST_TYPEOF_VIRTUAL(EXPANDTYPE, elem)(elem) BOOST_PP_CAT(P, n) |
#define BOOST_TYPEOF_SEQ_ENUM | ( | seq, | |
macro | |||
) | BOOST_PP_ENUM(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq)) |
#define BOOST_TYPEOF_SEQ_ENUM_1 | ( | seq, | |
macro | |||
) | BOOST_PP_ENUM(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT_1,(macro)(seq)) |
#define BOOST_TYPEOF_SEQ_ENUM_TRAILING | ( | seq, | |
macro | |||
) | BOOST_PP_ENUM_TRAILING(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq)) |
#define BOOST_TYPEOF_SEQ_ENUM_TRAILING_1 | ( | seq, | |
macro | |||
) | BOOST_PP_ENUM_TRAILING(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT_1,(macro)(seq)) |
#define BOOST_TYPEOF_SEQ_EXPAND_ELEMENT | ( | z, | |
n, | |||
seq | |||
) | BOOST_PP_SEQ_ELEM(0,seq) (z,n,BOOST_PP_SEQ_ELEM(n,BOOST_PP_SEQ_ELEM(1,seq))) |
#define BOOST_TYPEOF_SEQ_EXPAND_ELEMENT_1 | ( | z, | |
n, | |||
seq | |||
) | BOOST_PP_SEQ_ELEM(0,seq) (z,n,BOOST_PP_SEQ_ELEM(n,BOOST_PP_SEQ_ELEM(1,seq))) |
#define BOOST_TYPEOF_TO_SEQ | ( | tokens | ) | BOOST_TYPEOF_ ## tokens ## _BOOST_TYPEOF |
#define BOOST_TYPEOF_TOSEQ | ( | x | ) |
#define BOOST_TYPEOF_TOSEQ_2 | ( | z, | |
n, | |||
_ | |||
) | (class) |
#define BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TYPE | ( | Name, | |
Params | |||
) | typedef Name<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),BOOST_TYPEOF_QUALIFY(P))> type; |
#define BOOST_TYPEOF_TYPEDEF_DECODED_TYPE | ( | Name, | |
Params | |||
) |
#define BOOST_TYPEOF_VIRTUAL | ( | Fun, | |
Obj | |||
) | BOOST_TYPEOF_CAT_4(BOOST_TYPEOF_, BOOST_PP_SEQ_HEAD(Obj), _, Fun) |