blob: 9abc45c44ff13cec7e0beb0461b873918e697a60 [file] [log] [blame]
// Copyright (C) 2005 Arkadiy Vertleyb
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef NDNBOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
#define NDNBOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
#define NDNBOOST_TYPEOF_class_NDNBOOST_TYPEOF (class)
#define NDNBOOST_TYPEOF_typename_NDNBOOST_TYPEOF (typename)
#define NDNBOOST_TYPEOF_MAKE_OBJ_class NDNBOOST_TYPEOF_TYPE_PARAM
#define NDNBOOST_TYPEOF_MAKE_OBJ_typename NDNBOOST_TYPEOF_TYPE_PARAM
#define NDNBOOST_TYPEOF_TYPE_PARAM\
(TYPE_PARAM)
#define NDNBOOST_TYPEOF_TYPE_PARAM_EXPANDTYPE(Param) class
// TYPE_PARAM "virtual functions" implementation
#define NDNBOOST_TYPEOF_TYPE_PARAM_ENCODE(This, n)\
typedef typename ndnboost::type_of::encode_type<\
NDNBOOST_PP_CAT(V, n),\
NDNBOOST_PP_CAT(P, n)\
>::type NDNBOOST_PP_CAT(V, NDNBOOST_PP_INC(n));
#define NDNBOOST_TYPEOF_TYPE_PARAM_DECODE(This, n)\
typedef ndnboost::type_of::decode_type< NDNBOOST_PP_CAT(iter, n) > NDNBOOST_PP_CAT(d, n);\
typedef typename NDNBOOST_PP_CAT(d, n)::type NDNBOOST_PP_CAT(P, n);\
typedef typename NDNBOOST_PP_CAT(d, n)::iter NDNBOOST_PP_CAT(iter, NDNBOOST_PP_INC(n));
#define NDNBOOST_TYPEOF_TYPE_PARAM_PLACEHOLDER(Param) int
#define NDNBOOST_TYPEOF_TYPE_PARAM_DECLARATION_TYPE(Param) class
#define NDNBOOST_TYPEOF_TYPE_PARAM_PLACEHOLDER_TYPES(Param, n) NDNBOOST_PP_CAT(T,n)
#define NDNBOOST_TYPEOF_TYPE_PARAM_ISTEMPLATE 0
#endif//NDNBOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED