forked from boostorg/fusion
Compare commits
1 Commits
boost-1.55
...
boost-1.51
Author | SHA1 | Date | |
---|---|---|---|
8f9736a5f3 |
@ -492,7 +492,7 @@ Deferences the data property associated with the element referenced by an associ
|
||||
template<
|
||||
typename I
|
||||
>
|
||||
typename __result_of_deref_data__<I>::type deref_data(I const& i);
|
||||
typename __result_of_deref_data__<I>::type deref(I const& i);
|
||||
|
||||
[table Parameters
|
||||
[[Parameter] [Requirement] [Description]]
|
||||
|
@ -91,7 +91,7 @@ Where `Vi` is `X&` if the cv-unqualified type `Ti` is `reference_wrapper<X>`, ot
|
||||
template<typename T1, typename T2, ..., typename TN>
|
||||
tuple<T1&, T2&, ..., TN&> tie(T1& t1, T2& t2, ..., TN& tn);
|
||||
|
||||
[*Returns]: tuple<T1&, T2&, ..., TN&>(t1, t2, ..., tN). When argument `ti` is `ignore`, assigning any value to the corresponding tuple element has no effect.
|
||||
[*Returns]: tuple<T1&, T2&, ..., TN&>(t1, t2, ..., tN). When argument `ti` is `ignore`, assigning any value to the corresponding tuple element has has no effect.
|
||||
|
||||
[endsect]
|
||||
|
||||
@ -254,7 +254,7 @@ The __tr1__tuple__ interface is specified to provide uniform access to `std::pai
|
||||
|
||||
[*Type]: `T2`
|
||||
|
||||
[*Value]: Returns the type of the second element of the pair
|
||||
[*Value]: Returns thetype of the second element of the pair
|
||||
|
||||
template<int I, typename T1, typename T2>
|
||||
P& get(std::pair<T1, T2>& pr);
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
// The std_tuple_iterator adaptor only supports implementations
|
||||
// using variadic templates
|
||||
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
||||
#if !defined(BOOST_NO_VARIADIC_TEMPLATES)
|
||||
#include <boost/fusion/adapted/std_tuple.hpp>
|
||||
#endif
|
||||
|
||||
|
@ -8,7 +8,6 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEFINE_STRUCT_INLINE_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEFINE_STRUCT_INLINE_HPP
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/fusion/support/category_of.hpp>
|
||||
#include <boost/fusion/sequence/sequence_facade.hpp>
|
||||
#include <boost/fusion/iterator/iterator_facade.hpp>
|
||||
@ -21,37 +20,12 @@
|
||||
#include <boost/mpl/if.hpp>
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
#include <boost/preprocessor/comma_if.hpp>
|
||||
#include <boost/preprocessor/facilities/is_empty.hpp>
|
||||
#include <boost/preprocessor/repeat.hpp>
|
||||
#include <boost/preprocessor/seq/for_each_i.hpp>
|
||||
#include <boost/preprocessor/seq/size.hpp>
|
||||
#include <boost/preprocessor/seq/enum.hpp>
|
||||
#include <boost/preprocessor/seq/seq.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
|
||||
// MSVC and GCC <= 4.4 have a bug that affects partial specializations of
|
||||
// nested templates under some circumstances. This affects the implementation
|
||||
// of BOOST_FUSION_DEFINE_STRUCT_INLINE, which uses such specializations for
|
||||
// the iterator class's 'deref' and 'value_of' metafunctions. On these compilers
|
||||
// an alternate implementation for these metafunctions is used that does not
|
||||
// require such specializations. The alternate implementation takes longer
|
||||
// to compile so its use is restricted to the offending compilers.
|
||||
// For MSVC, the bug was was reported at https://connect.microsoft.com/VisualStudio/feedback/details/757891/c-compiler-error-involving-partial-specializations-of-nested-templates
|
||||
// For GCC, 4.4 and earlier are no longer maintained so there is no need
|
||||
// to report a bug.
|
||||
#if defined(BOOST_MSVC) || (defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 4)))
|
||||
#define BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND
|
||||
#endif
|
||||
|
||||
#ifdef BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND
|
||||
#include <boost/type_traits/add_const.hpp>
|
||||
#include <boost/type_traits/remove_const.hpp>
|
||||
#include <boost/mpl/if.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/at_c.hpp>
|
||||
#include <boost/fusion/container/vector.hpp>
|
||||
#endif
|
||||
|
||||
|
||||
#define BOOST_FUSION_MAKE_DEFAULT_INIT_LIST_ENTRY(R, DATA, N, ATTRIBUTE) \
|
||||
BOOST_PP_COMMA_IF(N) BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE)()
|
||||
|
||||
@ -87,20 +61,15 @@
|
||||
BOOST_PP_COMMA_IF(N) \
|
||||
BOOST_FUSION_MAKE_INIT_LIST_ENTRY_I(BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE))
|
||||
|
||||
#define BOOST_FUSION_ITERATOR_NAME(NAME) \
|
||||
BOOST_PP_CAT(boost_fusion_detail_, BOOST_PP_CAT(NAME, _iterator))
|
||||
|
||||
// Note: all template parameter names need to be uglified, otherwise they might
|
||||
// shadow a template parameter of the struct when used with
|
||||
// BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE
|
||||
|
||||
#define BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS(Z, N, NAME) \
|
||||
template <typename boost_fusion_detail_Sq> \
|
||||
struct value_of< \
|
||||
BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, N> \
|
||||
> \
|
||||
template <typename boost_fusion_uglified_Sq> \
|
||||
struct value_of<NAME##_iterator<boost_fusion_uglified_Sq, N> > \
|
||||
: boost::mpl::identity< \
|
||||
typename boost_fusion_detail_Sq::t##N##_type \
|
||||
typename boost_fusion_uglified_Sq::t##N##_type \
|
||||
> \
|
||||
{ \
|
||||
};
|
||||
@ -108,10 +77,10 @@
|
||||
#define BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
||||
SPEC_TYPE, CALL_ARG_TYPE, TYPE_QUAL, ATTRIBUTE, N) \
|
||||
\
|
||||
template <typename boost_fusion_detail_Sq> \
|
||||
template <typename boost_fusion_uglified_Sq> \
|
||||
struct deref<SPEC_TYPE, N> > \
|
||||
{ \
|
||||
typedef typename boost_fusion_detail_Sq::t##N##_type TYPE_QUAL& type; \
|
||||
typedef typename boost_fusion_uglified_Sq::t##N##_type TYPE_QUAL& type; \
|
||||
static type call(CALL_ARG_TYPE, N> const& iter) \
|
||||
{ \
|
||||
return iter.seq_.BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \
|
||||
@ -120,48 +89,48 @@
|
||||
|
||||
#define BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS(R, NAME, N, ATTRIBUTE) \
|
||||
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
||||
BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, \
|
||||
BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, \
|
||||
BOOST_PP_CAT(NAME, _iterator)<boost_fusion_uglified_Sq, \
|
||||
BOOST_PP_CAT(NAME, _iterator)<boost_fusion_uglified_Sq, \
|
||||
, \
|
||||
ATTRIBUTE, \
|
||||
N) \
|
||||
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
||||
BOOST_FUSION_ITERATOR_NAME(NAME)<const boost_fusion_detail_Sq, \
|
||||
BOOST_FUSION_ITERATOR_NAME(NAME)<const boost_fusion_detail_Sq, \
|
||||
BOOST_PP_CAT(NAME, _iterator)<const boost_fusion_uglified_Sq, \
|
||||
BOOST_PP_CAT(NAME, _iterator)<const boost_fusion_uglified_Sq, \
|
||||
const, \
|
||||
ATTRIBUTE, \
|
||||
N) \
|
||||
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
||||
const BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, \
|
||||
BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, \
|
||||
const BOOST_PP_CAT(NAME, _iterator)<boost_fusion_uglified_Sq, \
|
||||
BOOST_PP_CAT(NAME, _iterator)<boost_fusion_uglified_Sq, \
|
||||
, \
|
||||
ATTRIBUTE, \
|
||||
N) \
|
||||
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
||||
const BOOST_FUSION_ITERATOR_NAME(NAME)<const boost_fusion_detail_Sq, \
|
||||
BOOST_FUSION_ITERATOR_NAME(NAME)<const boost_fusion_detail_Sq, \
|
||||
const BOOST_PP_CAT(NAME, _iterator)<const boost_fusion_uglified_Sq, \
|
||||
BOOST_PP_CAT(NAME, _iterator)<const boost_fusion_uglified_Sq, \
|
||||
const, \
|
||||
ATTRIBUTE, \
|
||||
N) \
|
||||
|
||||
#define BOOST_FUSION_MAKE_VALUE_AT_SPECS(Z, N, DATA) \
|
||||
template <typename boost_fusion_detail_Sq> \
|
||||
struct value_at<boost_fusion_detail_Sq, boost::mpl::int_<N> > \
|
||||
template <typename boost_fusion_uglified_Sq> \
|
||||
struct value_at<boost_fusion_uglified_Sq, boost::mpl::int_<N> > \
|
||||
{ \
|
||||
typedef typename boost_fusion_detail_Sq::t##N##_type type; \
|
||||
typedef typename boost_fusion_uglified_Sq::t##N##_type type; \
|
||||
};
|
||||
|
||||
#define BOOST_FUSION_MAKE_AT_SPECS(R, DATA, N, ATTRIBUTE) \
|
||||
template <typename boost_fusion_detail_Sq> \
|
||||
struct at<boost_fusion_detail_Sq, boost::mpl::int_<N> > \
|
||||
template <typename boost_fusion_uglified_Sq> \
|
||||
struct at<boost_fusion_uglified_Sq, boost::mpl::int_<N> > \
|
||||
{ \
|
||||
typedef typename boost::mpl::if_< \
|
||||
boost::is_const<boost_fusion_detail_Sq>, \
|
||||
typename boost_fusion_detail_Sq::t##N##_type const&, \
|
||||
typename boost_fusion_detail_Sq::t##N##_type& \
|
||||
boost::is_const<boost_fusion_uglified_Sq>, \
|
||||
typename boost_fusion_uglified_Sq::t##N##_type const&, \
|
||||
typename boost_fusion_uglified_Sq::t##N##_type& \
|
||||
>::type type; \
|
||||
\
|
||||
static type call(boost_fusion_detail_Sq& sq) \
|
||||
static type call(boost_fusion_uglified_Sq& sq) \
|
||||
{ \
|
||||
return sq. BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \
|
||||
} \
|
||||
@ -173,100 +142,7 @@
|
||||
#define BOOST_FUSION_MAKE_DATA_MEMBER(R, DATA, N, ATTRIBUTE) \
|
||||
BOOST_PP_TUPLE_ELEM(2, 0, ATTRIBUTE) BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE);
|
||||
|
||||
#ifdef BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND
|
||||
|
||||
#define BOOST_FUSION_DEFINE_ITERATOR_VALUE_OF(NAME, ATTRIBUTE_SEQ_SIZE) \
|
||||
template <typename boost_fusion_detail_Iterator> \
|
||||
struct value_of : boost::fusion::result_of::at_c< \
|
||||
ref_vec_t, \
|
||||
boost_fusion_detail_Iterator::index::value \
|
||||
> \
|
||||
{ \
|
||||
};
|
||||
|
||||
#define BOOST_FUSION_DEFINE_ITERATOR_DEREF(NAME, ATTRIBUTES_SEQ) \
|
||||
template <typename boost_fusion_detail_Iterator> \
|
||||
struct deref \
|
||||
{ \
|
||||
typedef typename boost::remove_const< \
|
||||
boost_fusion_detail_Iterator \
|
||||
>::type iterator_raw_type; \
|
||||
\
|
||||
static const int index = iterator_raw_type::index::value; \
|
||||
\
|
||||
typedef typename boost::fusion::result_of::at_c< \
|
||||
ref_vec_t, \
|
||||
index \
|
||||
>::type result_raw_type; \
|
||||
\
|
||||
typedef typename boost::mpl::if_< \
|
||||
boost::is_const<typename iterator_raw_type::sequence_type>, \
|
||||
typename boost::add_const<result_raw_type>::type, \
|
||||
result_raw_type \
|
||||
>::type type; \
|
||||
\
|
||||
static type call(iterator_raw_type const& iter) \
|
||||
{ \
|
||||
return boost::fusion::at_c<index>(iter.ref_vec); \
|
||||
} \
|
||||
};
|
||||
|
||||
#define BOOST_FUSION_MAKE_ITERATOR_WKND_FIELD_NAME(R, DATA, N, ATTRIBUTE) \
|
||||
BOOST_PP_COMMA_IF(N) seq.BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE)
|
||||
|
||||
#define BOOST_FUSION_DEFINE_ITERATOR_WKND_INIT_LIST_ENTRIES(ATTRIBUTES_SEQ) \
|
||||
, ref_vec(BOOST_PP_SEQ_FOR_EACH_I( \
|
||||
BOOST_FUSION_MAKE_ITERATOR_WKND_FIELD_NAME, \
|
||||
~, \
|
||||
BOOST_PP_SEQ_TAIL(ATTRIBUTES_SEQ)))
|
||||
|
||||
#define BOOST_FUSION_MAKE_ITERATOR_WKND_REF(Z, N, DATA) \
|
||||
BOOST_PP_COMMA_IF(N) \
|
||||
typename boost::mpl::if_< \
|
||||
boost::is_const<boost_fusion_detail_Seq>, \
|
||||
typename boost::add_const< \
|
||||
typename boost_fusion_detail_Seq::t##N##_type \
|
||||
>::type, \
|
||||
typename boost_fusion_detail_Seq::t##N##_type \
|
||||
>::type&
|
||||
|
||||
#define BOOST_FUSION_DEFINE_ITERATOR_WKND_MEMBERS(ATTRIBUTES_SEQ_SIZE) \
|
||||
typedef boost::fusion::vector< \
|
||||
BOOST_PP_REPEAT( \
|
||||
ATTRIBUTES_SEQ_SIZE, \
|
||||
BOOST_FUSION_MAKE_ITERATOR_WKND_REF, \
|
||||
~) \
|
||||
> ref_vec_t; \
|
||||
\
|
||||
ref_vec_t ref_vec;
|
||||
|
||||
#else
|
||||
|
||||
#define BOOST_FUSION_DEFINE_ITERATOR_VALUE_OF(NAME, ATTRIBUTES_SEQ_SIZE) \
|
||||
template <typename boost_fusion_detail_T> struct value_of; \
|
||||
BOOST_PP_REPEAT( \
|
||||
ATTRIBUTES_SEQ_SIZE, \
|
||||
BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS, \
|
||||
NAME)
|
||||
|
||||
#define BOOST_FUSION_DEFINE_ITERATOR_DEREF(NAME, ATTRIBUTES_SEQ) \
|
||||
template <typename boost_fusion_detail_T> struct deref; \
|
||||
BOOST_PP_SEQ_FOR_EACH_I( \
|
||||
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS, \
|
||||
NAME, \
|
||||
ATTRIBUTES_SEQ)
|
||||
|
||||
#define BOOST_FUSION_DEFINE_ITERATOR_WKND_INIT_LIST_ENTRIES(ATTRIBUTES_SEQ)
|
||||
|
||||
#define BOOST_FUSION_DEFINE_ITERATOR_WKND_MEMBERS(ATTRIBUTES_SEQ_SIZE)
|
||||
|
||||
#endif // BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND
|
||||
|
||||
// Note: We can't nest the iterator inside the struct because we run into
|
||||
// a MSVC10 bug involving partial specializations of nested templates.
|
||||
|
||||
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_IMPL(NAME, ATTRIBUTES) \
|
||||
BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR(NAME, ATTRIBUTES) \
|
||||
struct NAME : boost::fusion::sequence_facade< \
|
||||
NAME, \
|
||||
boost::fusion::random_access_traversal_tag \
|
||||
@ -278,8 +154,6 @@
|
||||
#define BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE_IMPL( \
|
||||
TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES) \
|
||||
\
|
||||
BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR(NAME, ATTRIBUTES) \
|
||||
\
|
||||
template < \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL( \
|
||||
(0)TEMPLATE_PARAMS_SEQ) \
|
||||
@ -299,198 +173,176 @@
|
||||
NAME, \
|
||||
BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END))
|
||||
|
||||
// Note: can't compute BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ) directly because
|
||||
// ATTRIBUTES_SEQ may be empty and calling BOOST_PP_SEQ_SIZE on an empty
|
||||
// sequence produces warnings on MSVC.
|
||||
#define BOOST_FUSION_DEFINE_STRUCT_MEMBERS_IMPL(NAME, ATTRIBUTES_SEQ) \
|
||||
BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \
|
||||
NAME, \
|
||||
ATTRIBUTES_SEQ, \
|
||||
BOOST_PP_DEC(BOOST_PP_SEQ_SIZE((0)ATTRIBUTES_SEQ)))
|
||||
BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ))
|
||||
|
||||
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR(NAME, ATTRIBUTES) \
|
||||
BOOST_FUSION_DEFINE_STRUCT_ITERATOR_IMPL( \
|
||||
NAME, \
|
||||
BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END))
|
||||
|
||||
#define BOOST_FUSION_DEFINE_STRUCT_ITERATOR_IMPL(NAME, ATTRIBUTES_SEQ) \
|
||||
BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR_IMPL_IMPL( \
|
||||
NAME, \
|
||||
ATTRIBUTES_SEQ, \
|
||||
BOOST_PP_DEC(BOOST_PP_SEQ_SIZE((0)ATTRIBUTES_SEQ)))
|
||||
|
||||
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR_IMPL_IMPL( \
|
||||
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \
|
||||
NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \
|
||||
\
|
||||
template <typename boost_fusion_detail_Seq, int N> \
|
||||
struct BOOST_FUSION_ITERATOR_NAME(NAME) \
|
||||
NAME() \
|
||||
BOOST_PP_IF( \
|
||||
BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ), \
|
||||
BOOST_FUSION_MAKE_DEFAULT_INIT_LIST, \
|
||||
BOOST_FUSION_IGNORE_1) \
|
||||
(ATTRIBUTES_SEQ) \
|
||||
{ \
|
||||
} \
|
||||
\
|
||||
BOOST_PP_IF( \
|
||||
BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ), \
|
||||
BOOST_FUSION_MAKE_COPY_CONSTRUCTOR, \
|
||||
BOOST_FUSION_IGNORE_2) \
|
||||
(NAME, ATTRIBUTES_SEQ) \
|
||||
\
|
||||
template <typename boost_fusion_uglified_Seq> \
|
||||
NAME(const boost_fusion_uglified_Seq& rhs) \
|
||||
{ \
|
||||
boost::fusion::copy(rhs, *this); \
|
||||
} \
|
||||
\
|
||||
template <typename boost_fusion_uglified_Seq> \
|
||||
NAME& operator=(const boost_fusion_uglified_Seq& rhs) \
|
||||
{ \
|
||||
boost::fusion::copy(rhs, *this); \
|
||||
return *this; \
|
||||
} \
|
||||
\
|
||||
template <typename boost_fusion_uglified_Seq, int N> \
|
||||
struct NAME##_iterator \
|
||||
: boost::fusion::iterator_facade< \
|
||||
BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Seq, N>, \
|
||||
NAME##_iterator<boost_fusion_uglified_Seq, N>, \
|
||||
boost::fusion::random_access_traversal_tag \
|
||||
> \
|
||||
{ \
|
||||
typedef boost::mpl::int_<N> index; \
|
||||
typedef boost_fusion_detail_Seq sequence_type; \
|
||||
typedef boost_fusion_uglified_Seq sequence_type; \
|
||||
\
|
||||
BOOST_FUSION_ITERATOR_NAME(NAME)(boost_fusion_detail_Seq& seq) \
|
||||
: seq_(seq) \
|
||||
BOOST_FUSION_DEFINE_ITERATOR_WKND_INIT_LIST_ENTRIES( \
|
||||
(0)ATTRIBUTES_SEQ) \
|
||||
{} \
|
||||
NAME##_iterator(boost_fusion_uglified_Seq& seq) : seq_(seq) {} \
|
||||
\
|
||||
boost_fusion_detail_Seq& seq_; \
|
||||
boost_fusion_uglified_Seq& seq_; \
|
||||
\
|
||||
BOOST_FUSION_DEFINE_ITERATOR_WKND_MEMBERS(ATTRIBUTES_SEQ_SIZE) \
|
||||
template <typename boost_fusion_uglified_T> struct value_of; \
|
||||
BOOST_PP_REPEAT( \
|
||||
ATTRIBUTES_SEQ_SIZE, \
|
||||
BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS, \
|
||||
NAME) \
|
||||
\
|
||||
BOOST_FUSION_DEFINE_ITERATOR_VALUE_OF(NAME, ATTRIBUTES_SEQ_SIZE) \
|
||||
template <typename boost_fusion_uglified_T> struct deref; \
|
||||
BOOST_PP_SEQ_FOR_EACH_I( \
|
||||
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS, \
|
||||
NAME, \
|
||||
ATTRIBUTES_SEQ) \
|
||||
\
|
||||
BOOST_FUSION_DEFINE_ITERATOR_DEREF(NAME, ATTRIBUTES_SEQ) \
|
||||
\
|
||||
template <typename boost_fusion_detail_It> \
|
||||
template <typename boost_fusion_uglified_It> \
|
||||
struct next \
|
||||
{ \
|
||||
typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \
|
||||
typename boost_fusion_detail_It::sequence_type, \
|
||||
boost_fusion_detail_It::index::value + 1 \
|
||||
typedef NAME##_iterator< \
|
||||
typename boost_fusion_uglified_It::sequence_type, \
|
||||
boost_fusion_uglified_It::index::value + 1 \
|
||||
> type; \
|
||||
\
|
||||
static type call(boost_fusion_detail_It const& it) \
|
||||
static type call(boost_fusion_uglified_It const& it) \
|
||||
{ \
|
||||
return type(it.seq_); \
|
||||
} \
|
||||
}; \
|
||||
\
|
||||
template <typename boost_fusion_detail_It> \
|
||||
template <typename boost_fusion_uglified_It> \
|
||||
struct prior \
|
||||
{ \
|
||||
typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \
|
||||
typename boost_fusion_detail_It::sequence_type, \
|
||||
boost_fusion_detail_It::index::value - 1 \
|
||||
typedef NAME##_iterator< \
|
||||
typename boost_fusion_uglified_It::sequence_type, \
|
||||
boost_fusion_uglified_It::index::value - 1 \
|
||||
> type; \
|
||||
\
|
||||
static type call(boost_fusion_detail_It const& it) \
|
||||
static type call(boost_fusion_uglified_It const& it) \
|
||||
{ \
|
||||
return type(it.seq_); \
|
||||
} \
|
||||
}; \
|
||||
\
|
||||
template < \
|
||||
typename boost_fusion_detail_It1, \
|
||||
typename boost_fusion_detail_It2 \
|
||||
typename boost_fusion_uglified_It1, \
|
||||
typename boost_fusion_uglified_It2 \
|
||||
> \
|
||||
struct distance \
|
||||
{ \
|
||||
typedef typename boost::mpl::minus< \
|
||||
typename boost_fusion_detail_It2::index, \
|
||||
typename boost_fusion_detail_It1::index \
|
||||
typename boost_fusion_uglified_It2::index, \
|
||||
typename boost_fusion_uglified_It1::index \
|
||||
>::type type; \
|
||||
\
|
||||
static type call(boost_fusion_detail_It1 const& it1, \
|
||||
boost_fusion_detail_It2 const& it2) \
|
||||
static type call(boost_fusion_uglified_It1 const& it1, \
|
||||
boost_fusion_uglified_It2 const& it2) \
|
||||
{ \
|
||||
return type(); \
|
||||
} \
|
||||
}; \
|
||||
\
|
||||
template < \
|
||||
typename boost_fusion_detail_It, \
|
||||
typename boost_fusion_detail_M \
|
||||
typename boost_fusion_uglified_It, \
|
||||
typename boost_fusion_uglified_M \
|
||||
> \
|
||||
struct advance \
|
||||
{ \
|
||||
typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \
|
||||
typename boost_fusion_detail_It::sequence_type, \
|
||||
boost_fusion_detail_It::index::value \
|
||||
+ boost_fusion_detail_M::value \
|
||||
typedef NAME##_iterator< \
|
||||
typename boost_fusion_uglified_It::sequence_type, \
|
||||
boost_fusion_uglified_It::index::value \
|
||||
+ boost_fusion_uglified_M::value \
|
||||
> type; \
|
||||
\
|
||||
static type call(boost_fusion_detail_It const& it) \
|
||||
static type call(boost_fusion_uglified_It const& it) \
|
||||
{ \
|
||||
return type(it.seq_); \
|
||||
} \
|
||||
}; \
|
||||
};
|
||||
|
||||
|
||||
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \
|
||||
NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \
|
||||
}; \
|
||||
\
|
||||
/* Note: second BOOST_PP_IF is necessary to avoid MSVC warning when */ \
|
||||
/* calling BOOST_FUSION_IGNORE_1 with no arguments. */ \
|
||||
NAME() \
|
||||
BOOST_PP_IF( \
|
||||
ATTRIBUTES_SEQ_SIZE, \
|
||||
BOOST_FUSION_MAKE_DEFAULT_INIT_LIST, \
|
||||
BOOST_FUSION_IGNORE_1) \
|
||||
(BOOST_PP_IF( \
|
||||
ATTRIBUTES_SEQ_SIZE, \
|
||||
ATTRIBUTES_SEQ, \
|
||||
0)) \
|
||||
{ \
|
||||
} \
|
||||
\
|
||||
BOOST_PP_IF( \
|
||||
ATTRIBUTES_SEQ_SIZE, \
|
||||
BOOST_FUSION_MAKE_COPY_CONSTRUCTOR, \
|
||||
BOOST_FUSION_IGNORE_2) \
|
||||
(NAME, ATTRIBUTES_SEQ) \
|
||||
\
|
||||
template <typename boost_fusion_detail_Seq> \
|
||||
NAME(const boost_fusion_detail_Seq& rhs) \
|
||||
{ \
|
||||
boost::fusion::copy(rhs, *this); \
|
||||
} \
|
||||
\
|
||||
template <typename boost_fusion_detail_Seq> \
|
||||
NAME& operator=(const boost_fusion_detail_Seq& rhs) \
|
||||
{ \
|
||||
boost::fusion::copy(rhs, *this); \
|
||||
return *this; \
|
||||
} \
|
||||
\
|
||||
template <typename boost_fusion_detail_Sq> \
|
||||
template <typename boost_fusion_uglified_Sq> \
|
||||
struct begin \
|
||||
{ \
|
||||
typedef BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, 0> \
|
||||
type; \
|
||||
typedef NAME##_iterator<boost_fusion_uglified_Sq, 0> type; \
|
||||
\
|
||||
static type call(boost_fusion_detail_Sq& sq) \
|
||||
static type call(boost_fusion_uglified_Sq& sq) \
|
||||
{ \
|
||||
return type(sq); \
|
||||
} \
|
||||
}; \
|
||||
\
|
||||
template <typename boost_fusion_detail_Sq> \
|
||||
template <typename boost_fusion_uglified_Sq> \
|
||||
struct end \
|
||||
{ \
|
||||
typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \
|
||||
boost_fusion_detail_Sq, \
|
||||
typedef NAME##_iterator< \
|
||||
boost_fusion_uglified_Sq, \
|
||||
ATTRIBUTES_SEQ_SIZE \
|
||||
> type; \
|
||||
\
|
||||
static type call(boost_fusion_detail_Sq& sq) \
|
||||
static type call(boost_fusion_uglified_Sq& sq) \
|
||||
{ \
|
||||
return type(sq); \
|
||||
} \
|
||||
}; \
|
||||
\
|
||||
template <typename boost_fusion_detail_Sq> \
|
||||
template <typename boost_fusion_uglified_Sq> \
|
||||
struct size : boost::mpl::int_<ATTRIBUTES_SEQ_SIZE> \
|
||||
{ \
|
||||
}; \
|
||||
\
|
||||
template <typename boost_fusion_detail_Sq> \
|
||||
template <typename boost_fusion_uglified_Sq> \
|
||||
struct empty : boost::mpl::bool_<ATTRIBUTES_SEQ_SIZE == 0> \
|
||||
{ \
|
||||
}; \
|
||||
\
|
||||
template < \
|
||||
typename boost_fusion_detail_Sq, \
|
||||
typename boost_fusion_detail_N \
|
||||
typename boost_fusion_uglified_Sq, \
|
||||
typename boost_fusion_uglified_N \
|
||||
> \
|
||||
struct value_at : value_at< \
|
||||
boost_fusion_detail_Sq, \
|
||||
boost::mpl::int_<boost_fusion_detail_N::value> \
|
||||
boost_fusion_uglified_Sq, \
|
||||
boost::mpl::int_<boost_fusion_uglified_N::value> \
|
||||
> \
|
||||
{ \
|
||||
}; \
|
||||
@ -501,12 +353,12 @@
|
||||
~) \
|
||||
\
|
||||
template < \
|
||||
typename boost_fusion_detail_Sq, \
|
||||
typename boost_fusion_detail_N \
|
||||
typename boost_fusion_uglified_Sq, \
|
||||
typename boost_fusion_uglified_N \
|
||||
> \
|
||||
struct at : at< \
|
||||
boost_fusion_detail_Sq, \
|
||||
boost::mpl::int_<boost_fusion_detail_N::value> \
|
||||
boost_fusion_uglified_Sq, \
|
||||
boost::mpl::int_<boost_fusion_uglified_N::value> \
|
||||
> \
|
||||
{ \
|
||||
}; \
|
||||
|
@ -69,7 +69,7 @@ namespace boost { namespace fusion
|
||||
copy(Seq1 const& src, Seq2& dest)
|
||||
{
|
||||
BOOST_STATIC_ASSERT(
|
||||
result_of::size<Seq1>::value <= result_of::size<Seq2>::value);
|
||||
result_of::size<Seq1>::value == result_of::size<Seq2>::value);
|
||||
|
||||
detail::sequence_copy<
|
||||
Seq1 const, Seq2>::
|
||||
|
@ -1,84 +0,0 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2013 Joel de Guzman
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(FUSION_MOVE_01192013_2225)
|
||||
#define FUSION_MOVE_01192013_2225
|
||||
|
||||
#include <boost/fusion/sequence/intrinsic/begin.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/end.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/size.hpp>
|
||||
#include <boost/fusion/sequence/comparison/detail/equal_to.hpp>
|
||||
#include <boost/fusion/support/is_sequence.hpp>
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/type_traits/ice.hpp>
|
||||
|
||||
#if defined (BOOST_MSVC)
|
||||
# pragma warning(push)
|
||||
# pragma warning (disable: 4100) // unreferenced formal parameter
|
||||
#endif
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
namespace detail
|
||||
{
|
||||
template <typename Seq1, typename Seq2>
|
||||
struct sequence_move
|
||||
{
|
||||
typedef typename result_of::end<Seq1>::type end1_type;
|
||||
typedef typename result_of::end<Seq2>::type end2_type;
|
||||
|
||||
template <typename I1, typename I2>
|
||||
static void
|
||||
call(I1 const&, I2 const&, mpl::true_)
|
||||
{
|
||||
}
|
||||
|
||||
template <typename I1, typename I2>
|
||||
static void
|
||||
call(I1 const& src, I2 const& dest, mpl::false_)
|
||||
{
|
||||
*dest = std::move(*src);
|
||||
call(fusion::next(src), fusion::next(dest));
|
||||
}
|
||||
|
||||
template <typename I1, typename I2>
|
||||
static void
|
||||
call(I1 const& src, I2 const& dest)
|
||||
{
|
||||
typename result_of::equal_to<I1, end1_type>::type eq;
|
||||
return call(src, dest, eq);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
template <typename Seq1, typename Seq2>
|
||||
inline
|
||||
typename
|
||||
enable_if_c<
|
||||
type_traits::ice_and<
|
||||
traits::is_sequence<Seq1>::value
|
||||
, traits::is_sequence<Seq2>::value
|
||||
>::value,
|
||||
void
|
||||
>::type
|
||||
move(Seq1&& src, Seq2& dest)
|
||||
{
|
||||
BOOST_STATIC_ASSERT(
|
||||
result_of::size<Seq1>::value <= result_of::size<Seq2>::value);
|
||||
|
||||
detail::sequence_move<
|
||||
Seq1, Seq2>::
|
||||
call(fusion::begin(src), fusion::begin(dest));
|
||||
}
|
||||
}}
|
||||
|
||||
#if defined (BOOST_MSVC)
|
||||
# pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#endif
|
@ -116,7 +116,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
template<typename State, typename It0, typename F>
|
||||
static Result
|
||||
call(State const& state,It0 const&, F)
|
||||
call(State const& state,It0 const& it0, F)
|
||||
{
|
||||
return static_cast<Result>(state);
|
||||
}
|
||||
|
@ -115,7 +115,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
template<typename State, typename It0, typename F>
|
||||
static Result
|
||||
call(State const& state,It0 const&, F)
|
||||
call(State const& state,It0 const& it0, F)
|
||||
{
|
||||
return static_cast<Result>(state);
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ namespace detail
|
||||
struct unrolled_any<0>
|
||||
{
|
||||
template <typename It, typename F>
|
||||
static bool call(It const&, F)
|
||||
static bool call(It const& it, F f)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -8,7 +8,6 @@
|
||||
#if !defined(BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036)
|
||||
#define BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036
|
||||
|
||||
#include <boost/fusion/container/deque/deque_fwd.hpp>
|
||||
#include <boost/fusion/container/deque/deque.hpp>
|
||||
#include <boost/fusion/container/deque/convert.hpp>
|
||||
|
||||
|
@ -31,7 +31,7 @@ namespace boost { namespace fusion
|
||||
: base(val, deque)
|
||||
{}
|
||||
|
||||
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
#if defined(BOOST_NO_RVALUE_REFERENCES)
|
||||
template <typename Arg>
|
||||
back_extended_deque(Deque const& deque, Arg& val)
|
||||
: base(val, deque)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2005-2013 Joel de Guzman
|
||||
Copyright (c) 2005-2012 Joel de Guzman
|
||||
Copyright (c) 2006 Dan Marsden
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
@ -8,32 +8,25 @@
|
||||
#if !defined(FUSION_CONVERT_20061213_2207)
|
||||
#define FUSION_CONVERT_20061213_2207
|
||||
|
||||
#include <boost/fusion/container/deque/detail/as_deque.hpp>
|
||||
#include <boost/fusion/container/deque/detail/convert_impl.hpp>
|
||||
#include <boost/fusion/container/deque/deque.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// C++03 (non-variadic) implementation
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/fusion/container/deque/detail/cpp03/build_deque.hpp>
|
||||
|
||||
#else
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// C++11 variadic implementation
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/fusion/container/deque/detail/build_deque.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/begin.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/size.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
namespace result_of
|
||||
{
|
||||
template <typename Sequence>
|
||||
struct as_deque :
|
||||
detail::build_deque<
|
||||
typename result_of::begin<Sequence>::type
|
||||
, typename result_of::end<Sequence>::type
|
||||
>
|
||||
struct as_deque
|
||||
{
|
||||
typedef typename
|
||||
detail::as_deque<result_of::size<Sequence>::value>
|
||||
gen;
|
||||
typedef typename gen::
|
||||
template apply<typename result_of::begin<Sequence>::type>::type
|
||||
type;
|
||||
};
|
||||
}
|
||||
|
||||
@ -41,18 +34,17 @@ namespace boost { namespace fusion
|
||||
inline typename result_of::as_deque<Sequence>::type
|
||||
as_deque(Sequence& seq)
|
||||
{
|
||||
typedef result_of::as_deque<Sequence> gen;
|
||||
return gen::call(fusion::begin(seq), fusion::end(seq));
|
||||
typedef typename result_of::as_deque<Sequence>::gen gen;
|
||||
return gen::call(fusion::begin(seq));
|
||||
}
|
||||
|
||||
template <typename Sequence>
|
||||
inline typename result_of::as_deque<Sequence const>::type
|
||||
as_deque(Sequence const& seq)
|
||||
{
|
||||
typedef result_of::as_deque<Sequence const> gen;
|
||||
return gen::call(fusion::begin(seq), fusion::end(seq));
|
||||
typedef typename result_of::as_deque<Sequence const>::gen gen;
|
||||
return gen::call(fusion::begin(seq));
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
@ -8,23 +8,27 @@
|
||||
#if !defined(BOOST_FUSION_DEQUE_26112006_1649)
|
||||
#define BOOST_FUSION_DEQUE_26112006_1649
|
||||
|
||||
# include <boost/fusion/container/deque/deque_fwd.hpp>
|
||||
#include <boost/config.hpp>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Without variadics, we will use the PP version
|
||||
// With no decltype and variadics, we will use the C++03 version
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
|
||||
# include <boost/fusion/container/deque/detail/cpp03/deque.hpp>
|
||||
#if (defined(BOOST_NO_DECLTYPE) \
|
||||
|| defined(BOOST_NO_VARIADIC_TEMPLATES) \
|
||||
|| defined(BOOST_NO_RVALUE_REFERENCES))
|
||||
# include <boost/fusion/container/deque/detail/cpp03_deque.hpp>
|
||||
#else
|
||||
# if !defined(BOOST_FUSION_HAS_CPP11_DEQUE)
|
||||
# define BOOST_FUSION_HAS_CPP11_DEQUE
|
||||
# endif
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// C++11 interface
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/fusion/support/sequence_base.hpp>
|
||||
#include <boost/fusion/support/detail/access.hpp>
|
||||
#include <boost/fusion/support/is_sequence.hpp>
|
||||
#include <boost/fusion/container/deque/detail/keyed_element.hpp>
|
||||
#include <boost/fusion/container/deque/detail/deque_keyed_values.hpp>
|
||||
#include <boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp>
|
||||
#include <boost/fusion/container/deque/deque_fwd.hpp>
|
||||
#include <boost/fusion/container/deque/detail/value_at_impl.hpp>
|
||||
#include <boost/fusion/container/deque/detail/at_impl.hpp>
|
||||
@ -32,10 +36,8 @@
|
||||
#include <boost/fusion/container/deque/detail/end_impl.hpp>
|
||||
#include <boost/fusion/container/deque/detail/is_sequence_impl.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/begin.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/empty.hpp>
|
||||
|
||||
#include <boost/mpl/int.hpp>
|
||||
#include <boost/mpl/and.hpp>
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/type_traits/is_convertible.hpp>
|
||||
|
||||
@ -46,22 +48,6 @@ namespace boost { namespace fusion
|
||||
template <typename ...Elements>
|
||||
struct deque : detail::nil_keyed_element
|
||||
{
|
||||
typedef deque_tag fusion_tag;
|
||||
typedef bidirectional_traversal_tag category;
|
||||
typedef mpl::int_<0> size;
|
||||
typedef mpl::int_<0> next_up;
|
||||
typedef mpl::int_<0> next_down;
|
||||
typedef mpl::false_ is_view;
|
||||
|
||||
template <typename Sequence>
|
||||
deque(Sequence const&,
|
||||
typename enable_if<
|
||||
mpl::and_<
|
||||
traits::is_sequence<Sequence>
|
||||
, result_of::empty<Sequence>>>::type* /*dummy*/ = 0)
|
||||
{}
|
||||
|
||||
deque() {}
|
||||
};
|
||||
|
||||
template <typename Head, typename ...Tail>
|
||||
@ -74,7 +60,7 @@ namespace boost { namespace fusion
|
||||
typedef typename detail::deque_keyed_values<Head, Tail...>::type base;
|
||||
typedef mpl::int_<(sizeof ...(Tail) + 1)> size;
|
||||
typedef mpl::int_<size::value> next_up;
|
||||
typedef mpl::int_<((size::value == 0) ? 0 : -1)> next_down;
|
||||
typedef mpl::int_<mpl::int_<((size::value == 0) ? 0 : -1)>::type::value> next_down;
|
||||
typedef mpl::false_ is_view;
|
||||
|
||||
deque()
|
||||
@ -85,45 +71,11 @@ namespace boost { namespace fusion
|
||||
: base(seq)
|
||||
{}
|
||||
|
||||
template <typename ...Elements>
|
||||
deque(deque<Elements...>& seq)
|
||||
: base(seq)
|
||||
explicit deque(typename detail::call_param<Head>::type head
|
||||
, typename detail::call_param<Tail>::type... tail)
|
||||
: base(detail::deque_keyed_values<Head, Tail...>::call(head, tail...))
|
||||
{}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
template <typename ...Elements>
|
||||
deque(deque<Elements...>&& seq)
|
||||
: base(std::forward<deque<Elements...>>(seq))
|
||||
{}
|
||||
#endif
|
||||
|
||||
deque(deque const& seq)
|
||||
: base(seq)
|
||||
{}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
deque(deque&& seq)
|
||||
: base(std::forward<deque>(seq))
|
||||
{}
|
||||
#endif
|
||||
|
||||
explicit deque(Head const& head, Tail const&... tail)
|
||||
: base(detail::deque_keyed_values<Head, Tail...>::construct(head, tail...))
|
||||
{}
|
||||
|
||||
template <typename Head_, typename ...Tail_>
|
||||
explicit deque(Head_ const& head, Tail_ const&... tail)
|
||||
: base(detail::deque_keyed_values<Head_, Tail_...>::construct(head, tail...))
|
||||
{}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
template <typename Head_, typename ...Tail_>
|
||||
explicit deque(Head_&& head, Tail_&&... tail)
|
||||
: base(detail::deque_keyed_values<Head, Tail...>
|
||||
::forward_(std::forward<Head_>(head), std::forward<Tail_>(tail)...))
|
||||
{}
|
||||
#endif
|
||||
|
||||
template <typename Sequence>
|
||||
explicit deque(Sequence const& seq
|
||||
, typename disable_if<is_convertible<Sequence, Head> >::type* /*dummy*/ = 0)
|
||||
@ -143,16 +95,6 @@ namespace boost { namespace fusion
|
||||
base::operator=(rhs);
|
||||
return *this;
|
||||
}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
template <typename T>
|
||||
deque& operator=(T&& rhs)
|
||||
{
|
||||
base::operator=(std::forward<T>(rhs));
|
||||
return *this;
|
||||
}
|
||||
#endif
|
||||
|
||||
};
|
||||
}}
|
||||
|
||||
|
@ -13,13 +13,13 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// With no decltype and variadics, we will use the C++03 version
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#if (defined(BOOST_NO_CXX11_DECLTYPE) \
|
||||
|| defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) \
|
||||
|| defined(BOOST_NO_CXX11_RVALUE_REFERENCES))
|
||||
# include <boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp>
|
||||
#if (defined(BOOST_NO_DECLTYPE) \
|
||||
|| defined(BOOST_NO_VARIADIC_TEMPLATES) \
|
||||
|| defined(BOOST_NO_RVALUE_REFERENCES))
|
||||
# include <boost/fusion/container/deque/detail/cpp03_deque_fwd.hpp>
|
||||
#else
|
||||
# if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
|
||||
# define BOOST_FUSION_HAS_VARIADIC_DEQUE
|
||||
# if !defined(BOOST_FUSION_HAS_CPP11_DEQUE)
|
||||
# define BOOST_FUSION_HAS_CPP11_DEQUE
|
||||
# endif
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -45,7 +45,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
}}}
|
||||
|
||||
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/as_deque.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_deque" FUSION_MAX_DEQUE_SIZE_STR ".hpp")
|
||||
@ -78,7 +78,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
|
||||
BOOST_PP_CAT(T, n);
|
||||
|
||||
#define BOOST_PP_FILENAME_1 <boost/fusion/container/deque/detail/cpp03/as_deque.hpp>
|
||||
#define BOOST_PP_FILENAME_1 <boost/fusion/container/deque/detail/as_deque.hpp>
|
||||
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
@ -1,74 +0,0 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2005-2013 Joel de Guzman
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(BOOST_FUSION_BUILD_DEQUE_02032013_1921)
|
||||
#define BOOST_FUSION_BUILD_DEQUE_02032013_1921
|
||||
|
||||
#include <boost/fusion/iterator/equal_to.hpp>
|
||||
#include <boost/fusion/iterator/next.hpp>
|
||||
#include <boost/fusion/iterator/value_of.hpp>
|
||||
#include <boost/fusion/iterator/deref.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/begin.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/end.hpp>
|
||||
#include <boost/fusion/container/deque/front_extended_deque.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
template <typename First, typename Last
|
||||
, bool is_empty = result_of::equal_to<First, Last>::value>
|
||||
struct build_deque;
|
||||
|
||||
template <typename First, typename Last>
|
||||
struct build_deque<First, Last, true>
|
||||
{
|
||||
typedef deque<> type;
|
||||
static type
|
||||
call(First const&, Last const&)
|
||||
{
|
||||
return type();
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T, typename Rest>
|
||||
struct push_front_deque;
|
||||
|
||||
template <typename T, typename ...Rest>
|
||||
struct push_front_deque<T, deque<Rest...>>
|
||||
{
|
||||
typedef deque<T, Rest...> type;
|
||||
|
||||
static type
|
||||
call(T const& first, deque<Rest...> const& rest)
|
||||
{
|
||||
return type(front_extended_deque<deque<Rest...>, T>(rest, first));
|
||||
}
|
||||
};
|
||||
|
||||
template <typename First, typename Last>
|
||||
struct build_deque<First, Last, false>
|
||||
{
|
||||
typedef
|
||||
build_deque<typename result_of::next<First>::type, Last>
|
||||
next_build_deque;
|
||||
|
||||
typedef push_front_deque<
|
||||
typename result_of::value_of<First>::type
|
||||
, typename next_build_deque::type>
|
||||
push_front;
|
||||
|
||||
typedef typename push_front::type type;
|
||||
|
||||
static type
|
||||
call(First const& f, Last const& l)
|
||||
{
|
||||
typename result_of::value_of<First>::type v = *f;
|
||||
return push_front::call(
|
||||
v, next_build_deque::call(fusion::next(f), l));
|
||||
}
|
||||
};
|
||||
}}}
|
||||
|
||||
#endif
|
@ -8,7 +8,7 @@
|
||||
#if !defined(FUSION_CONVERT_IMPL_20061213_2207)
|
||||
#define FUSION_CONVERT_IMPL_20061213_2207
|
||||
|
||||
#include <boost/fusion/container/deque/convert.hpp>
|
||||
#include <boost/fusion/container/deque/detail/as_deque.hpp>
|
||||
#include <boost/fusion/container/deque/deque.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/begin.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/size.hpp>
|
||||
@ -17,12 +17,6 @@ namespace boost { namespace fusion
|
||||
{
|
||||
struct deque_tag;
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <typename Sequence>
|
||||
struct as_deque;
|
||||
}
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template <typename T>
|
||||
@ -34,11 +28,14 @@ namespace boost { namespace fusion
|
||||
template <typename Sequence>
|
||||
struct apply
|
||||
{
|
||||
typedef result_of::as_deque<Sequence> gen;
|
||||
typedef typename gen::type type;
|
||||
typedef detail::as_deque<result_of::size<Sequence>::value> gen;
|
||||
typedef typename gen::
|
||||
template apply<typename result_of::begin<Sequence>::type>::type
|
||||
type;
|
||||
|
||||
static type call(Sequence& seq)
|
||||
{
|
||||
return gen::call(seq);
|
||||
return gen::call(fusion::begin(seq));
|
||||
}
|
||||
};
|
||||
};
|
||||
|
@ -1,52 +0,0 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2005-2013 Joel de Guzman
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(BOOST_FUSION_BUILD_DEQUE_02032013_1921)
|
||||
#define BOOST_FUSION_BUILD_DEQUE_02032013_1921
|
||||
|
||||
#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
|
||||
#error "C++03 only! This file should not have been included"
|
||||
#endif
|
||||
|
||||
#include <boost/fusion/sequence/intrinsic/begin.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/size.hpp>
|
||||
#include <boost/fusion/container/deque/detail/cpp03/as_deque.hpp>
|
||||
#include <boost/fusion/container/deque/front_extended_deque.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
namespace result_of
|
||||
{
|
||||
template <typename Sequence>
|
||||
struct as_deque
|
||||
{
|
||||
typedef typename
|
||||
detail::as_deque<result_of::size<Sequence>::value>
|
||||
gen;
|
||||
typedef typename gen::
|
||||
template apply<typename result_of::begin<Sequence>::type>::type
|
||||
type;
|
||||
};
|
||||
}
|
||||
|
||||
template <typename Sequence>
|
||||
inline typename result_of::as_deque<Sequence>::type
|
||||
as_deque(Sequence& seq)
|
||||
{
|
||||
typedef typename result_of::as_deque<Sequence>::gen gen;
|
||||
return gen::call(fusion::begin(seq));
|
||||
}
|
||||
|
||||
template <typename Sequence>
|
||||
inline typename result_of::as_deque<Sequence const>::type
|
||||
as_deque(Sequence const& seq)
|
||||
{
|
||||
typedef typename result_of::as_deque<Sequence const>::gen gen;
|
||||
return gen::call(fusion::begin(seq));
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
@ -5,18 +5,18 @@
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(BOOST_PP_FUSION_DEQUE_26112006_1649)
|
||||
#define BOOST_PP_FUSION_DEQUE_26112006_1649
|
||||
#if !defined(BOOST_CPP03_FUSION_DEQUE_26112006_1649)
|
||||
#define BOOST_CPP03_FUSION_DEQUE_26112006_1649
|
||||
|
||||
#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
|
||||
#if defined(BOOST_FUSION_HAS_CPP11_DEQUE)
|
||||
#error "C++03 only! This file should not have been included"
|
||||
#endif
|
||||
|
||||
#include <boost/fusion/container/deque/detail/cpp03/limits.hpp>
|
||||
#include <boost/fusion/container/deque/limits.hpp>
|
||||
#include <boost/fusion/container/deque/front_extended_deque.hpp>
|
||||
#include <boost/fusion/container/deque/back_extended_deque.hpp>
|
||||
#include <boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp>
|
||||
#include <boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp>
|
||||
#include <boost/fusion/container/deque/detail/cpp03_deque_keyed_values.hpp>
|
||||
#include <boost/fusion/container/deque/detail/deque_initial_size.hpp>
|
||||
#include <boost/fusion/support/sequence_base.hpp>
|
||||
#include <boost/fusion/container/deque/detail/keyed_element.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params.hpp>
|
||||
@ -40,10 +40,10 @@
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR ".hpp")
|
||||
#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR ".hpp")
|
||||
#endif
|
||||
|
||||
/*=============================================================================
|
||||
@ -78,7 +78,7 @@ namespace boost { namespace fusion {
|
||||
mpl::if_<mpl::equal_to<size, mpl::int_<0> >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down;
|
||||
typedef mpl::false_ is_view;
|
||||
|
||||
#include <boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp>
|
||||
#include <boost/fusion/container/deque/detail/deque_forward_ctor.hpp>
|
||||
|
||||
deque()
|
||||
{}
|
||||
@ -87,37 +87,13 @@ namespace boost { namespace fusion {
|
||||
: base(t0, detail::nil_keyed_element())
|
||||
{}
|
||||
|
||||
explicit deque(deque const& rhs)
|
||||
: base(rhs)
|
||||
{}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
template <typename T0_>
|
||||
explicit deque(T0_&& t0
|
||||
, typename enable_if<is_convertible<T0_, T0> >::type* /*dummy*/ = 0
|
||||
)
|
||||
: base(std::forward<T0_>(t0), detail::nil_keyed_element())
|
||||
{}
|
||||
|
||||
explicit deque(deque&& rhs)
|
||||
: base(std::forward<deque>(rhs))
|
||||
{}
|
||||
#endif
|
||||
|
||||
template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename U)>
|
||||
deque(deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)> const& seq)
|
||||
deque(deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)> const& seq)
|
||||
: base(seq)
|
||||
{}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename U)>
|
||||
deque(deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)>&& seq)
|
||||
: base(std::forward<deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)>>(seq))
|
||||
{}
|
||||
#endif
|
||||
|
||||
template<typename Sequence>
|
||||
deque(Sequence const& seq, typename disable_if<is_convertible<Sequence, T0> >::type* /*dummy*/ = 0)
|
||||
deque(Sequence const& seq, typename disable_if<is_convertible<Sequence, T0> >::type* /*dummy*/ = 0)
|
||||
: base(base::from_iterator(fusion::begin(seq)))
|
||||
{}
|
||||
|
||||
@ -137,39 +113,7 @@ namespace boost { namespace fusion {
|
||||
return *this;
|
||||
}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
template <typename T>
|
||||
deque&
|
||||
operator=(T&& rhs)
|
||||
{
|
||||
base::operator=(std::forward<T>(rhs));
|
||||
return *this;
|
||||
}
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
template <>
|
||||
struct deque<> : detail::nil_keyed_element
|
||||
{
|
||||
typedef deque_tag fusion_tag;
|
||||
typedef bidirectional_traversal_tag category;
|
||||
typedef mpl::int_<0> size;
|
||||
typedef mpl::int_<0> next_up;
|
||||
typedef mpl::int_<0> next_down;
|
||||
typedef mpl::false_ is_view;
|
||||
|
||||
template <typename Sequence>
|
||||
deque(Sequence const&,
|
||||
typename enable_if<
|
||||
mpl::and_<
|
||||
traits::is_sequence<Sequence>
|
||||
, result_of::empty<Sequence> > >::type* /*dummy*/ = 0)
|
||||
{}
|
||||
|
||||
deque() {}
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
@ -5,21 +5,21 @@
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(FUSION_PP_DEQUE_FORWARD_02092007_0749)
|
||||
#define FUSION_PP_DEQUE_FORWARD_02092007_0749
|
||||
#if !defined(FUSION_CPP03_DEQUE_FORWARD_02092007_0749)
|
||||
#define FUSION_CPP03_DEQUE_FORWARD_02092007_0749
|
||||
|
||||
#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
|
||||
#if defined(BOOST_FUSION_HAS_CPP11_DEQUE)
|
||||
#error "C++03 only! This file should not have been included"
|
||||
#endif
|
||||
|
||||
#include <boost/fusion/container/deque/detail/cpp03/limits.hpp>
|
||||
#include <boost/fusion/container/deque/limits.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque_fwd.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque_fwd.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR "_fwd.hpp")
|
||||
#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR "_fwd.hpp")
|
||||
#endif
|
||||
|
||||
/*=============================================================================
|
@ -8,11 +8,11 @@
|
||||
#if !defined(BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330)
|
||||
#define BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330
|
||||
|
||||
#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
|
||||
#if defined(BOOST_FUSION_HAS_CPP11_DEQUE)
|
||||
#error "C++03 only! This file should not have been included"
|
||||
#endif
|
||||
|
||||
#include <boost/fusion/container/deque/detail/cpp03/limits.hpp>
|
||||
#include <boost/fusion/container/deque/limits.hpp>
|
||||
#include <boost/fusion/container/deque/detail/keyed_element.hpp>
|
||||
|
||||
#include <boost/preprocessor/iterate.hpp>
|
||||
@ -34,7 +34,7 @@ namespace boost { namespace fusion
|
||||
}}
|
||||
|
||||
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque_keyed_values.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque_keyed_values" FUSION_MAX_DEQUE_SIZE_STR ".hpp")
|
||||
@ -68,12 +68,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
typedef nil_keyed_element type;
|
||||
|
||||
static type construct()
|
||||
{
|
||||
return type();
|
||||
}
|
||||
|
||||
static type forward_()
|
||||
static type call()
|
||||
{
|
||||
return type();
|
||||
}
|
||||
@ -89,7 +84,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type tail;
|
||||
typedef keyed_element<N, T0, tail> type;
|
||||
|
||||
#include <boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp>
|
||||
#include <boost/fusion/container/deque/detail/deque_keyed_values_call.hpp>
|
||||
|
||||
};
|
||||
|
@ -28,23 +28,13 @@ namespace boost { namespace fusion { namespace detail
|
||||
typedef typename deque_keyed_values_impl<next_index, Tail...>::type tail;
|
||||
typedef keyed_element<N, Head, tail> type;
|
||||
|
||||
static type construct(
|
||||
static type call(
|
||||
typename detail::call_param<Head>::type head
|
||||
, typename detail::call_param<Tail>::type... tail)
|
||||
{
|
||||
return type(
|
||||
head
|
||||
, deque_keyed_values_impl<next_index, Tail...>::construct(tail...)
|
||||
);
|
||||
}
|
||||
|
||||
template <typename Head_, typename ...Tail_>
|
||||
static type forward_(Head_&& head, Tail_&&... tail)
|
||||
{
|
||||
return type(
|
||||
std::forward<Head_>(head)
|
||||
, deque_keyed_values_impl<next_index, Tail_...>::
|
||||
forward_(std::forward<Tail_>(tail)...)
|
||||
, deque_keyed_values_impl<next_index, Tail...>::call(tail...)
|
||||
);
|
||||
}
|
||||
};
|
||||
@ -55,8 +45,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
struct deque_keyed_values_impl<N>
|
||||
{
|
||||
typedef nil_keyed_element type;
|
||||
static type construct() { return type(); }
|
||||
static type forward_() { return type(); }
|
||||
static type call() { return type(); }
|
||||
};
|
||||
|
||||
template <typename ...Elements>
|
@ -9,44 +9,27 @@
|
||||
#if !defined(BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212)
|
||||
#define BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212
|
||||
|
||||
#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
|
||||
#if defined(BOOST_FUSION_HAS_CPP11_DEQUE)
|
||||
#error "C++03 only! This file should not have been included"
|
||||
#endif
|
||||
|
||||
#define FUSION_DEQUE_FORWARD_CTOR_FORWARD(z, n, _) std::forward<T_##n>(t##n)
|
||||
|
||||
#include <boost/preprocessor/iterate.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
|
||||
|
||||
#define BOOST_PP_FILENAME_1 \
|
||||
<boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp>
|
||||
<boost/fusion/container/deque/detail/deque_forward_ctor.hpp>
|
||||
#define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_DEQUE_SIZE)
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
||||
#undef FUSION_DEQUE_FORWARD_CTOR_FORWARD
|
||||
#endif
|
||||
#else
|
||||
|
||||
#define N BOOST_PP_ITERATION()
|
||||
|
||||
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
deque(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference<typename add_const<T, >::type>::type t))
|
||||
: base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>::construct(BOOST_PP_ENUM_PARAMS(N, t)))
|
||||
: base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>::call(BOOST_PP_ENUM_PARAMS(N, t)))
|
||||
{}
|
||||
|
||||
#else
|
||||
|
||||
deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& t))
|
||||
: base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>::construct(BOOST_PP_ENUM_PARAMS(N, t)))
|
||||
{}
|
||||
|
||||
template <BOOST_PP_ENUM_PARAMS(N, typename T_)>
|
||||
deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T_, && t))
|
||||
: base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>::
|
||||
forward_(BOOST_PP_ENUM(N, FUSION_DEQUE_FORWARD_CTOR_FORWARD, _)))
|
||||
{}
|
||||
#endif
|
||||
|
||||
#undef N
|
||||
#endif
|
@ -8,7 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139)
|
||||
#define BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139
|
||||
|
||||
#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
|
||||
#if defined(BOOST_FUSION_HAS_CPP11_DEQUE)
|
||||
#error "C++03 only! This file should not have been included"
|
||||
#endif
|
||||
|
||||
@ -25,7 +25,7 @@ namespace boost { namespace fusion
|
||||
}}
|
||||
|
||||
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque_initial_size.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque_initial_size" FUSION_MAX_DEQUE_SIZE_STR ".hpp")
|
@ -9,30 +9,25 @@
|
||||
#if !defined(BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_KEYED_VALUES_CALL_04122006_2211)
|
||||
#define BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_KEYED_VALUES_CALL_04122006_2211
|
||||
|
||||
#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
|
||||
#if defined(BOOST_FUSION_HAS_CPP11_DEQUE)
|
||||
#error "C++03 only! This file should not have been included"
|
||||
#endif
|
||||
|
||||
#include <boost/preprocessor/iterate.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_shifted.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
|
||||
|
||||
#define FUSION_DEQUE_KEYED_VALUES_FORWARD(z, n, _) \
|
||||
std::forward<BOOST_PP_CAT(T_, n)>(BOOST_PP_CAT(t, n))
|
||||
|
||||
#define BOOST_PP_FILENAME_1 \
|
||||
<boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp>
|
||||
<boost/fusion/container/deque/detail/deque_keyed_values_call.hpp>
|
||||
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
||||
#undef FUSION_DEQUE_KEYED_VALUES_FORWARD
|
||||
#endif
|
||||
#else
|
||||
|
||||
#define N BOOST_PP_ITERATION()
|
||||
|
||||
static type construct(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference<typename add_const<T, >::type>::type t))
|
||||
static type call(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference<typename add_const<T, >::type>::type t))
|
||||
{
|
||||
return type(t0,
|
||||
deque_keyed_values_impl<
|
||||
@ -40,22 +35,8 @@
|
||||
#if N > 1
|
||||
, BOOST_PP_ENUM_SHIFTED_PARAMS(N, T)
|
||||
#endif
|
||||
>::construct(BOOST_PP_ENUM_SHIFTED_PARAMS(N, t)));
|
||||
>::call(BOOST_PP_ENUM_SHIFTED_PARAMS(N, t)));
|
||||
}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
template <BOOST_PP_ENUM_PARAMS(N, typename T_)>
|
||||
static type forward_(BOOST_PP_ENUM_BINARY_PARAMS(N, T_, && t))
|
||||
{
|
||||
return type(std::forward<T_0>(t0),
|
||||
deque_keyed_values_impl<
|
||||
next_index
|
||||
#if N > 1
|
||||
, BOOST_PP_ENUM_SHIFTED_PARAMS(N, T_)
|
||||
#endif
|
||||
>::forward_(BOOST_PP_ENUM_SHIFTED(N, FUSION_DEQUE_KEYED_VALUES_FORWARD, _)));
|
||||
}
|
||||
#endif
|
||||
|
||||
#undef N
|
||||
#endif
|
@ -47,42 +47,16 @@ namespace boost { namespace fusion { namespace detail
|
||||
*it, base::from_iterator(fusion::next(it)));
|
||||
}
|
||||
|
||||
keyed_element(keyed_element const& rhs)
|
||||
: Rest(rhs.get_base()), value_(rhs.value_)
|
||||
{}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
keyed_element(keyed_element&& rhs)
|
||||
: Rest(std::forward<Rest>(rhs.forward_base()))
|
||||
, value_(std::forward<Value>(rhs.value_))
|
||||
{}
|
||||
#endif
|
||||
|
||||
template <typename U, typename Rst>
|
||||
keyed_element(keyed_element<Key, U, Rst> const& rhs)
|
||||
: Rest(rhs.get_base()), value_(rhs.value_)
|
||||
{}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
#endif
|
||||
|
||||
Rest& get_base()
|
||||
Rest const get_base() const
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
Rest const& get_base() const
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
Rest&& forward_base()
|
||||
{
|
||||
return std::forward<Rest>(*static_cast<Rest*>(this));
|
||||
}
|
||||
#endif
|
||||
|
||||
typename cref_result<Value>::type get(Key) const
|
||||
{
|
||||
return value_;
|
||||
@ -93,19 +67,10 @@ namespace boost { namespace fusion { namespace detail
|
||||
return value_;
|
||||
}
|
||||
|
||||
keyed_element(
|
||||
typename detail::call_param<Value>::type value
|
||||
, Rest const& rest)
|
||||
keyed_element(typename call_param<Value>::type value, Rest const& rest)
|
||||
: Rest(rest), value_(value)
|
||||
{}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
keyed_element(Value&& value, Rest&& rest)
|
||||
: Rest(std::forward<Rest>(rest))
|
||||
, value_(std::forward<Value>(value))
|
||||
{}
|
||||
#endif
|
||||
|
||||
keyed_element()
|
||||
: Rest(), value_()
|
||||
{}
|
||||
@ -125,15 +90,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
return *this;
|
||||
}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
keyed_element& operator=(keyed_element&& rhs)
|
||||
{
|
||||
base::operator=(std::forward<keyed_element>(rhs));
|
||||
value_ = std::forward<Value>(rhs.value_);
|
||||
return *this;
|
||||
}
|
||||
#endif
|
||||
|
||||
Value value_;
|
||||
};
|
||||
|
||||
|
@ -8,15 +8,15 @@
|
||||
==============================================================================*/
|
||||
|
||||
#if FUSION_MAX_DEQUE_SIZE <= 10
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque10.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/as_deque10.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 20
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque20.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/as_deque20.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 30
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque30.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/as_deque30.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 40
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque40.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/as_deque40.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 50
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque50.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/as_deque50.hpp>
|
||||
#else
|
||||
#error "FUSION_MAX_DEQUE_SIZE out of bounds for preprocessed headers"
|
||||
#endif
|
@ -8,15 +8,15 @@
|
||||
==============================================================================*/
|
||||
|
||||
#if FUSION_MAX_DEQUE_SIZE <= 10
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque10.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 20
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque20.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 30
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque30.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 40
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque40.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 50
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque50.hpp>
|
||||
#else
|
||||
#error "FUSION_MAX_DEQUE_SIZE out of bounds for preprocessed headers"
|
||||
#endif
|
@ -8,15 +8,15 @@
|
||||
==============================================================================*/
|
||||
|
||||
#if FUSION_MAX_DEQUE_SIZE <= 10
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque10_fwd.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque10_fwd.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 20
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque20_fwd.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque20_fwd.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 30
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque30_fwd.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque30_fwd.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 40
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque40_fwd.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque40_fwd.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 50
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque50_fwd.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque50_fwd.hpp>
|
||||
#else
|
||||
#error "FUSION_MAX_DEQUE_SIZE out of bounds for preprocessed headers"
|
||||
#endif
|
@ -8,15 +8,15 @@
|
||||
==============================================================================*/
|
||||
|
||||
#if FUSION_MAX_DEQUE_SIZE <= 10
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size10.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque_initial_size10.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 20
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size20.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque_initial_size20.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 30
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size30.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque_initial_size30.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 40
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size40.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque_initial_size40.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 50
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size50.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque_initial_size50.hpp>
|
||||
#else
|
||||
#error "FUSION_MAX_DEQUE_SIZE out of bounds for preprocessed headers"
|
||||
#endif
|
@ -8,15 +8,15 @@
|
||||
==============================================================================*/
|
||||
|
||||
#if FUSION_MAX_DEQUE_SIZE <= 10
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values10.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque_keyed_values10.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 20
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values20.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque_keyed_values20.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 30
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values30.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque_keyed_values30.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 40
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values40.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque_keyed_values40.hpp>
|
||||
#elif FUSION_MAX_DEQUE_SIZE <= 50
|
||||
#include <boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values50.hpp>
|
||||
#include <boost/fusion/container/deque/detail/preprocessed/deque_keyed_values50.hpp>
|
||||
#else
|
||||
#error "FUSION_MAX_DEQUE_SIZE out of bounds for preprocessed headers"
|
||||
#endif
|
@ -30,7 +30,7 @@ namespace boost { namespace fusion
|
||||
: base(val, deque)
|
||||
{}
|
||||
|
||||
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
#if defined(BOOST_NO_RVALUE_REFERENCES)
|
||||
template <typename Arg>
|
||||
front_extended_deque(Deque const& deque, Arg& val)
|
||||
: base(val, deque)
|
||||
|
@ -8,7 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_DEQUE_LIMITS_26112006_1737)
|
||||
#define BOOST_FUSION_DEQUE_LIMITS_26112006_1737
|
||||
|
||||
#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
|
||||
#if defined(BOOST_FUSION_HAS_CPP11_DEQUE)
|
||||
#error "C++03 only! This file should not have been included"
|
||||
#endif
|
||||
|
@ -11,11 +11,11 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil_;
|
||||
struct nil;
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <typename Car, typename Cdr = nil_>
|
||||
template <typename Car, typename Cdr = nil>
|
||||
struct cons_tie
|
||||
{
|
||||
typedef cons<Car&, Cdr> type;
|
||||
|
@ -1,23 +1,41 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2013 Joel de Guzman
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2006 Dan Marsden
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(FUSION_DEQUE_TIE_01272013_1401)
|
||||
#define FUSION_DEQUE_TIE_01272013_1401
|
||||
#ifndef BOOST_PP_IS_ITERATING
|
||||
#if !defined(FUSION_DEQUE_TIE_07192005_1242)
|
||||
#define FUSION_DEQUE_TIE_07192005_1242
|
||||
|
||||
#include <boost/preprocessor/iterate.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
|
||||
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
|
||||
#include <boost/fusion/container/deque/deque.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
|
||||
# include <boost/fusion/container/generation/detail/pp_deque_tie.hpp>
|
||||
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/fusion/container/generation/detail/preprocessed/deque_tie.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque_tie" FUSION_MAX_DEQUE_SIZE_STR".hpp")
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// C++11 variadic interface
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
|
||||
#include <boost/fusion/support/detail/as_fusion_element.hpp>
|
||||
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)
|
||||
|
||||
This is an auto-generated file. Do not edit!
|
||||
==============================================================================*/
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 1)
|
||||
#endif
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
@ -25,21 +43,63 @@ namespace boost { namespace fusion
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <typename ...T>
|
||||
struct deque_tie
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
|
||||
FUSION_MAX_DEQUE_SIZE, typename T, void_)
|
||||
, typename Extra = void_
|
||||
>
|
||||
struct deque_tie;
|
||||
}
|
||||
|
||||
#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
|
||||
|
||||
#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/deque_tie.hpp>
|
||||
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
||||
#undef BOOST_FUSION_REF
|
||||
|
||||
}}
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(output: null)
|
||||
#endif
|
||||
|
||||
#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
|
||||
|
||||
#endif
|
||||
#else // defined(BOOST_PP_IS_ITERATING)
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Preprocessor vertical repetition code
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define N BOOST_PP_ITERATION()
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
typedef deque<T&...> type;
|
||||
template <BOOST_PP_ENUM_PARAMS(N, typename T)>
|
||||
#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
|
||||
#define TEXT(z, n, text) , text
|
||||
struct deque_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
|
||||
#undef TEXT
|
||||
#else
|
||||
struct deque_tie<BOOST_PP_ENUM_PARAMS(N, T)>
|
||||
#endif
|
||||
{
|
||||
typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
|
||||
};
|
||||
}
|
||||
|
||||
template <typename ...T>
|
||||
inline deque<T&...>
|
||||
deque_tie(T&... arg)
|
||||
template <BOOST_PP_ENUM_PARAMS(N, typename T)>
|
||||
inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
|
||||
deque_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
|
||||
{
|
||||
return deque<T&...>(arg...);
|
||||
return deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
|
||||
BOOST_PP_ENUM_PARAMS(N, _));
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
#undef N
|
||||
#endif // defined(BOOST_PP_IS_ITERATING)
|
||||
|
||||
|
@ -1,105 +0,0 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2006 Dan Marsden
|
||||
|
||||
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_PP_IS_ITERATING
|
||||
#if !defined(FUSION_PP_DEQUE_TIE_07192005_1242)
|
||||
#define FUSION_PP_DEQUE_TIE_07192005_1242
|
||||
|
||||
#include <boost/preprocessor/iterate.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
|
||||
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
|
||||
#include <boost/fusion/container/deque/deque.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/fusion/container/generation/detail/preprocessed/deque_tie.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque_tie" FUSION_MAX_DEQUE_SIZE_STR".hpp")
|
||||
#endif
|
||||
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
|
||||
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)
|
||||
|
||||
This is an auto-generated file. Do not edit!
|
||||
==============================================================================*/
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 1)
|
||||
#endif
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct void_;
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
|
||||
FUSION_MAX_DEQUE_SIZE, typename T, void_)
|
||||
, typename Extra = void_
|
||||
>
|
||||
struct deque_tie;
|
||||
}
|
||||
|
||||
#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
|
||||
|
||||
#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp_deque_tie.hpp>
|
||||
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
||||
#undef BOOST_FUSION_REF
|
||||
|
||||
}}
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(output: null)
|
||||
#endif
|
||||
|
||||
#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
|
||||
|
||||
#endif
|
||||
#else // defined(BOOST_PP_IS_ITERATING)
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Preprocessor vertical repetition code
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define N BOOST_PP_ITERATION()
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <BOOST_PP_ENUM_PARAMS(N, typename T)>
|
||||
#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
|
||||
#define TEXT(z, n, text) , text
|
||||
struct deque_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
|
||||
#undef TEXT
|
||||
#else
|
||||
struct deque_tie<BOOST_PP_ENUM_PARAMS(N, T)>
|
||||
#endif
|
||||
{
|
||||
typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
|
||||
};
|
||||
}
|
||||
|
||||
template <BOOST_PP_ENUM_PARAMS(N, typename T)>
|
||||
inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
|
||||
deque_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
|
||||
{
|
||||
return deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
|
||||
BOOST_PP_ENUM_PARAMS(N, _));
|
||||
}
|
||||
|
||||
#undef N
|
||||
#endif // defined(BOOST_PP_IS_ITERATING)
|
||||
|
@ -1,121 +0,0 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2006 Dan Marsden
|
||||
|
||||
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_PP_IS_ITERATING
|
||||
#if !defined(FUSION_PP_MAKE_DEQUE_07162005_0243)
|
||||
#define FUSION_MAKE_PP_DEQUE_07162005_0243
|
||||
|
||||
#include <boost/preprocessor/iterate.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
|
||||
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
|
||||
#include <boost/fusion/container/deque/deque.hpp>
|
||||
#include <boost/fusion/support/detail/as_fusion_element.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/fusion/container/generation/detail/preprocessed/make_deque.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_deque" FUSION_MAX_DEQUE_SIZE_STR".hpp")
|
||||
#endif
|
||||
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
|
||||
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)
|
||||
|
||||
This is an auto-generated file. Do not edit!
|
||||
==============================================================================*/
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 1)
|
||||
#endif
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct void_;
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
|
||||
FUSION_MAX_DEQUE_SIZE, typename T, void_)
|
||||
, typename Extra = void_
|
||||
>
|
||||
struct make_deque;
|
||||
|
||||
template <>
|
||||
struct make_deque<>
|
||||
{
|
||||
typedef deque<> type;
|
||||
};
|
||||
}
|
||||
|
||||
inline deque<>
|
||||
make_deque()
|
||||
{
|
||||
return deque<>();
|
||||
}
|
||||
|
||||
#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
|
||||
typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
|
||||
|
||||
#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
|
||||
typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
|
||||
|
||||
#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp_make_deque.hpp>
|
||||
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
||||
#undef BOOST_FUSION_AS_FUSION_ELEMENT
|
||||
|
||||
}}
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(output: null)
|
||||
#endif
|
||||
|
||||
#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
|
||||
|
||||
#endif
|
||||
#else // defined(BOOST_PP_IS_ITERATING)
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Preprocessor vertical repetition code
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define N BOOST_PP_ITERATION()
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <BOOST_PP_ENUM_PARAMS(N, typename T)>
|
||||
#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
|
||||
#define TEXT(z, n, text) , text
|
||||
struct make_deque< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
|
||||
#undef TEXT
|
||||
#else
|
||||
struct make_deque<BOOST_PP_ENUM_PARAMS(N, T)>
|
||||
#endif
|
||||
{
|
||||
typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
|
||||
};
|
||||
}
|
||||
|
||||
template <BOOST_PP_ENUM_PARAMS(N, typename T)>
|
||||
inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
|
||||
make_deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
|
||||
{
|
||||
return deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
|
||||
BOOST_PP_ENUM_PARAMS(N, _));
|
||||
}
|
||||
|
||||
#undef N
|
||||
#endif // defined(BOOST_PP_IS_ITERATING)
|
||||
|
@ -1,132 +0,0 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
|
||||
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_PP_IS_ITERATING
|
||||
#if !defined(FUSION_PP_MAKE_MAP_07222005_1247)
|
||||
#define FUSION_PP_MAKE_MAP_07222005_1247
|
||||
|
||||
#include <boost/preprocessor/iterate.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
|
||||
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
|
||||
#include <boost/fusion/container/map/map.hpp>
|
||||
#include <boost/fusion/support/detail/as_fusion_element.hpp>
|
||||
#include <boost/fusion/support/pair.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/fusion/container/generation/detail/preprocessed/make_map.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_map" FUSION_MAX_MAP_SIZE_STR".hpp")
|
||||
#endif
|
||||
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
|
||||
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)
|
||||
|
||||
This is an auto-generated file. Do not edit!
|
||||
==============================================================================*/
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 1)
|
||||
#endif
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct void_;
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
|
||||
FUSION_MAX_VECTOR_SIZE, typename K, void_)
|
||||
, BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
|
||||
FUSION_MAX_VECTOR_SIZE, typename D, void_)
|
||||
, typename Extra = void_
|
||||
>
|
||||
struct make_map;
|
||||
|
||||
template <>
|
||||
struct make_map<>
|
||||
{
|
||||
typedef map<> type;
|
||||
};
|
||||
}
|
||||
|
||||
inline map<>
|
||||
make_map()
|
||||
{
|
||||
return map<>();
|
||||
}
|
||||
|
||||
#define BOOST_FUSION_PAIR(z, n, data) \
|
||||
fusion::pair< \
|
||||
BOOST_PP_CAT(K, n) \
|
||||
, typename detail::as_fusion_element<BOOST_PP_CAT(D, n)>::type>
|
||||
|
||||
#define BOOST_FUSION_MAKE_PAIR(z, n, data) \
|
||||
fusion::make_pair<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
|
||||
|
||||
#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp_make_map.hpp>
|
||||
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
||||
#undef BOOST_FUSION_PAIR
|
||||
#undef BOOST_FUSION_MAKE_PAIR
|
||||
|
||||
}}
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(output: null)
|
||||
#endif
|
||||
|
||||
#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
|
||||
|
||||
#endif
|
||||
#else // defined(BOOST_PP_IS_ITERATING)
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Preprocessor vertical repetition code
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define N BOOST_PP_ITERATION()
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS(N, typename K)
|
||||
, BOOST_PP_ENUM_PARAMS(N, typename D)
|
||||
>
|
||||
#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
|
||||
#define TEXT(z, n, text) , text
|
||||
struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_VECTOR_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_)>
|
||||
#undef TEXT
|
||||
#else
|
||||
struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
|
||||
#endif
|
||||
{
|
||||
typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)> type;
|
||||
};
|
||||
}
|
||||
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS(N, typename K)
|
||||
, BOOST_PP_ENUM_PARAMS(N, typename D)
|
||||
>
|
||||
inline map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>
|
||||
make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& _))
|
||||
{
|
||||
return map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>(
|
||||
BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_PAIR, _));
|
||||
}
|
||||
|
||||
#undef N
|
||||
#endif // defined(BOOST_PP_IS_ITERATING)
|
||||
|
@ -1,136 +0,0 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2006 Dan Marsden
|
||||
|
||||
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_PP_IS_ITERATING
|
||||
#if !defined(FUSION_PP_MAP_TIE_20060814_1116)
|
||||
#define FUSION_PP_MAP_TIE_20060814_1116
|
||||
|
||||
#include <boost/preprocessor/iterate.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
|
||||
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
|
||||
#include <boost/fusion/container/map/map.hpp>
|
||||
#include <boost/fusion/container/map/detail/cpp03/limits.hpp>
|
||||
#include <boost/fusion/support/pair.hpp>
|
||||
#include <boost/fusion/container/generation/pair_tie.hpp>
|
||||
#include <boost/type_traits/add_reference.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/fusion/container/generation/detail/preprocessed/map_tie.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/map_tie" FUSION_MAX_MAP_SIZE_STR".hpp")
|
||||
#endif
|
||||
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
|
||||
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)
|
||||
|
||||
This is an auto-generated file. Do not edit!
|
||||
==============================================================================*/
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 1)
|
||||
#endif
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct void_;
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
|
||||
FUSION_MAX_MAP_SIZE, typename K, void_)
|
||||
, BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
|
||||
FUSION_MAX_MAP_SIZE, typename D, void_)
|
||||
, typename Extra = void_
|
||||
>
|
||||
struct map_tie;
|
||||
|
||||
template <>
|
||||
struct map_tie<>
|
||||
{
|
||||
typedef map<> type;
|
||||
};
|
||||
}
|
||||
|
||||
inline map<>
|
||||
map_tie()
|
||||
{
|
||||
return map<>();
|
||||
}
|
||||
|
||||
#define BOOST_FUSION_TIED_PAIR(z, n, data) \
|
||||
fusion::pair< \
|
||||
BOOST_PP_CAT(K, n) \
|
||||
, typename add_reference<BOOST_PP_CAT(D, n)>::type>
|
||||
|
||||
#define BOOST_FUSION_PAIR_TIE(z, n, data) \
|
||||
fusion::pair_tie<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
|
||||
|
||||
#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp_map_tie.hpp>
|
||||
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
||||
#undef BOOST_FUSION_PAIR
|
||||
#undef BOOST_FUSION_MAKE_PAIR
|
||||
|
||||
}}
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(output: null)
|
||||
#endif
|
||||
|
||||
#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
|
||||
|
||||
#endif
|
||||
#else // defined(BOOST_PP_IS_ITERATING)
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Preprocessor vertical repetition code
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define N BOOST_PP_ITERATION()
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS(N, typename K)
|
||||
, BOOST_PP_ENUM_PARAMS(N, typename D)
|
||||
>
|
||||
#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
|
||||
#define TEXT(z, n, text) , text
|
||||
|
||||
struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_MAP_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_MAP_SIZE, TEXT, void_)>
|
||||
#undef TEXT
|
||||
#else
|
||||
struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
|
||||
#endif
|
||||
{
|
||||
typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)> type;
|
||||
};
|
||||
}
|
||||
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS(N, typename K)
|
||||
, BOOST_PP_ENUM_PARAMS(N, typename D)
|
||||
>
|
||||
inline map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>
|
||||
map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & _))
|
||||
{
|
||||
return map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>(
|
||||
BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, _));
|
||||
}
|
||||
|
||||
#undef N
|
||||
#endif // defined(BOOST_PP_IS_ITERATING)
|
||||
|
@ -13,11 +13,11 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil_;
|
||||
struct nil;
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <typename Car, typename Cdr = nil_>
|
||||
template <typename Car, typename Cdr = nil>
|
||||
struct make_cons
|
||||
{
|
||||
typedef cons<typename detail::as_fusion_element<Car>::type, Cdr> type;
|
||||
|
@ -1,43 +1,124 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2013 Joel de Guzman
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2006 Dan Marsden
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(FUSION_MAKE_DEQUE_01272013_1401)
|
||||
#define FUSION_MAKE_DEQUE_01272013_1401
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
|
||||
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_PP_IS_ITERATING
|
||||
#if !defined(FUSION_MAKE_DEQUE_07162005_0243)
|
||||
#define FUSION_MAKE_DEQUE_07162005_0243
|
||||
|
||||
#include <boost/preprocessor/iterate.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
|
||||
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
|
||||
#include <boost/fusion/container/deque/deque.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
|
||||
# include <boost/fusion/container/generation/detail/pp_make_deque.hpp>
|
||||
#else
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// C++11 variadic interface
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <boost/fusion/support/detail/as_fusion_element.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/fusion/container/generation/detail/preprocessed/make_deque.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_deque" FUSION_MAX_DEQUE_SIZE_STR".hpp")
|
||||
#endif
|
||||
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
|
||||
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)
|
||||
|
||||
This is an auto-generated file. Do not edit!
|
||||
==============================================================================*/
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 1)
|
||||
#endif
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct void_;
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <typename ...T>
|
||||
struct make_deque
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
|
||||
FUSION_MAX_DEQUE_SIZE, typename T, void_)
|
||||
, typename Extra = void_
|
||||
>
|
||||
struct make_deque;
|
||||
|
||||
template <>
|
||||
struct make_deque<>
|
||||
{
|
||||
typedef deque<T...> type;
|
||||
typedef deque<> type;
|
||||
};
|
||||
}
|
||||
|
||||
template <typename ...T>
|
||||
inline deque<typename detail::as_fusion_element<T>::type...>
|
||||
make_deque(T const&... arg)
|
||||
inline deque<>
|
||||
make_deque()
|
||||
{
|
||||
return deque<typename detail::as_fusion_element<T>::type...>(arg...);
|
||||
return deque<>();
|
||||
}
|
||||
|
||||
#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
|
||||
typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
|
||||
|
||||
#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_deque.hpp>
|
||||
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
||||
#undef BOOST_FUSION_AS_FUSION_ELEMENT
|
||||
|
||||
}}
|
||||
|
||||
#endif
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(output: null)
|
||||
#endif
|
||||
|
||||
#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
|
||||
|
||||
#endif
|
||||
#else // defined(BOOST_PP_IS_ITERATING)
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Preprocessor vertical repetition code
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define N BOOST_PP_ITERATION()
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <BOOST_PP_ENUM_PARAMS(N, typename T)>
|
||||
#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
|
||||
#define TEXT(z, n, text) , text
|
||||
struct make_deque< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
|
||||
#undef TEXT
|
||||
#else
|
||||
struct make_deque<BOOST_PP_ENUM_PARAMS(N, T)>
|
||||
#endif
|
||||
{
|
||||
typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
|
||||
};
|
||||
}
|
||||
|
||||
template <BOOST_PP_ENUM_PARAMS(N, typename T)>
|
||||
inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
|
||||
make_deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
|
||||
{
|
||||
return deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
|
||||
BOOST_PP_ENUM_PARAMS(N, _));
|
||||
}
|
||||
|
||||
#undef N
|
||||
#endif // defined(BOOST_PP_IS_ITERATING)
|
||||
|
||||
|
@ -1,62 +1,132 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2013 Joel de Guzman
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
|
||||
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_PP_IS_ITERATING
|
||||
#if !defined(FUSION_MAKE_MAP_07222005_1247)
|
||||
#define FUSION_MAKE_MAP_07222005_1247
|
||||
|
||||
#include <boost/preprocessor/iterate.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
|
||||
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
|
||||
#include <boost/fusion/container/map/map.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
|
||||
# include <boost/fusion/container/generation/detail/pp_make_map.hpp>
|
||||
#else
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// C++11 variadic interface
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/fusion/support/detail/as_fusion_element.hpp>
|
||||
#include <boost/fusion/support/pair.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/fusion/container/generation/detail/preprocessed/make_map.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_map" FUSION_MAX_MAP_SIZE_STR".hpp")
|
||||
#endif
|
||||
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
|
||||
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)
|
||||
|
||||
This is an auto-generated file. Do not edit!
|
||||
==============================================================================*/
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 1)
|
||||
#endif
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct void_;
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <typename ...Key>
|
||||
struct make_map
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
|
||||
FUSION_MAX_VECTOR_SIZE, typename K, void_)
|
||||
, BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
|
||||
FUSION_MAX_VECTOR_SIZE, typename D, void_)
|
||||
, typename Extra = void_
|
||||
>
|
||||
struct make_map;
|
||||
|
||||
template <>
|
||||
struct make_map<>
|
||||
{
|
||||
template <typename ...T>
|
||||
struct apply
|
||||
{
|
||||
typedef map<
|
||||
fusion::pair<
|
||||
Key
|
||||
, typename detail::as_fusion_element<T>::type
|
||||
>...>
|
||||
type;
|
||||
};
|
||||
typedef map<> type;
|
||||
};
|
||||
}
|
||||
|
||||
template <typename ...Key, typename ...T>
|
||||
inline map<
|
||||
fusion::pair<
|
||||
Key
|
||||
, typename detail::as_fusion_element<T>::type
|
||||
>...>
|
||||
make_map(T const&... arg)
|
||||
inline map<>
|
||||
make_map()
|
||||
{
|
||||
typedef map<
|
||||
fusion::pair<
|
||||
Key
|
||||
, typename detail::as_fusion_element<T>::type
|
||||
>...>
|
||||
result_type;
|
||||
|
||||
return result_type(arg...);
|
||||
return map<>();
|
||||
}
|
||||
|
||||
#define BOOST_FUSION_PAIR(z, n, data) \
|
||||
fusion::pair< \
|
||||
BOOST_PP_CAT(K, n) \
|
||||
, typename detail::as_fusion_element<BOOST_PP_CAT(D, n)>::type>
|
||||
|
||||
#define BOOST_FUSION_MAKE_PAIR(z, n, data) \
|
||||
fusion::make_pair<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
|
||||
|
||||
#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_map.hpp>
|
||||
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
||||
#undef BOOST_FUSION_PAIR
|
||||
#undef BOOST_FUSION_MAKE_PAIR
|
||||
|
||||
}}
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(output: null)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
|
||||
|
||||
#endif
|
||||
#else // defined(BOOST_PP_IS_ITERATING)
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Preprocessor vertical repetition code
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define N BOOST_PP_ITERATION()
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS(N, typename K)
|
||||
, BOOST_PP_ENUM_PARAMS(N, typename D)
|
||||
>
|
||||
#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
|
||||
#define TEXT(z, n, text) , text
|
||||
struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_VECTOR_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_)>
|
||||
#undef TEXT
|
||||
#else
|
||||
struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
|
||||
#endif
|
||||
{
|
||||
typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)> type;
|
||||
};
|
||||
}
|
||||
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS(N, typename K)
|
||||
, BOOST_PP_ENUM_PARAMS(N, typename D)
|
||||
>
|
||||
inline map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>
|
||||
make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& _))
|
||||
{
|
||||
return map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>(
|
||||
BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_PAIR, _));
|
||||
}
|
||||
|
||||
#undef N
|
||||
#endif // defined(BOOST_PP_IS_ITERATING)
|
||||
|
||||
|
@ -1,46 +1,136 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2013 Joel de Guzman
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2006 Dan Marsden
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(FUSION_MAP_TIE_07222005_1247)
|
||||
#define FUSION_MAP_TIE_07222005_1247
|
||||
#ifndef BOOST_PP_IS_ITERATING
|
||||
#if !defined(FUSION_MAP_TIE_20060814_1116)
|
||||
#define FUSION_MAP_TIE_20060814_1116
|
||||
|
||||
#include <boost/preprocessor/iterate.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
|
||||
#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
|
||||
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
|
||||
#include <boost/fusion/container/map/map.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
|
||||
# include <boost/fusion/container/generation/detail/pp_map_tie.hpp>
|
||||
#else
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// C++11 variadic interface
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/fusion/container/map/limits.hpp>
|
||||
#include <boost/fusion/support/pair.hpp>
|
||||
#include <boost/fusion/container/generation/pair_tie.hpp>
|
||||
#include <boost/type_traits/add_reference.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/fusion/container/generation/detail/preprocessed/map_tie.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/map_tie" FUSION_MAX_MAP_SIZE_STR".hpp")
|
||||
#endif
|
||||
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
|
||||
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)
|
||||
|
||||
This is an auto-generated file. Do not edit!
|
||||
==============================================================================*/
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 1)
|
||||
#endif
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct void_;
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <typename ...Key>
|
||||
struct map_tie
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
|
||||
FUSION_MAX_MAP_SIZE, typename K, void_)
|
||||
, BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
|
||||
FUSION_MAX_MAP_SIZE, typename D, void_)
|
||||
, typename Extra = void_
|
||||
>
|
||||
struct map_tie;
|
||||
|
||||
template <>
|
||||
struct map_tie<>
|
||||
{
|
||||
template <typename ...T>
|
||||
struct apply
|
||||
{
|
||||
typedef map<fusion::pair<Key, T&>...> type;
|
||||
};
|
||||
typedef map<> type;
|
||||
};
|
||||
}
|
||||
|
||||
template <typename ...Key, typename ...T>
|
||||
inline map<fusion::pair<Key, T&>...>
|
||||
map_tie(T&... arg)
|
||||
inline map<>
|
||||
map_tie()
|
||||
{
|
||||
typedef map<fusion::pair<Key, T&>...> result_type;
|
||||
return result_type(arg...);
|
||||
return map<>();
|
||||
}
|
||||
|
||||
#define BOOST_FUSION_TIED_PAIR(z, n, data) \
|
||||
fusion::pair< \
|
||||
BOOST_PP_CAT(K, n) \
|
||||
, typename add_reference<BOOST_PP_CAT(D, n)>::type>
|
||||
|
||||
#define BOOST_FUSION_PAIR_TIE(z, n, data) \
|
||||
fusion::pair_tie<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
|
||||
|
||||
#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/map_tie.hpp>
|
||||
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
||||
#undef BOOST_FUSION_PAIR
|
||||
#undef BOOST_FUSION_MAKE_PAIR
|
||||
|
||||
}}
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(output: null)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES
|
||||
|
||||
#endif
|
||||
#else // defined(BOOST_PP_IS_ITERATING)
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Preprocessor vertical repetition code
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define N BOOST_PP_ITERATION()
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS(N, typename K)
|
||||
, BOOST_PP_ENUM_PARAMS(N, typename D)
|
||||
>
|
||||
#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
|
||||
#define TEXT(z, n, text) , text
|
||||
|
||||
struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_MAP_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_MAP_SIZE, TEXT, void_)>
|
||||
#undef TEXT
|
||||
#else
|
||||
struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
|
||||
#endif
|
||||
{
|
||||
typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)> type;
|
||||
};
|
||||
}
|
||||
|
||||
template <
|
||||
BOOST_PP_ENUM_PARAMS(N, typename K)
|
||||
, BOOST_PP_ENUM_PARAMS(N, typename D)
|
||||
>
|
||||
inline map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>
|
||||
map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & _))
|
||||
{
|
||||
return map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>(
|
||||
BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, _));
|
||||
}
|
||||
|
||||
#undef N
|
||||
#endif // defined(BOOST_PP_IS_ITERATING)
|
||||
|
||||
|
@ -34,7 +34,7 @@ namespace boost { namespace fusion
|
||||
struct forward_traversal_tag;
|
||||
struct fusion_sequence_tag;
|
||||
|
||||
struct nil_ : sequence_base<nil_>
|
||||
struct nil : sequence_base<nil>
|
||||
{
|
||||
typedef mpl::int_<0> size;
|
||||
typedef cons_tag fusion_tag;
|
||||
@ -44,10 +44,10 @@ namespace boost { namespace fusion
|
||||
typedef void_ car_type;
|
||||
typedef void_ cdr_type;
|
||||
|
||||
nil_() {}
|
||||
nil() {}
|
||||
|
||||
template <typename Iterator>
|
||||
nil_(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/)
|
||||
nil(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/)
|
||||
{}
|
||||
|
||||
template <typename Iterator>
|
||||
@ -56,7 +56,7 @@ namespace boost { namespace fusion
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Car, typename Cdr /*= nil_*/>
|
||||
template <typename Car, typename Cdr /*= nil*/>
|
||||
struct cons : sequence_base<cons<Car, Cdr> >
|
||||
{
|
||||
typedef mpl::int_<Cdr::size::value+1> size;
|
||||
|
@ -10,12 +10,9 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil_;
|
||||
#ifndef nil
|
||||
typedef nil_ nil;
|
||||
#endif
|
||||
struct nil;
|
||||
|
||||
template <typename Car, typename Cdr = nil_>
|
||||
template <typename Car, typename Cdr = nil>
|
||||
struct cons;
|
||||
}}
|
||||
|
||||
|
@ -18,14 +18,14 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil_;
|
||||
struct nil;
|
||||
struct cons_iterator_tag;
|
||||
struct forward_traversal_tag;
|
||||
|
||||
template <typename Cons>
|
||||
struct cons_iterator_identity;
|
||||
|
||||
template <typename Cons = nil_>
|
||||
template <typename Cons = nil>
|
||||
struct cons_iterator : iterator_base<cons_iterator<Cons> >
|
||||
{
|
||||
typedef cons_iterator_tag fusion_tag;
|
||||
@ -49,40 +49,40 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef forward_traversal_tag category;
|
||||
typedef cons_iterator_tag fusion_tag;
|
||||
typedef nil_ cons_type;
|
||||
typedef nil cons_type;
|
||||
typedef cons_iterator_identity<
|
||||
add_const<nil_>::type>
|
||||
add_const<nil>::type>
|
||||
identity;
|
||||
nil_iterator() {}
|
||||
explicit nil_iterator(nil_ const&) {}
|
||||
explicit nil_iterator(nil const&) {}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct cons_iterator<nil_> : nil_iterator
|
||||
struct cons_iterator<nil> : nil_iterator
|
||||
{
|
||||
cons_iterator() {}
|
||||
explicit cons_iterator(nil_ const&) {}
|
||||
explicit cons_iterator(nil const&) {}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct cons_iterator<nil_ const> : nil_iterator
|
||||
struct cons_iterator<nil const> : nil_iterator
|
||||
{
|
||||
cons_iterator() {}
|
||||
explicit cons_iterator(nil_ const&) {}
|
||||
explicit cons_iterator(nil const&) {}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct cons_iterator<list<> > : nil_iterator
|
||||
{
|
||||
cons_iterator() {}
|
||||
explicit cons_iterator(nil_ const&) {}
|
||||
explicit cons_iterator(nil const&) {}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct cons_iterator<list<> const> : nil_iterator
|
||||
{
|
||||
cons_iterator() {}
|
||||
explicit cons_iterator(nil_ const&) {}
|
||||
explicit cons_iterator(nil const&) {}
|
||||
};
|
||||
}}
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil_;
|
||||
struct nil;
|
||||
|
||||
struct cons_tag;
|
||||
|
||||
|
@ -24,12 +24,12 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <typename First, typename Last>
|
||||
struct build_cons<First, Last, true>
|
||||
{
|
||||
typedef nil_ type;
|
||||
typedef nil type;
|
||||
|
||||
static nil_
|
||||
static nil
|
||||
call(First const&, Last const&)
|
||||
{
|
||||
return nil_();
|
||||
return nil();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -13,7 +13,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
struct cons_tag;
|
||||
|
||||
struct nil_;
|
||||
struct nil;
|
||||
|
||||
template <typename Car, typename Cdr>
|
||||
struct cons;
|
||||
@ -28,7 +28,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
template <typename Sequence>
|
||||
struct apply
|
||||
: boost::is_convertible<Sequence, nil_>
|
||||
: boost::is_convertible<Sequence, nil>
|
||||
{};
|
||||
};
|
||||
}
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil_;
|
||||
struct nil;
|
||||
|
||||
struct cons_tag;
|
||||
|
||||
@ -35,7 +35,7 @@ namespace boost { namespace fusion
|
||||
struct apply
|
||||
{
|
||||
typedef cons_iterator<
|
||||
typename mpl::if_<is_const<Sequence>, nil_ const, nil_>::type>
|
||||
typename mpl::if_<is_const<Sequence>, nil const, nil>::type>
|
||||
type;
|
||||
|
||||
static type
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil_;
|
||||
struct nil;
|
||||
struct void_;
|
||||
}}
|
||||
|
||||
@ -61,7 +61,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <>
|
||||
struct list_to_cons<BOOST_PP_ENUM(FUSION_MAX_LIST_SIZE, FUSION_VOID, _)>
|
||||
{
|
||||
typedef nil_ type;
|
||||
typedef nil type;
|
||||
};
|
||||
}}}
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
==============================================================================*/
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil_;
|
||||
struct nil;
|
||||
struct void_;
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
|
||||
struct list
|
||||
|
@ -8,7 +8,7 @@
|
||||
==============================================================================*/
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil_;
|
||||
struct nil;
|
||||
struct void_;
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
|
||||
struct list
|
||||
|
@ -8,7 +8,7 @@
|
||||
==============================================================================*/
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil_;
|
||||
struct nil;
|
||||
struct void_;
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
|
||||
struct list
|
||||
|
@ -8,7 +8,7 @@
|
||||
==============================================================================*/
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil_;
|
||||
struct nil;
|
||||
struct void_;
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
|
||||
struct list
|
||||
|
@ -8,7 +8,7 @@
|
||||
==============================================================================*/
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil_;
|
||||
struct nil;
|
||||
struct void_;
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49>
|
||||
struct list
|
||||
|
@ -81,6 +81,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <>
|
||||
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef nil_ type;
|
||||
typedef nil type;
|
||||
};
|
||||
}}}
|
||||
|
@ -141,6 +141,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <>
|
||||
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef nil_ type;
|
||||
typedef nil type;
|
||||
};
|
||||
}}}
|
||||
|
@ -201,6 +201,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <>
|
||||
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef nil_ type;
|
||||
typedef nil type;
|
||||
};
|
||||
}}}
|
||||
|
@ -261,6 +261,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <>
|
||||
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef nil_ type;
|
||||
typedef nil type;
|
||||
};
|
||||
}}}
|
||||
|
@ -321,6 +321,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <>
|
||||
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef nil_ type;
|
||||
typedef nil type;
|
||||
};
|
||||
}}}
|
||||
|
@ -12,7 +12,7 @@
|
||||
namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
template<typename Cons, typename State = nil_>
|
||||
template<typename Cons, typename State = nil>
|
||||
struct reverse_cons;
|
||||
|
||||
template<typename Car, typename Cdr, typename State>
|
||||
@ -29,11 +29,11 @@ namespace boost { namespace fusion { namespace detail
|
||||
};
|
||||
|
||||
template<typename State>
|
||||
struct reverse_cons<nil_, State>
|
||||
struct reverse_cons<nil, State>
|
||||
{
|
||||
typedef State type;
|
||||
|
||||
static State const &call(nil_ const &, State const &state = State())
|
||||
static State const &call(nil const &, State const &state = State())
|
||||
{
|
||||
return state;
|
||||
}
|
||||
|
@ -32,7 +32,7 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil_;
|
||||
struct nil;
|
||||
struct void_;
|
||||
|
||||
template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(FUSION_SEQUENCE_CLASS_MAP_10022005_0606)
|
||||
#define FUSION_SEQUENCE_CLASS_MAP_10022005_0606
|
||||
|
||||
#include <boost/fusion/container/map/limits.hpp>
|
||||
#include <boost/fusion/container/map/map.hpp>
|
||||
#include <boost/fusion/container/map/map_fwd.hpp>
|
||||
#include <boost/fusion/container/map/convert.hpp>
|
||||
|
@ -4,34 +4,26 @@
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(FUSION_CONVERT_MAIN_09232005_1340)
|
||||
#define FUSION_CONVERT_MAIN_09232005_1340
|
||||
#if !defined(FUSION_CONVERT_09232005_1340)
|
||||
#define FUSION_CONVERT_09232005_1340
|
||||
|
||||
#include <boost/fusion/container/map/detail/as_map.hpp>
|
||||
#include <boost/fusion/container/map/detail/convert_impl.hpp>
|
||||
#include <boost/fusion/container/map/map.hpp>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Without variadics, we will use the PP version
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
|
||||
# include <boost/fusion/container/map/detail/cpp03/convert.hpp>
|
||||
|
||||
#else
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// C++11 variadic implementation
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/fusion/container/map/detail/build_map.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/begin.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/size.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
namespace result_of
|
||||
{
|
||||
template <typename Sequence>
|
||||
struct as_map :
|
||||
detail::build_map<
|
||||
typename result_of::begin<Sequence>::type
|
||||
, typename result_of::end<Sequence>::type
|
||||
>
|
||||
struct as_map
|
||||
{
|
||||
typedef typename detail::as_map<result_of::size<Sequence>::value> gen;
|
||||
typedef typename gen::
|
||||
template apply<typename result_of::begin<Sequence>::type>::type
|
||||
type;
|
||||
};
|
||||
}
|
||||
|
||||
@ -39,43 +31,17 @@ namespace boost { namespace fusion
|
||||
inline typename result_of::as_map<Sequence>::type
|
||||
as_map(Sequence& seq)
|
||||
{
|
||||
typedef result_of::as_map<Sequence> gen;
|
||||
return gen::call(fusion::begin(seq), fusion::end(seq));
|
||||
typedef typename result_of::as_map<Sequence>::gen gen;
|
||||
return gen::call(fusion::begin(seq));
|
||||
}
|
||||
|
||||
template <typename Sequence>
|
||||
inline typename result_of::as_map<Sequence const>::type
|
||||
as_map(Sequence const& seq)
|
||||
{
|
||||
typedef result_of::as_map<Sequence const> gen;
|
||||
return gen::call(fusion::begin(seq), fusion::end(seq));
|
||||
}
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template <typename T>
|
||||
struct convert_impl;
|
||||
|
||||
template <>
|
||||
struct convert_impl<map_tag>
|
||||
{
|
||||
template <typename Sequence>
|
||||
struct apply
|
||||
{
|
||||
typedef typename
|
||||
result_of::as_map<Sequence>::type
|
||||
type;
|
||||
|
||||
static type call(Sequence& seq)
|
||||
{
|
||||
typedef result_of::as_map<Sequence> gen;
|
||||
return gen::call(fusion::begin(seq), fusion::end(seq));
|
||||
}
|
||||
};
|
||||
};
|
||||
typedef typename result_of::as_map<Sequence const>::gen gen;
|
||||
return gen::call(fusion::begin(seq));
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/inc.hpp>
|
||||
#include <boost/preprocessor/dec.hpp>
|
||||
#include <boost/fusion/container/map/detail/cpp03/map.hpp>
|
||||
#include <boost/fusion/container/map/map.hpp>
|
||||
#include <boost/fusion/iterator/value_of.hpp>
|
||||
#include <boost/fusion/iterator/deref.hpp>
|
||||
#include <boost/fusion/iterator/next.hpp>
|
||||
@ -44,7 +44,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
}}}
|
||||
|
||||
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/fusion/container/map/detail/cpp03/preprocessed/as_map.hpp>
|
||||
#include <boost/fusion/container/map/detail/preprocessed/as_map.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_map" FUSION_MAX_MAP_SIZE_STR ".hpp")
|
||||
@ -77,7 +77,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
|
||||
BOOST_PP_CAT(T, n);
|
||||
|
||||
#define BOOST_PP_FILENAME_1 <boost/fusion/container/map/detail/cpp03/as_map.hpp>
|
||||
#define BOOST_PP_FILENAME_1 <boost/fusion/container/map/detail/as_map.hpp>
|
||||
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
@ -1,13 +1,17 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2013 Joel de Guzman
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2011 Brandon Kohn
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(BOOST_FUSION_MAP_DETAIL_AT_IMPL_02042013_0821)
|
||||
#define BOOST_FUSION_MAP_DETAIL_AT_IMPL_02042013_0821
|
||||
#if !defined(BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP)
|
||||
#define BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/detail/access.hpp>
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
#include <boost/mpl/at.hpp>
|
||||
#include <boost/mpl/int.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
@ -22,36 +26,36 @@ namespace boost { namespace fusion
|
||||
struct at_impl<map_tag>
|
||||
{
|
||||
template <typename Sequence, typename N>
|
||||
struct apply
|
||||
struct apply
|
||||
{
|
||||
typedef mpl::int_<N::value> index;
|
||||
typedef
|
||||
decltype(std::declval<Sequence>().get(index()))
|
||||
type;
|
||||
|
||||
typedef typename
|
||||
mpl::at<typename Sequence::storage_type::types, N>::type
|
||||
element;
|
||||
typedef typename detail::ref_result<element>::type type;
|
||||
|
||||
static type
|
||||
call(Sequence& m)
|
||||
{
|
||||
return m.get(index());
|
||||
return m.get_data().at_impl(N());
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Sequence, typename N>
|
||||
struct apply<Sequence const, N>
|
||||
{
|
||||
typedef mpl::int_<N::value> index;
|
||||
typedef
|
||||
decltype(std::declval<Sequence const>().get(index()))
|
||||
type;
|
||||
|
||||
typedef typename
|
||||
mpl::at<typename Sequence::storage_type::types, N>::type
|
||||
element;
|
||||
typedef typename detail::cref_result<element>::type type;
|
||||
|
||||
static type
|
||||
call(Sequence const& m)
|
||||
{
|
||||
return m.get(index());
|
||||
return m.get_data().at_impl(N());
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
||||
#endif //BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP
|
||||
|
@ -1,58 +0,0 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2013 Joel de Guzman
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(BOOST_FUSION_MAP_DETAIL_AT_KEY_IMPL_02042013_0821)
|
||||
#define BOOST_FUSION_MAP_DETAIL_AT_KEY_IMPL_02042013_0821
|
||||
|
||||
#include <boost/fusion/support/detail/access.hpp>
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
#include <boost/mpl/at.hpp>
|
||||
#include <boost/mpl/identity.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct map_tag;
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template <typename Tag>
|
||||
struct at_key_impl;
|
||||
|
||||
template <>
|
||||
struct at_key_impl<map_tag>
|
||||
{
|
||||
template <typename Sequence, typename Key>
|
||||
struct apply
|
||||
{
|
||||
typedef
|
||||
decltype(std::declval<Sequence>().get(mpl::identity<Key>()))
|
||||
type;
|
||||
|
||||
static type
|
||||
call(Sequence& m)
|
||||
{
|
||||
return m.get(mpl::identity<Key>());
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Sequence, typename Key>
|
||||
struct apply<Sequence const, Key>
|
||||
{
|
||||
typedef
|
||||
decltype(std::declval<Sequence const>().get(mpl::identity<Key>()))
|
||||
type;
|
||||
|
||||
static type
|
||||
call(Sequence const& m)
|
||||
{
|
||||
return m.get(mpl::identity<Key>());
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
@ -1,38 +1,43 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2005-2013 Joel de Guzman
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2009 Christopher Schmidt
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(BOOST_FUSION_MAP_BEGIN_IMPL_02042013_0857)
|
||||
#define BOOST_FUSION_MAP_BEGIN_IMPL_02042013_0857
|
||||
|
||||
#include <boost/fusion/container/map/map_iterator.hpp>
|
||||
#ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_BEGIN_IMPL_HPP
|
||||
#define BOOST_FUSION_CONTAINER_MAP_DETAIL_BEGIN_IMPL_HPP
|
||||
|
||||
namespace boost { namespace fusion
|
||||
#include <boost/fusion/iterator/basic_iterator.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace extension
|
||||
{
|
||||
struct map_tag;
|
||||
template <typename>
|
||||
struct begin_impl;
|
||||
|
||||
namespace extension
|
||||
template <>
|
||||
struct begin_impl<map_tag>
|
||||
{
|
||||
template<typename T>
|
||||
struct begin_impl;
|
||||
|
||||
template<>
|
||||
struct begin_impl<map_tag>
|
||||
template <typename Seq>
|
||||
struct apply
|
||||
{
|
||||
template<typename Sequence>
|
||||
struct apply
|
||||
{
|
||||
typedef map_iterator<Sequence, 0> type;
|
||||
typedef
|
||||
basic_iterator<
|
||||
map_iterator_tag
|
||||
, typename Seq::category
|
||||
, Seq
|
||||
, 0
|
||||
>
|
||||
type;
|
||||
|
||||
static type call(Sequence& seq)
|
||||
{
|
||||
return type(seq);
|
||||
}
|
||||
};
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
return type(seq,0);
|
||||
}
|
||||
};
|
||||
}
|
||||
}}
|
||||
};
|
||||
}}}
|
||||
|
||||
#endif
|
||||
|
@ -1,75 +0,0 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2005-2013 Joel de Guzman
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(BOOST_FUSION_BUILD_MAP_02042013_1448)
|
||||
#define BOOST_FUSION_BUILD_MAP_02042013_1448
|
||||
|
||||
#include <boost/fusion/iterator/equal_to.hpp>
|
||||
#include <boost/fusion/iterator/next.hpp>
|
||||
#include <boost/fusion/iterator/value_of.hpp>
|
||||
#include <boost/fusion/iterator/deref.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/begin.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/end.hpp>
|
||||
#include <boost/fusion/container/map/map.hpp>
|
||||
#include <boost/fusion/algorithm/transformation/push_front.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
template <typename First, typename Last
|
||||
, bool is_empty = result_of::equal_to<First, Last>::value>
|
||||
struct build_map;
|
||||
|
||||
template <typename First, typename Last>
|
||||
struct build_map<First, Last, true>
|
||||
{
|
||||
typedef map<> type;
|
||||
static type
|
||||
call(First const&, Last const&)
|
||||
{
|
||||
return type();
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T, typename Rest>
|
||||
struct push_front_map;
|
||||
|
||||
template <typename T, typename ...Rest>
|
||||
struct push_front_map<T, map<Rest...>>
|
||||
{
|
||||
typedef map<T, Rest...> type;
|
||||
|
||||
static type
|
||||
call(T const& first, map<Rest...> const& rest)
|
||||
{
|
||||
return type(push_front(rest, first));
|
||||
}
|
||||
};
|
||||
|
||||
template <typename First, typename Last>
|
||||
struct build_map<First, Last, false>
|
||||
{
|
||||
typedef
|
||||
build_map<typename result_of::next<First>::type, Last>
|
||||
next_build_map;
|
||||
|
||||
typedef push_front_map<
|
||||
typename result_of::value_of<First>::type
|
||||
, typename next_build_map::type>
|
||||
push_front;
|
||||
|
||||
typedef typename push_front::type type;
|
||||
|
||||
static type
|
||||
call(First const& f, Last const& l)
|
||||
{
|
||||
typename result_of::value_of<First>::type v = *f;
|
||||
return push_front::call(
|
||||
v, next_build_map::call(fusion::next(f), l));
|
||||
}
|
||||
};
|
||||
}}}
|
||||
|
||||
#endif
|
@ -8,8 +8,8 @@
|
||||
#if !defined(FUSION_CONVERT_IMPL_09232005_1340)
|
||||
#define FUSION_CONVERT_IMPL_09232005_1340
|
||||
|
||||
#include <boost/fusion/container/map/detail/cpp03/as_map.hpp>
|
||||
#include <boost/fusion/container/map/detail/cpp03/map.hpp>
|
||||
#include <boost/fusion/container/map/detail/as_map.hpp>
|
||||
#include <boost/fusion/container/map/map.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/begin.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/size.hpp>
|
||||
|
@ -1,61 +0,0 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2011 Brandon Kohn
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP)
|
||||
#define BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/detail/access.hpp>
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
#include <boost/mpl/at.hpp>
|
||||
#include <boost/mpl/int.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct map_tag;
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template <typename Tag>
|
||||
struct at_impl;
|
||||
|
||||
template <>
|
||||
struct at_impl<map_tag>
|
||||
{
|
||||
template <typename Sequence, typename N>
|
||||
struct apply
|
||||
{
|
||||
typedef typename
|
||||
mpl::at<typename Sequence::storage_type::types, N>::type
|
||||
element;
|
||||
typedef typename detail::ref_result<element>::type type;
|
||||
|
||||
static type
|
||||
call(Sequence& m)
|
||||
{
|
||||
return m.get_data().at_impl(N());
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Sequence, typename N>
|
||||
struct apply<Sequence const, N>
|
||||
{
|
||||
typedef typename
|
||||
mpl::at<typename Sequence::storage_type::types, N>::type
|
||||
element;
|
||||
typedef typename detail::cref_result<element>::type type;
|
||||
|
||||
static type
|
||||
call(Sequence const& m)
|
||||
{
|
||||
return m.get_data().at_impl(N());
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
}}
|
||||
|
||||
#endif //BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP
|
@ -1,43 +0,0 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2009 Christopher Schmidt
|
||||
|
||||
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_FUSION_CONTAINER_MAP_DETAIL_BEGIN_IMPL_HPP
|
||||
#define BOOST_FUSION_CONTAINER_MAP_DETAIL_BEGIN_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/iterator/basic_iterator.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace extension
|
||||
{
|
||||
template <typename>
|
||||
struct begin_impl;
|
||||
|
||||
template <>
|
||||
struct begin_impl<map_tag>
|
||||
{
|
||||
template <typename Seq>
|
||||
struct apply
|
||||
{
|
||||
typedef
|
||||
basic_iterator<
|
||||
map_iterator_tag
|
||||
, typename Seq::category
|
||||
, Seq
|
||||
, 0
|
||||
>
|
||||
type;
|
||||
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
return type(seq,0);
|
||||
}
|
||||
};
|
||||
};
|
||||
}}}
|
||||
|
||||
#endif
|
@ -1,47 +0,0 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(FUSION_CONVERT_09232005_1340)
|
||||
#define FUSION_CONVERT_09232005_1340
|
||||
|
||||
#include <boost/fusion/container/map/detail/cpp03/as_map.hpp>
|
||||
#include <boost/fusion/container/map/detail/cpp03/convert_impl.hpp>
|
||||
#include <boost/fusion/container/map/detail/cpp03/map.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/begin.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/size.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
namespace result_of
|
||||
{
|
||||
template <typename Sequence>
|
||||
struct as_map
|
||||
{
|
||||
typedef typename detail::as_map<result_of::size<Sequence>::value> gen;
|
||||
typedef typename gen::
|
||||
template apply<typename result_of::begin<Sequence>::type>::type
|
||||
type;
|
||||
};
|
||||
}
|
||||
|
||||
template <typename Sequence>
|
||||
inline typename result_of::as_map<Sequence>::type
|
||||
as_map(Sequence& seq)
|
||||
{
|
||||
typedef typename result_of::as_map<Sequence>::gen gen;
|
||||
return gen::call(fusion::begin(seq));
|
||||
}
|
||||
|
||||
template <typename Sequence>
|
||||
inline typename result_of::as_map<Sequence const>::type
|
||||
as_map(Sequence const& seq)
|
||||
{
|
||||
typedef typename result_of::as_map<Sequence const>::gen gen;
|
||||
return gen::call(fusion::begin(seq));
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
@ -1,43 +0,0 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2009 Christopher Schmidt
|
||||
|
||||
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_FUSION_CONTAINER_MAP_DETAIL_END_IMPL_HPP
|
||||
#define BOOST_FUSION_CONTAINER_MAP_DETAIL_END_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/iterator/basic_iterator.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace extension
|
||||
{
|
||||
template <typename>
|
||||
struct end_impl;
|
||||
|
||||
template <>
|
||||
struct end_impl<map_tag>
|
||||
{
|
||||
template <typename Seq>
|
||||
struct apply
|
||||
{
|
||||
typedef
|
||||
basic_iterator<
|
||||
map_iterator_tag
|
||||
, typename Seq::category
|
||||
, Seq
|
||||
, Seq::size::value
|
||||
>
|
||||
type;
|
||||
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
return type(seq,0);
|
||||
}
|
||||
};
|
||||
};
|
||||
}}}
|
||||
|
||||
#endif
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user