blob: 9abc45c44ff13cec7e0beb0461b873918e697a60 [file] [log] [blame]
Jeff Thompsona28eed82013-08-22 16:21:10 -07001// 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 Thompson3d613fd2013-10-15 15:39:04 -07005#ifndef NDNBOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
6#define NDNBOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
Jeff Thompsona28eed82013-08-22 16:21:10 -07007
Jeff Thompson3d613fd2013-10-15 15:39:04 -07008#define NDNBOOST_TYPEOF_class_NDNBOOST_TYPEOF (class)
9#define NDNBOOST_TYPEOF_typename_NDNBOOST_TYPEOF (typename)
Jeff Thompsona28eed82013-08-22 16:21:10 -070010
Jeff Thompson3d613fd2013-10-15 15:39:04 -070011#define NDNBOOST_TYPEOF_MAKE_OBJ_class NDNBOOST_TYPEOF_TYPE_PARAM
12#define NDNBOOST_TYPEOF_MAKE_OBJ_typename NDNBOOST_TYPEOF_TYPE_PARAM
Jeff Thompsona28eed82013-08-22 16:21:10 -070013
Jeff Thompson3d613fd2013-10-15 15:39:04 -070014#define NDNBOOST_TYPEOF_TYPE_PARAM\
Jeff Thompsona28eed82013-08-22 16:21:10 -070015 (TYPE_PARAM)
16
Jeff Thompson3d613fd2013-10-15 15:39:04 -070017#define NDNBOOST_TYPEOF_TYPE_PARAM_EXPANDTYPE(Param) class
Jeff Thompsona28eed82013-08-22 16:21:10 -070018
19// TYPE_PARAM "virtual functions" implementation
20
Jeff Thompson3d613fd2013-10-15 15:39:04 -070021#define NDNBOOST_TYPEOF_TYPE_PARAM_ENCODE(This, n)\
Jeff Thompsona28eed82013-08-22 16:21:10 -070022 typedef typename ndnboost::type_of::encode_type<\
Jeff Thompson3d613fd2013-10-15 15:39:04 -070023 NDNBOOST_PP_CAT(V, n),\
24 NDNBOOST_PP_CAT(P, n)\
25 >::type NDNBOOST_PP_CAT(V, NDNBOOST_PP_INC(n));
Jeff Thompsona28eed82013-08-22 16:21:10 -070026
Jeff Thompson3d613fd2013-10-15 15:39:04 -070027#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 Thompsona28eed82013-08-22 16:21:10 -070031
Jeff Thompson3d613fd2013-10-15 15:39:04 -070032#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 Thompsona28eed82013-08-22 16:21:10 -070036
Jeff Thompson3d613fd2013-10-15 15:39:04 -070037#endif//NDNBOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED