#define T(name, fields)\
class name { \
private: \
const unsigned char* data; \
BOOST_PP_SEQ_FOR_EACH_I(DEFINE_CACHED_VALUES, fields, fields) \
public: \
/* Constructor */ \
name(const unsigned char* _data) : data(_data) \
BOOST_PP_SEQ_FOR_EACH_I(INITIALIZE_CACHED_VALUES, fields, fields) \
{}; \
/* xxx() methods */ \
BOOST_PP_SEQ_FOR_EACH_I(DEFINE_ACCESSORS, fields, fields) \
size_t num_bits(void) const { \
return 0 BOOST_PP_SEQ_FOR_EACH(PLUS_NUM_BITS, ~, fields); \
}; \
};