]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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 |