x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
template_template_param.hpp - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\boost_1_35_0\boost\typeof\template_template_param.hpp
旋转
特效
属性
历史版本
// Copyright (C) 2005 Peder Holt // 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 BOOST_TYPEOF_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED #define BOOST_TYPEOF_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED #include
#include
#include
#define BOOST_TYPEOF_MAKE_OBJ_template(x) BOOST_TYPEOF_TEMPLATE_PARAM(x) #define BOOST_TYPEOF_TEMPLATE(X) template(X) BOOST_TYPEOF_EAT #define BOOST_TYPEOF_template(X) (template(X)) #define BOOST_TYPEOF_TEMPLATE_PARAM(Params)\ (TEMPLATE_PARAM)\ (Params) #define BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(This)\ BOOST_TYPEOF_TOSEQ(BOOST_PP_SEQ_ELEM(1, This)) //Encode / decode this #define BOOST_TYPEOF_TEMPLATE_PARAM_ENCODE(This, n)\ typedef typename boost::type_of::encode_template
\ >::type BOOST_PP_CAT(V, BOOST_PP_INC(n)); #define BOOST_TYPEOF_TEMPLATE_PARAM_DECODE(This, n)\ typedef boost::type_of::decode_template< BOOST_PP_CAT(iter, n) > BOOST_PP_CAT(d, n);\ typedef typename BOOST_PP_CAT(d, n)::type BOOST_PP_CAT(P, n);\ typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter,BOOST_PP_INC(n)); // template
class #define BOOST_TYPEOF_TEMPLATE_PARAM_EXPANDTYPE(This) \ template
class #define BOOST_TYPEOF_TEMPLATE_PARAM_PLACEHOLDER(Param)\ Nested_Template_Template_Arguments_Not_Supported //'template
class' is reduced to 'class' #define BOOST_TYPEOF_TEMPLATE_PARAM_DECLARATION_TYPE(Param) class // T3
#define BOOST_TYPEOF_TEMPLATE_PARAM_PLACEHOLDER_TYPES(Param, n)\ BOOST_PP_CAT(T,n)
#define BOOST_TYPEOF_TEMPLATE_PARAM_ISTEMPLATE 1 //////////////////////////// // move to encode_decode? BOOST_TYPEOF_BEGIN_ENCODE_NS template
struct encode_template_impl; template
struct decode_template_impl; BOOST_TYPEOF_END_ENCODE_NS namespace boost { namespace type_of { template
struct encode_template : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::encode_template_impl
{}; template
struct decode_template : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::decode_template_impl
{}; }} //////////////////////////// // move to template_encoding.hpp? //Template template registration #define BOOST_TYPEOF_REGISTER_TYPE_FOR_TEMPLATE_TEMPLATE(Name,Params,ID)\ template
\ struct encode_template_impl
>\ : boost::type_of::push_back
>\ {\ };\ template
struct decode_template_impl
, Iter>\ {\ BOOST_PP_REPEAT(BOOST_PP_SEQ_SIZE(Params),BOOST_TYPEOF_TYPEDEF_INT_PN,_)\ typedef Name
type;\ typedef Iter iter;\ }; #define BOOST_TYPEOF_TYPEDEF_INT_PN(z,n,Params) typedef int BOOST_PP_CAT(P,n); #ifdef __BORLANDC__ #define BOOST_TYPEOF_DECODE_NESTED_TEMPLATE_HELPER_NAME BOOST_PP_CAT(\ BOOST_PP_CAT(\ BOOST_PP_CAT(\ decode_nested_template_helper,\ BOOST_TYPEOF_REGISTRATION_GROUP\ ),0x10000\ ),__LINE__\ ) #define BOOST_TYPEOF_REGISTER_DECODE_NESTED_TEMPLATE_HELPER_IMPL(Name,Params,ID)\ struct BOOST_TYPEOF_DECODE_NESTED_TEMPLATE_HELPER_NAME {\ template
\ struct decode_params;\ template
\ struct decode_params
\ {\ typedef Name
type;\ };\ }; //Template template param decoding #define BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TEMPLATE_TYPE(Name,Params)\ typedef typename BOOST_TYPEOF_DECODE_NESTED_TEMPLATE_HELPER_NAME::decode_params
::type type; #else #define BOOST_TYPEOF_REGISTER_DECODE_NESTED_TEMPLATE_HELPER_IMPL(Name,Params,ID) //Template template param decoding #define BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TEMPLATE_TYPE(Name,Params)\ template
\ struct decode_params;\ template
\ struct decode_params
\ {\ typedef Name
type;\ };\ typedef typename decode_params
::type type; #endif #define BOOST_TYPEOF_REGISTER_DECLARE_DECODER_TYPE_PARAM_PAIR(z,n,elem) \ BOOST_TYPEOF_VIRTUAL(DECLARATION_TYPE, elem)(elem) BOOST_PP_CAT(T, n) // BOOST_TYPEOF_HAS_TEMPLATES #define BOOST_TYPEOF_HAS_TEMPLATES(Params)\ BOOST_PP_SEQ_FOLD_LEFT(BOOST_TYPEOF_HAS_TEMPLATES_OP, 0, Params) #define BOOST_TYPEOF_HAS_TEMPLATES_OP(s, state, elem)\ BOOST_PP_OR(state, BOOST_TYPEOF_VIRTUAL(ISTEMPLATE, elem)) //Define template template arguments #define BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_IMPL(Name,Params,ID)\ BOOST_PP_IF(BOOST_TYPEOF_HAS_TEMPLATES(Params),\ BOOST_TYPEOF_REGISTER_DECODE_NESTED_TEMPLATE_HELPER_IMPL,\ BOOST_TYPEOF_REGISTER_TYPE_FOR_TEMPLATE_TEMPLATE)(Name,Params,ID) #endif //BOOST_TYPEOF_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED
template_template_param.hpp
网页地址
文件地址
上一页
15/24
下一页
下载
( 6 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.