mirror of
https://github.com/boostorg/typeof.git
synced 2025-07-31 21:34:42 +02:00
moved type, integral, template template params into separate files
[SVN r2478]
This commit is contained in:
@@ -96,12 +96,16 @@ public:
|
||||
catch(const runtime_error&)
|
||||
{}
|
||||
|
||||
for (int i = nMin; i < nMax; ++i)
|
||||
for (int i = nMin; i <= nMax; ++i)
|
||||
{
|
||||
m_out << "BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(" << name << ", " << i << ")" << endl;
|
||||
if (i == nMin && i != nMax)
|
||||
m_out << "#ifdef BOOST_TYPEOF_COMPLIANT" << endl;
|
||||
|
||||
if (i == nMax && i != nMin)
|
||||
m_out << "#endif//BOOST_TYPEOF_COMPLIANT" << endl;
|
||||
|
||||
m_out << "BOOST_TYPEOF_REGISTER_TEMPLATE(" << name << ", " << i << ")" << endl;
|
||||
}
|
||||
m_out << "BOOST_TYPEOF_REGISTER_TEMPLATE(" << name << ", " << nMax << ")" << endl;
|
||||
}
|
||||
else if (what == "TYPE")
|
||||
{
|
||||
|
25
include/boost/typeof/compliant/integral_template_param.hpp
Executable file
25
include/boost/typeof/compliant/integral_template_param.hpp
Executable file
@@ -0,0 +1,25 @@
|
||||
// Copyright (C) 2005 Arkadiy Vertleyb
|
||||
// Use, modification and distribution is subject to the Boost Software
|
||||
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef BOOST_TYPEOF_COMPLIANT_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED
|
||||
#define BOOST_TYPEOF_COMPLIANT_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED
|
||||
|
||||
#include <boost/typeof/integral_template_param.hpp>
|
||||
|
||||
// INTEGRAL_PARAM "virtual functions" implementation
|
||||
|
||||
#define BOOST_TYPEOF_ENCODE_INTEGRAL_PARAM(This, n)\
|
||||
typedef typename encode_integral<\
|
||||
BOOST_PP_CAT(V, n),\
|
||||
BOOST_TYPEOF_PARAM_GETTYPE(This),\
|
||||
BOOST_PP_CAT(P, n)\
|
||||
>::type BOOST_PP_CAT(V, BOOST_PP_INC(n));
|
||||
|
||||
#define BOOST_TYPEOF_DECODE_INTEGRAL_PARAM(This, n)\
|
||||
typedef decode_integral<BOOST_TYPEOF_PARAM_GETTYPE(This), BOOST_PP_CAT(iter, n)> BOOST_PP_CAT(d, n);\
|
||||
static const BOOST_TYPEOF_PARAM_GETTYPE(This) BOOST_PP_CAT(P, n) = BOOST_PP_CAT(d, n)::value;\
|
||||
typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n));
|
||||
|
||||
|
||||
#endif//BOOST_TYPEOF_COMPLIANT_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED
|
@@ -8,38 +8,15 @@
|
||||
|
||||
#include <boost/typeof/compliant/encode_decode.hpp>
|
||||
#include <boost/typeof/compliant/int_encoding.hpp>
|
||||
#include <boost/typeof/register_integral.hpp>
|
||||
#include <boost/typeof/compliant/register_template_template.hpp>
|
||||
|
||||
#include <boost/typeof/template_encoding.hpp>
|
||||
|
||||
#include <boost/typeof/compliant/type_template_param.hpp>
|
||||
#include <boost/typeof/compliant/integral_template_param.hpp>
|
||||
#include <boost/typeof/compliant/template_template_param.hpp>
|
||||
|
||||
//////////
|
||||
|
||||
// TYPE_PARAM "virtual functions" implementation
|
||||
|
||||
#define BOOST_TYPEOF_ENCODE_TYPE_PARAM(This, n)\
|
||||
typedef typename encode_type<\
|
||||
BOOST_PP_CAT(V, n),\
|
||||
BOOST_PP_CAT(P, n)\
|
||||
>::type BOOST_PP_CAT(V, BOOST_PP_INC(n));
|
||||
|
||||
#define BOOST_TYPEOF_DECODE_TYPE_PARAM(This, n)\
|
||||
typedef decode_type< 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));
|
||||
|
||||
// INTEGRAL_PARAM "virtual functions" implementation
|
||||
|
||||
#define BOOST_TYPEOF_ENCODE_INTEGRAL_PARAM(This, n)\
|
||||
typedef typename encode_integral<\
|
||||
BOOST_PP_CAT(V, n),\
|
||||
BOOST_TYPEOF_PARAM_GETTYPE(This),\
|
||||
BOOST_PP_CAT(P, n)\
|
||||
>::type BOOST_PP_CAT(V, BOOST_PP_INC(n));
|
||||
|
||||
#define BOOST_TYPEOF_DECODE_INTEGRAL_PARAM(This, n)\
|
||||
typedef decode_integral<BOOST_TYPEOF_PARAM_GETTYPE(This), BOOST_PP_CAT(iter, n)> BOOST_PP_CAT(d, n);\
|
||||
static const BOOST_TYPEOF_PARAM_GETTYPE(This) BOOST_PP_CAT(P, n) = BOOST_PP_CAT(d, n)::value;\
|
||||
typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n));
|
||||
|
||||
// "function objects"
|
||||
|
||||
#define BOOST_TYPEOF_REGISTER_TEMPLATE_ENCODE_PARAM(r, data, n, elem)\
|
||||
@@ -63,6 +40,7 @@
|
||||
|
||||
|
||||
#define BOOST_TYPEOF_REGISTER_TEMPLATE_X_IMPL(Name, Params, ID)\
|
||||
BOOST_TYPEOF_REGISTER_ARGUMENTS_FOR_TT_ENCODING(Name, Params, ID)\
|
||||
template<class V\
|
||||
BOOST_TYPEOF_SEQ_ENUM_TRAILING(Params,BOOST_TYPEOF_REGISTER_TEMPLATE_PARAM_PAIR)\
|
||||
>\
|
||||
@@ -92,13 +70,6 @@
|
||||
|
||||
#define BOOST_TYPEOF_REGISTER_TEMPLATE_X(Name, Params)\
|
||||
namespace boost{namespace type_of{namespace{\
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_IMPL(Name,Params,BOOST_TYPEOF_UNIQUE_ID())\
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_X_IMPL(Name, Params, BOOST_TYPEOF_UNIQUE_ID())\
|
||||
}}}
|
||||
|
||||
#define BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS_X(Name, Params)\
|
||||
namespace boost{namespace type_of{namespace{\
|
||||
BOOST_TYPEOF_REGISTER_ARGUMENTS_FOR_TT_ENCODING(Name,Params,BOOST_TYPEOF_UNIQUE_ID())\
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_X_IMPL(Name, Params, BOOST_TYPEOF_UNIQUE_ID())\
|
||||
}}}
|
||||
|
||||
|
@@ -2,8 +2,8 @@
|
||||
// Use, modification and distribution is subject to the Boost Software
|
||||
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef BOOST_TYPEOF_COMPLIANT_REGISTER_TEMPLATE_TEMPLATE_HPP_INCLUDED
|
||||
#define BOOST_TYPEOF_COMPLIANT_REGISTER_TEMPLATE_TEMPLATE_HPP_INCLUDED
|
||||
#ifndef BOOST_TYPEOF_COMPLIANT_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED
|
||||
#define BOOST_TYPEOF_COMPLIANT_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED
|
||||
|
||||
#include <boost/preprocessor/comparison/equal.hpp>
|
||||
#include <boost/preprocessor/comparison/not_equal.hpp>
|
||||
@@ -125,10 +125,16 @@ namespace boost{namespace type_of {namespace {
|
||||
|
||||
//Define template template arguments
|
||||
#define BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_IMPL(Name,Params,ID)\
|
||||
BOOST_PP_IF(BOOST_TYPEOF_SUPPORT_TEMPLATE_TEMPLATE_ENCODING(Params),\
|
||||
BOOST_TYPEOF_REGISTER_THIS_FOR_TT_ENCODING,\
|
||||
BOOST_TYPEOF_REGISTER_ARGUMENTS_FOR_TT_ENCODING)(Name,Params,ID)
|
||||
BOOST_TYPEOF_REGISTER_THIS_FOR_TT_ENCODING(Name,Params,ID)
|
||||
|
||||
//BOOST_PP_IF(BOOST_TYPEOF_SUPPORT_TEMPLATE_TEMPLATE_ENCODING(Params),\
|
||||
// BOOST_TYPEOF_REGISTER_THIS_FOR_TT_ENCODING,\
|
||||
// BOOST_TYPEOF_REGISTER_ARGUMENTS_FOR_TT_ENCODING)(Name,Params,ID)
|
||||
|
||||
#define BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE(Name,Params)\
|
||||
namespace boost{namespace type_of{namespace{\
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_IMPL(Name,Params,BOOST_TYPEOF_UNIQUE_ID())\
|
||||
}}}
|
||||
|
||||
//Define template template params
|
||||
#define BOOST_TYPEOF_REGISTER_THIS_FOR_TT_ENCODING(Name,Params,ID)\
|
||||
@@ -187,8 +193,7 @@ namespace boost{namespace type_of {namespace {
|
||||
#define BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_TYPE(Name,Params,ID)\
|
||||
typename BOOST_TYPEOF_TEMPLATE_TEMPLATE_NAME_IMPL(decode_template,Params)<boost::mpl::size_t<ID> BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_SEQ_SIZE(Params), P) >::type
|
||||
|
||||
|
||||
#define BOOST_TYPEOF_REGISTER_COMPACT_TEMPLATE_PARAM_PAIR(z,n,elem)\
|
||||
BOOST_TYPEOF_COMPACT_TYPE(BOOST_TYPEOF_MAKE_OBJ(elem)) BOOST_PP_CAT(P, n)
|
||||
|
||||
#endif //BOOST_TYPEOF_COMPLIANT_REGISTER_TEMPLATE_TEMPLATE_HPP_INCLUDED
|
||||
#endif //BOOST_TYPEOF_COMPLIANT_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED
|
25
include/boost/typeof/compliant/type_template_param.hpp
Executable file
25
include/boost/typeof/compliant/type_template_param.hpp
Executable file
@@ -0,0 +1,25 @@
|
||||
// Copyright (C) 2005 Arkadiy Vertleyb
|
||||
// Use, modification and distribution is subject to the Boost Software
|
||||
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef BOOST_TYPEOF_COMPLIANT_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
|
||||
#define BOOST_TYPEOF_COMPLIANT_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
|
||||
|
||||
#include <boost/typeof/type_template_param.hpp>
|
||||
|
||||
// TYPE_PARAM "virtual functions" implementation
|
||||
|
||||
#define BOOST_TYPEOF_ENCODE_TYPE_PARAM(This, n)\
|
||||
typedef typename encode_type<\
|
||||
BOOST_PP_CAT(V, n),\
|
||||
BOOST_PP_CAT(P, n)\
|
||||
>::type BOOST_PP_CAT(V, BOOST_PP_INC(n));
|
||||
|
||||
#define BOOST_TYPEOF_DECODE_TYPE_PARAM(This, n)\
|
||||
typedef decode_type< 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));
|
||||
|
||||
#define BOOST_TYPEOF_EXPAND_TYPE_PARAM(Param) BOOST_TYPEOF_PARAM_GETTYPE(Param)
|
||||
|
||||
#endif//BOOST_TYPEOF_COMPLIANT_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
|
64
include/boost/typeof/register_integral.hpp → include/boost/typeof/integral_template_param.hpp
Normal file → Executable file
64
include/boost/typeof/register_integral.hpp → include/boost/typeof/integral_template_param.hpp
Normal file → Executable file
@@ -1,26 +1,9 @@
|
||||
// Copyright (C) 2004 Arkadiy Vertleyb
|
||||
// Copyright (C) 2005 Peder Holt
|
||||
// Copyright (C) 2005 Arkadiy Vertleyb
|
||||
// Use, modification and distribution is subject to the Boost Software
|
||||
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef BOOST_TYPEOF_REGISTER_INTEGRAL_HPP_INCLUDED
|
||||
#define BOOST_TYPEOF_REGISTER_INTEGRAL_HPP_INCLUDED
|
||||
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/seq.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_trailing.hpp>
|
||||
|
||||
// The template parameter description, entered by the user,
|
||||
// is converted into a polymorphic "object"
|
||||
// that is used to generate the code responsible for
|
||||
// encoding/decoding the parameter, etc.
|
||||
// See also compliant/template_encoding.hpp and
|
||||
// vintage/template_encoding.hpp.
|
||||
|
||||
#define BOOST_TYPEOF_MAKE_OBJ(elem) BOOST_PP_SEQ_CAT(\
|
||||
(BOOST_TYPEOF_MAKE_OBJ_) BOOST_TYPEOF_TO_SEQ(elem))
|
||||
|
||||
#define BOOST_TYPEOF_TO_SEQ(tokens) BOOST_TYPEOF_ ## tokens ## _BOOST_TYPEOF
|
||||
#ifndef BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED
|
||||
#define BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED
|
||||
|
||||
#define BOOST_TYPEOF_unsigned (unsigned)
|
||||
#define BOOST_TYPEOF_signed (signed)
|
||||
@@ -35,13 +18,9 @@
|
||||
#define BOOST_TYPEOF_int_BOOST_TYPEOF (int)
|
||||
#define BOOST_TYPEOF_long_BOOST_TYPEOF (long)
|
||||
#define BOOST_TYPEOF_bool_BOOST_TYPEOF (bool)
|
||||
#define BOOST_TYPEOF_class_BOOST_TYPEOF (class)
|
||||
#define BOOST_TYPEOF_typename_BOOST_TYPEOF (typename)
|
||||
#define BOOST_TYPEOF_unsigned_BOOST_TYPEOF (unsigned)
|
||||
#define BOOST_TYPEOF_size_t_BOOST_TYPEOF (size_t)
|
||||
|
||||
#define BOOST_TYPEOF_MAKE_OBJ_class BOOST_TYPEOF_TYPE_PARAM
|
||||
#define BOOST_TYPEOF_MAKE_OBJ_typename BOOST_TYPEOF_TYPE_PARAM
|
||||
#define BOOST_TYPEOF_MAKE_OBJ_char BOOST_TYPEOF_INTEGRAL_PARAM(char,char)
|
||||
#define BOOST_TYPEOF_MAKE_OBJ_short BOOST_TYPEOF_INTEGRAL_PARAM(short,short)
|
||||
#define BOOST_TYPEOF_MAKE_OBJ_int BOOST_TYPEOF_INTEGRAL_PARAM(int,int)
|
||||
@@ -63,27 +42,6 @@
|
||||
#define BOOST_TYPEOF_EAT_BOOST_TYPEOF
|
||||
#define BOOST_TYPEOF_integral(X) (integral(X))
|
||||
|
||||
// "interface"
|
||||
|
||||
#define BOOST_TYPEOF_PARAM_ENCODE(Param)\
|
||||
BOOST_PP_CAT(BOOST_TYPEOF_ENCODE_, BOOST_PP_SEQ_ELEM(0, Param))
|
||||
|
||||
#define BOOST_TYPEOF_PARAM_DECODE(Param)\
|
||||
BOOST_PP_CAT(BOOST_TYPEOF_DECODE_, BOOST_PP_SEQ_ELEM(0, Param))
|
||||
|
||||
#define BOOST_TYPEOF_PARAM_GETTYPE(Param)\
|
||||
BOOST_PP_SEQ_ELEM(1, Param)
|
||||
|
||||
#define BOOST_TYPEOF_PARAM_GETNAME(Param)\
|
||||
BOOST_PP_SEQ_ELEM(2, Param)
|
||||
|
||||
// "constructors"
|
||||
|
||||
#define BOOST_TYPEOF_TYPE_PARAM\
|
||||
(TYPE_PARAM)\
|
||||
(class)\
|
||||
(class)
|
||||
|
||||
#define BOOST_TYPEOF_INTEGRAL_PARAM(Type,Name)\
|
||||
(INTEGRAL_PARAM)\
|
||||
(Type)\
|
||||
@@ -96,21 +54,7 @@
|
||||
|
||||
#define BOOST_TYPEOF_DECODE_EXPLICIT_INTEGRAL_PARAM BOOST_TYPEOF_DECODE_INTEGRAL_PARAM
|
||||
#define BOOST_TYPEOF_ENCODE_EXPLICIT_INTEGRAL_PARAM BOOST_TYPEOF_ENCODE_INTEGRAL_PARAM
|
||||
|
||||
#define BOOST_TYPEOF_EXPAND_TYPE(Param)\
|
||||
BOOST_PP_CAT(BOOST_TYPEOF_EXPAND_, BOOST_PP_SEQ_ELEM(0, Param))(Param)
|
||||
|
||||
#define BOOST_TYPEOF_EXPAND_TYPE_PARAM(Param) BOOST_TYPEOF_PARAM_GETTYPE(Param)
|
||||
#define BOOST_TYPEOF_EXPAND_INTEGRAL_PARAM(Param) BOOST_TYPEOF_PARAM_GETTYPE(Param)
|
||||
#define BOOST_TYPEOF_EXPAND_EXPLICIT_INTEGRAL_PARAM(Param) BOOST_TYPEOF_PARAM_GETTYPE(Param)
|
||||
|
||||
#define BOOST_TYPEOF_SEQ_EXPAND_ELEMENT(z,n,seq)\
|
||||
BOOST_PP_SEQ_ELEM(0,seq)(z,n,BOOST_PP_SEQ_ELEM(n,BOOST_PP_SEQ_ELEM(1,seq)))
|
||||
|
||||
#define BOOST_TYPEOF_SEQ_ENUM(seq,macro)\
|
||||
BOOST_PP_ENUM(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq))
|
||||
|
||||
#define BOOST_TYPEOF_SEQ_ENUM_TRAILING(seq,macro)\
|
||||
BOOST_PP_ENUM_TRAILING(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq))
|
||||
|
||||
#endif//BOOST_TYPEOF_COMPLIANT_TEMPLATE_ENCODING_HPP_INCLUDED
|
||||
#endif//BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED
|
@@ -13,7 +13,9 @@
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::deque, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::deque, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::deque, 2)
|
||||
|
||||
#endif//BOOST_TYPEOF_STD_deque_hpp_INCLUDED
|
||||
|
@@ -13,13 +13,21 @@
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_filebuf, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_filebuf, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_filebuf, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_ifstream, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ifstream, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ifstream, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_ofstream, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ofstream, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ofstream, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_fstream, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_fstream, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_fstream, 2)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TYPE(std::filebuf)
|
||||
|
@@ -14,7 +14,9 @@
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::fpos, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_ios, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ios, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ios, 2)
|
||||
|
||||
#endif//BOOST_TYPEOF_STD_iostream_hpp_INCLUDED
|
||||
|
@@ -13,9 +13,13 @@
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_istream, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istream, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istream, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_iostream, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_iostream, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_iostream, 2)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TYPE(std::istream)
|
||||
|
@@ -15,12 +15,16 @@
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator_traits, 1)
|
||||
#if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::iterator, 2)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 2)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 3)
|
||||
#else
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::iterator, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::iterator, 3)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::iterator, 4)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 3)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 4)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 5)
|
||||
#endif//BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
|
||||
BOOST_TYPEOF_REGISTER_TYPE(std::input_iterator_tag)
|
||||
@@ -29,9 +33,11 @@ BOOST_TYPEOF_REGISTER_TYPE(std::forward_iterator_tag)
|
||||
BOOST_TYPEOF_REGISTER_TYPE(std::bidirectional_iterator_tag)
|
||||
BOOST_TYPEOF_REGISTER_TYPE(std::random_access_iterator_tag)
|
||||
#if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::reverse_iterator, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::reverse_iterator, 3)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::reverse_iterator, 4)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 3)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 4)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 5)
|
||||
#else
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 1)
|
||||
@@ -40,21 +46,31 @@ BOOST_TYPEOF_REGISTER_TEMPLATE(std::back_insert_iterator, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::front_insert_iterator, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::insert_iterator, 1)
|
||||
#if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::istream_iterator, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::istream_iterator, 2)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 2)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 3)
|
||||
#else
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::istream_iterator, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::istream_iterator, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::istream_iterator, 3)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 3)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 4)
|
||||
#endif//BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::ostream_iterator, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::ostream_iterator, 2)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostream_iterator, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostream_iterator, 2)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostream_iterator, 3)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::istreambuf_iterator, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istreambuf_iterator, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istreambuf_iterator, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::ostreambuf_iterator, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostreambuf_iterator, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostreambuf_iterator, 2)
|
||||
|
||||
#endif//BOOST_TYPEOF_STD_iterator_hpp_INCLUDED
|
||||
|
@@ -13,7 +13,9 @@
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::list, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::list, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::list, 2)
|
||||
|
||||
#endif//BOOST_TYPEOF_STD_list_hpp_INCLUDED
|
||||
|
@@ -15,11 +15,15 @@
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::map, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::map, 3)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::map, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::map, 3)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::map, 4)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::multimap, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::multimap, 3)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::multimap, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::multimap, 3)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::multimap, 4)
|
||||
|
||||
#endif//BOOST_TYPEOF_STD_map_hpp_INCLUDED
|
||||
|
@@ -13,7 +13,9 @@
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_ostream, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostream, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostream, 2)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TYPE(std::ostream)
|
||||
|
@@ -13,7 +13,9 @@
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::queue, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::queue, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::queue, 2)
|
||||
|
||||
#endif//BOOST_TYPEOF_STD_queue_hpp_INCLUDED
|
||||
|
@@ -14,11 +14,15 @@
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::set, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::set, 2)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::set, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::set, 2)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::set, 3)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::multiset, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::multiset, 2)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::multiset, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::multiset, 2)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::multiset, 3)
|
||||
|
||||
#endif//BOOST_TYPEOF_STD_set_hpp_INCLUDED
|
||||
|
@@ -14,17 +14,25 @@
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_stringbuf, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_stringbuf, 2)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringbuf, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringbuf, 2)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringbuf, 3)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_istringstream, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_istringstream, 2)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istringstream, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istringstream, 2)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istringstream, 3)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_ostringstream, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_ostringstream, 2)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostringstream, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostringstream, 2)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostringstream, 3)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_stringstream, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_stringstream, 2)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringstream, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringstream, 2)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringstream, 3)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TYPE(std::stringbuf)
|
||||
|
@@ -13,7 +13,9 @@
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::stack, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::stack, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::stack, 2)
|
||||
|
||||
#endif//BOOST_TYPEOF_STD_stack_hpp_INCLUDED
|
||||
|
@@ -13,7 +13,9 @@
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_streambuf, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_streambuf, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_streambuf, 2)
|
||||
|
||||
#endif//BOOST_TYPEOF_STD_streambuf_hpp_INCLUDED
|
||||
|
@@ -14,8 +14,10 @@
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::char_traits, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_string, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::basic_string, 2)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_string, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_string, 2)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_string, 3)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TYPE(std::string)
|
||||
|
@@ -13,7 +13,9 @@
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_WITH_DEFAULTS(std::vector, 1)
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::vector, 1)
|
||||
#endif//BOOST_TYPEOF_COMPLIANT
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::vector, 2)
|
||||
|
||||
#endif//BOOST_TYPEOF_STD_vector_hpp_INCLUDED
|
||||
|
55
include/boost/typeof/template_encoding.hpp
Executable file
55
include/boost/typeof/template_encoding.hpp
Executable file
@@ -0,0 +1,55 @@
|
||||
// Copyright (C) 2004 Arkadiy Vertleyb
|
||||
// Copyright (C) 2005 Peder Holt
|
||||
// Use, modification and distribution is subject to the Boost Software
|
||||
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef BOOST_TYPEOF_REGISTER_INTEGRAL_HPP_INCLUDED
|
||||
#define BOOST_TYPEOF_REGISTER_INTEGRAL_HPP_INCLUDED
|
||||
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/seq.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_trailing.hpp>
|
||||
|
||||
// The template parameter description, entered by the user,
|
||||
// is converted into a polymorphic "object"
|
||||
// that is used to generate the code responsible for
|
||||
// encoding/decoding the parameter, etc.
|
||||
|
||||
// make sure to cat the sequence first, and only then add the prefix.
|
||||
#define BOOST_TYPEOF_MAKE_OBJ(elem) BOOST_PP_CAT(\
|
||||
BOOST_TYPEOF_MAKE_OBJ,\
|
||||
BOOST_PP_SEQ_CAT((_) BOOST_TYPEOF_TO_SEQ(elem))\
|
||||
)
|
||||
|
||||
#define BOOST_TYPEOF_TO_SEQ(tokens) BOOST_TYPEOF_ ## tokens ## _BOOST_TYPEOF
|
||||
|
||||
|
||||
// "interface"
|
||||
|
||||
#define BOOST_TYPEOF_PARAM_ENCODE(Param)\
|
||||
BOOST_PP_CAT(BOOST_TYPEOF_ENCODE_, BOOST_PP_SEQ_ELEM(0, Param))
|
||||
|
||||
#define BOOST_TYPEOF_PARAM_DECODE(Param)\
|
||||
BOOST_PP_CAT(BOOST_TYPEOF_DECODE_, BOOST_PP_SEQ_ELEM(0, Param))
|
||||
|
||||
#define BOOST_TYPEOF_PARAM_GETTYPE(Param)\
|
||||
BOOST_PP_SEQ_ELEM(1, Param)
|
||||
|
||||
#define BOOST_TYPEOF_PARAM_GETNAME(Param)\
|
||||
BOOST_PP_SEQ_ELEM(2, Param)
|
||||
|
||||
#define BOOST_TYPEOF_EXPAND_TYPE(Param)\
|
||||
BOOST_PP_CAT(BOOST_TYPEOF_EXPAND_, BOOST_PP_SEQ_ELEM(0, Param))(Param)
|
||||
|
||||
//
|
||||
|
||||
#define BOOST_TYPEOF_SEQ_EXPAND_ELEMENT(z,n,seq)\
|
||||
BOOST_PP_SEQ_ELEM(0,seq)(z,n,BOOST_PP_SEQ_ELEM(n,BOOST_PP_SEQ_ELEM(1,seq)))
|
||||
|
||||
#define BOOST_TYPEOF_SEQ_ENUM(seq,macro)\
|
||||
BOOST_PP_ENUM(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq))
|
||||
|
||||
#define BOOST_TYPEOF_SEQ_ENUM_TRAILING(seq,macro)\
|
||||
BOOST_PP_ENUM_TRAILING(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq))
|
||||
|
||||
#endif//BOOST_TYPEOF_COMPLIANT_TEMPLATE_ENCODING_HPP_INCLUDED
|
19
include/boost/typeof/type_template_param.hpp
Executable file
19
include/boost/typeof/type_template_param.hpp
Executable file
@@ -0,0 +1,19 @@
|
||||
// Copyright (C) 2005 Arkadiy Vertleyb
|
||||
// Use, modification and distribution is subject to the Boost Software
|
||||
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
|
||||
#define BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
|
||||
|
||||
#define BOOST_TYPEOF_class_BOOST_TYPEOF (class)
|
||||
#define BOOST_TYPEOF_typename_BOOST_TYPEOF (typename)
|
||||
|
||||
#define BOOST_TYPEOF_MAKE_OBJ_class BOOST_TYPEOF_TYPE_PARAM
|
||||
#define BOOST_TYPEOF_MAKE_OBJ_typename BOOST_TYPEOF_TYPE_PARAM
|
||||
|
||||
#define BOOST_TYPEOF_TYPE_PARAM\
|
||||
(TYPE_PARAM)\
|
||||
(class)\
|
||||
(class)
|
||||
|
||||
#endif//BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
|
@@ -16,7 +16,9 @@
|
||||
#include <boost/typeof/config.hpp>
|
||||
#include <boost/typeof/vintage/encode_decode.hpp>
|
||||
#include <boost/typeof/vintage/int_encoding.hpp>
|
||||
#include <boost/typeof/register_integral.hpp>
|
||||
#include <boost/typeof/template_encoding.hpp>
|
||||
#include <boost/typeof/type_template_param.hpp>
|
||||
#include <boost/typeof/integral_template_param.hpp>
|
||||
|
||||
//
|
||||
|
||||
|
@@ -21,6 +21,7 @@
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="C:\boost\boost_1_32_0;..\..\..\.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
GeneratePreprocessedFile="0"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="5"
|
||||
@@ -127,69 +128,91 @@
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\test_compliant.cpp">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
GeneratePreprocessedFile="0"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\concatenate.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\config.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\encode_decode.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\increment_registration_group.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\int_encoding.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\limit_size.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\lvalue_typeof.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\modifiers.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\odr.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\pointers_data_members.hpp">
|
||||
RelativePath="..\..\..\..\boost\typeof\integral_template_param.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\register_functions.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\register_functions_iterate.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\register_fundamental.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\register_integral.hpp">
|
||||
RelativePath="..\..\..\..\boost\typeof\template_encoding.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\register_mem_functions.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\template_encoding.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\type_encoding.hpp">
|
||||
RelativePath="..\..\..\..\boost\typeof\type_template_param.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\typeof.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\typeof_impl.hpp">
|
||||
</File>
|
||||
<Filter
|
||||
Name="compliant"
|
||||
Filter="">
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\concatenate.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\encode_decode.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\int_encoding.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\integral_template_param.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\limit_size.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\lvalue_typeof.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\modifiers.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\pointers_data_members.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\register_functions_iterate.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\register_mem_functions.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\template_encoding.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\template_template_param.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\type_encoding.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\type_template_param.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\typeof\compliant\typeof_impl.hpp">
|
||||
</File>
|
||||
</Filter>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="spirit"
|
||||
|
@@ -54,6 +54,24 @@ struct typeof_test
|
||||
};
|
||||
};
|
||||
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
#pragma message("template template encoding...")
|
||||
|
||||
namespace template_template {
|
||||
template<template<typename,unsigned int> class P0,int P1>
|
||||
struct tt_test {};
|
||||
|
||||
template<typename A,unsigned int B>
|
||||
struct C {};
|
||||
}
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_X(template_template::tt_test,(BOOST_TYPEOF_TEMPLATE( (typename)(unsigned int) ))(int))
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE(template_template::C,(typename)(unsigned int))
|
||||
|
||||
|
||||
BOOST_STATIC_ASSERT((typeof_test<template_template::tt_test<template_template::C,4> >::value));
|
||||
#endif
|
||||
|
||||
#pragma message("modifiers...")
|
||||
|
||||
BOOST_STATIC_ASSERT(typeof_test<int*>::value);
|
||||
@@ -99,22 +117,6 @@ BOOST_TYPEOF_REGISTER_TEMPLATE_X(with_integrals,
|
||||
BOOST_STATIC_ASSERT((typeof_test<with_integrals<int, 5, 4, -3, 2, true, false, -1, 5> >::value));
|
||||
BOOST_STATIC_ASSERT((typeof_test<with_integrals<int, 1, 1, 0, ULONG_MAX, false, true, -1, 0> >::value));
|
||||
|
||||
#ifdef BOOST_TYPEOF_COMPLIANT
|
||||
#pragma message("template template encoding...")
|
||||
|
||||
namespace template_template {
|
||||
template<template<typename,unsigned int> class P0,int P1>
|
||||
struct tt_test {};
|
||||
|
||||
template<typename A,unsigned int B>
|
||||
struct C {};
|
||||
}
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_X(template_template::tt_test,(BOOST_TYPEOF_TEMPLATE( (typename)(unsigned int) ))(int))
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE_X(template_template::C,(typename)(unsigned int))
|
||||
BOOST_STATIC_ASSERT((typeof_test<template_template::tt_test<template_template::C,4> >::value));
|
||||
#endif
|
||||
|
||||
#pragma message("namespace-level function pointers...")
|
||||
BOOST_STATIC_ASSERT(typeof_test<double(*)()>::value);
|
||||
BOOST_STATIC_ASSERT(typeof_test<double(*)(int, double, short, char*, bool, char, float, long, unsigned short)>::value);
|
||||
|
Reference in New Issue
Block a user