1 // Copyright (C) 2005 Arkadiy Vertleyb 2 // Distributed under the Boost Software License, Version 1.0. (See accompanying 3 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 4 5 #ifndef BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED 6 #define BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED 7 8 #define BOOST_TYPEOF_class_BOOST_TYPEOF (class) 9 #define BOOST_TYPEOF_typename_BOOST_TYPEOF (typename) 10 11 #define BOOST_TYPEOF_MAKE_OBJ_class BOOST_TYPEOF_TYPE_PARAM 12 #define BOOST_TYPEOF_MAKE_OBJ_typename BOOST_TYPEOF_TYPE_PARAM 13 14 #define BOOST_TYPEOF_TYPE_PARAM\ 15 (TYPE_PARAM) 16 17 #define BOOST_TYPEOF_TYPE_PARAM_EXPANDTYPE(Param) class 18 19 // TYPE_PARAM "virtual functions" implementation 20 21 #define BOOST_TYPEOF_TYPE_PARAM_ENCODE(This, n)\ 22 typedef typename boost::type_of::encode_type<\ 23 BOOST_PP_CAT(V, n),\ 24 BOOST_PP_CAT(P, n)\ 25 >::type BOOST_PP_CAT(V, BOOST_PP_INC(n)); 26 27 #define BOOST_TYPEOF_TYPE_PARAM_DECODE(This, n)\ 28 typedef boost::type_of::decode_type< BOOST_PP_CAT(iter, n) > BOOST_PP_CAT(d, n);\ 29 typedef typename BOOST_PP_CAT(d, n)::type BOOST_PP_CAT(P, n);\ 30 typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n)); 31 32 #define BOOST_TYPEOF_TYPE_PARAM_PLACEHOLDER(Param) int 33 #define BOOST_TYPEOF_TYPE_PARAM_DECLARATION_TYPE(Param) class 34 #define BOOST_TYPEOF_TYPE_PARAM_PLACEHOLDER_TYPES(Param, n) BOOST_PP_CAT(T,n) 35 #define BOOST_TYPEOF_TYPE_PARAM_ISTEMPLATE 0 36 37 #endif//BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED 38