forked from boostorg/fusion
Remove dependency to variadics macros for the old API not deducing types.
This commit is contained in:
@ -6,16 +6,16 @@
|
||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
==============================================================================*/
|
||||
|
||||
#define BOOST_PP_VARIADICS 1
|
||||
//#define BOOST_PP_VARIADICS
|
||||
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/empty.hpp>
|
||||
#include <boost/preprocessor/variadic/to_seq.hpp>
|
||||
#include <boost/preprocessor/variadic/size.hpp>
|
||||
#include <boost/preprocessor/variadic.hpp>
|
||||
#include <boost/type_traits/add_reference.hpp>
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
#include <boost/type_traits/add_const.hpp>
|
||||
@ -34,20 +34,29 @@
|
||||
#include <boost/fusion/adapted/struct/detail/value_of_impl.hpp>
|
||||
#include <boost/fusion/adapted/struct/detail/deref_impl.hpp>
|
||||
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_0(X, Y) \
|
||||
((X, Y)) BOOST_FUSION_ADAPT_STRUCT_FILLER_1
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_1(X, Y) \
|
||||
((X, Y)) BOOST_FUSION_ADAPT_STRUCT_FILLER_0
|
||||
//TODO: Write a variadic version full : with variadic also directly to provide the fields.
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_0(...) \
|
||||
((BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), (__VA_ARGS__))) \
|
||||
BOOST_FUSION_ADAPT_STRUCT_FILLER_1
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_1(...) \
|
||||
((BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), (__VA_ARGS__))) \
|
||||
BOOST_FUSION_ADAPT_STRUCT_FILLER_0
|
||||
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_0_END
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_1_END
|
||||
|
||||
//TODO: DAM remove need for variadic macros.
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_NEWAPI__0(...) \
|
||||
((BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), (__VA_ARGS__))) BOOST_FUSION_ADAPT_STRUCT_FILLER_NEWAPI__1
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_NEWAPI__1(...) \
|
||||
((BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), (__VA_ARGS__))) BOOST_FUSION_ADAPT_STRUCT_FILLER_NEWAPI__0
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_NEWAPI__0_END
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_NEWAPI__1_END
|
||||
#else
|
||||
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_0(X, Y) \
|
||||
((2, (X, Y))) BOOST_FUSION_ADAPT_STRUCT_FILLER_1
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_1(X, Y) \
|
||||
((2, (X, Y))) BOOST_FUSION_ADAPT_STRUCT_FILLER_0
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_0_END
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_1_END
|
||||
|
||||
#endif
|
||||
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_C(TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE)\
|
||||
BOOST_FUSION_ADAPT_STRUCT_C_BASE( \
|
||||
@ -55,8 +64,8 @@
|
||||
NAME_SEQ, \
|
||||
I, \
|
||||
BOOST_PP_EMPTY, \
|
||||
BOOST_PP_TUPLE_ELEM(1, ATTRIBUTE), \
|
||||
BOOST_PP_TUPLE_ELEM(0, ATTRIBUTE))
|
||||
BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE), \
|
||||
BOOST_PP_TUPLE_ELEM(2, 0, ATTRIBUTE))
|
||||
|
||||
#define BOOST_FUSION_ADAPT_TPL_STRUCT(TEMPLATE_PARAMS_SEQ,NAME_SEQ, ATTRIBUTES) \
|
||||
BOOST_FUSION_ADAPT_STRUCT_BASE( \
|
||||
@ -74,7 +83,7 @@
|
||||
(0)(NAME), \
|
||||
struct_tag, \
|
||||
0, \
|
||||
BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_NEWAPI__0(0,0)ATTRIBUTES,_END), \
|
||||
BOOST_PP_CAT( BOOST_FUSION_ADAPT_STRUCT_FILLER_0(0,0)ATTRIBUTES,_END), \
|
||||
BOOST_FUSION_ADAPT_STRUCT_C)
|
||||
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_AS_VIEW(NAME, ATTRIBUTES) \
|
||||
|
Reference in New Issue
Block a user