Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 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 | |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 5 | #ifndef NDNBOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED |
| 6 | #define NDNBOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 7 | |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 8 | #define NDNBOOST_TYPEOF_class_NDNBOOST_TYPEOF (class) |
| 9 | #define NDNBOOST_TYPEOF_typename_NDNBOOST_TYPEOF (typename) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 10 | |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 11 | #define NDNBOOST_TYPEOF_MAKE_OBJ_class NDNBOOST_TYPEOF_TYPE_PARAM |
| 12 | #define NDNBOOST_TYPEOF_MAKE_OBJ_typename NDNBOOST_TYPEOF_TYPE_PARAM |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 13 | |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 14 | #define NDNBOOST_TYPEOF_TYPE_PARAM\ |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 15 | (TYPE_PARAM) |
| 16 | |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 17 | #define NDNBOOST_TYPEOF_TYPE_PARAM_EXPANDTYPE(Param) class |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 18 | |
| 19 | // TYPE_PARAM "virtual functions" implementation |
| 20 | |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 21 | #define NDNBOOST_TYPEOF_TYPE_PARAM_ENCODE(This, n)\ |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 22 | typedef typename ndnboost::type_of::encode_type<\ |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 23 | NDNBOOST_PP_CAT(V, n),\ |
| 24 | NDNBOOST_PP_CAT(P, n)\ |
| 25 | >::type NDNBOOST_PP_CAT(V, NDNBOOST_PP_INC(n)); |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 26 | |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 27 | #define NDNBOOST_TYPEOF_TYPE_PARAM_DECODE(This, n)\ |
| 28 | typedef ndnboost::type_of::decode_type< NDNBOOST_PP_CAT(iter, n) > NDNBOOST_PP_CAT(d, n);\ |
| 29 | typedef typename NDNBOOST_PP_CAT(d, n)::type NDNBOOST_PP_CAT(P, n);\ |
| 30 | typedef typename NDNBOOST_PP_CAT(d, n)::iter NDNBOOST_PP_CAT(iter, NDNBOOST_PP_INC(n)); |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 31 | |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 32 | #define NDNBOOST_TYPEOF_TYPE_PARAM_PLACEHOLDER(Param) int |
| 33 | #define NDNBOOST_TYPEOF_TYPE_PARAM_DECLARATION_TYPE(Param) class |
| 34 | #define NDNBOOST_TYPEOF_TYPE_PARAM_PLACEHOLDER_TYPES(Param, n) NDNBOOST_PP_CAT(T,n) |
| 35 | #define NDNBOOST_TYPEOF_TYPE_PARAM_ISTEMPLATE 0 |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 36 | |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame] | 37 | #endif//NDNBOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED |