diff options
Diffstat (limited to '3rdParty/Boost/boost/typeof/template_template_param.hpp')
m--------- | 3rdParty/Boost | 0 | ||||
-rw-r--r-- | 3rdParty/Boost/boost/typeof/template_template_param.hpp | 149 |
2 files changed, 0 insertions, 149 deletions
diff --git a/3rdParty/Boost b/3rdParty/Boost new file mode 160000 +Subproject 3bbdbc8cf1996f23d9a366da8bac0f97be6ad79 diff --git a/3rdParty/Boost/boost/typeof/template_template_param.hpp b/3rdParty/Boost/boost/typeof/template_template_param.hpp deleted file mode 100644 index 4d64190..0000000 --- a/3rdParty/Boost/boost/typeof/template_template_param.hpp +++ /dev/null @@ -1,149 +0,0 @@ -// 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 <boost/preprocessor/logical/or.hpp> -#include <boost/preprocessor/seq/fold_left.hpp> -#include <boost/preprocessor/seq/enum.hpp> - -#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<BOOST_PP_CAT(V, n),\ - BOOST_PP_CAT(P, n)<BOOST_TYPEOF_SEQ_ENUM(BOOST_TYPEOF_MAKE_OBJS(BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(This)),BOOST_TYPEOF_PLACEHOLDER) >\ - >::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, unsigned int, ...> class -#define BOOST_TYPEOF_TEMPLATE_PARAM_EXPANDTYPE(This) \ - template <BOOST_PP_SEQ_ENUM(BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(This)) > class - -#define BOOST_TYPEOF_TEMPLATE_PARAM_PLACEHOLDER(Param)\ - Nested_Template_Template_Arguments_Not_Supported - -//'template<class,int> class' is reduced to 'class' -#define BOOST_TYPEOF_TEMPLATE_PARAM_DECLARATION_TYPE(Param) class - -// T3<int, (unsigned int)0, ...> -#define BOOST_TYPEOF_TEMPLATE_PARAM_PLACEHOLDER_TYPES(Param, n)\ - BOOST_PP_CAT(T,n)<BOOST_TYPEOF_SEQ_ENUM_1(BOOST_TYPEOF_MAKE_OBJS(BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(Param)),BOOST_TYPEOF_PLACEHOLDER) > - -#define BOOST_TYPEOF_TEMPLATE_PARAM_ISTEMPLATE 1 - -//////////////////////////// -// move to encode_decode? - -BOOST_TYPEOF_BEGIN_ENCODE_NS - -template<class V, class Type_Not_Registered_With_Typeof_System> struct encode_template_impl; -template<class T, class Iter> struct decode_template_impl; - -BOOST_TYPEOF_END_ENCODE_NS - -namespace boost { namespace type_of { - - template<class V, class T> struct encode_template - : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::encode_template_impl<V, T> - {}; - - template<class Iter> struct decode_template - : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::decode_template_impl<typename Iter::type, typename Iter::next> - {}; -}} - -//////////////////////////// -// move to template_encoding.hpp? - -//Template template registration -#define BOOST_TYPEOF_REGISTER_TYPE_FOR_TEMPLATE_TEMPLATE(Name,Params,ID)\ - template<class V\ - BOOST_TYPEOF_SEQ_ENUM_TRAILING(Params,BOOST_TYPEOF_REGISTER_TEMPLATE_PARAM_PAIR)\ - >\ - struct encode_template_impl<V,Name<\ - BOOST_PP_ENUM_PARAMS(\ - BOOST_PP_SEQ_SIZE(Params),\ - P)> >\ - : boost::type_of::push_back<V, boost::mpl::size_t<ID> >\ - {\ - };\ - template<class Iter> struct decode_template_impl<boost::mpl::size_t<ID>, Iter>\ - {\ - BOOST_PP_REPEAT(BOOST_PP_SEQ_SIZE(Params),BOOST_TYPEOF_TYPEDEF_INT_PN,_)\ - typedef Name<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_PLACEHOLDER) > 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<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECLARE_DECODER_TYPE_PARAM_PAIR) >\ - struct decode_params;\ - template<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECODER_TYPE_PARAM_PAIR) >\ - struct decode_params<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_PLACEHOLDER_TYPES) >\ - {\ - typedef Name<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),T)> 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<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),P)>::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<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECLARE_DECODER_TYPE_PARAM_PAIR) >\ - struct decode_params;\ - template<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECODER_TYPE_PARAM_PAIR) >\ - struct decode_params<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_PLACEHOLDER_TYPES) >\ - {\ - typedef Name<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),T)> type;\ - };\ - typedef typename decode_params<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),P)>::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 |