EDITORIAL: Cleaning the ADAPT_STRUCT which can deduce types.

This commit is contained in:
Damien Buhl (alias daminetreg)
2014-05-14 00:02:52 +02:00
parent 04cbf0d4c6
commit 6f6bfb3a27
2 changed files with 19 additions and 43 deletions

View File

@ -41,11 +41,15 @@
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_0_END
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_1_END
#define BOOST_FUSION_ADAPT_STRUCT_C(TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE)\
BOOST_FUSION_ADAPT_STRUCT_C_BASE( \
TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,BOOST_PP_EMPTY,ATTRIBUTE,2)
//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
#define BOOST_FUSION_ADAPT_STRUCT_C_AUTO(TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE) \
#define BOOST_FUSION_ADAPT_STRUCT_C(TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE)\
BOOST_FUSION_ADAPT_STRUCT_C_BASE( \
TEMPLATE_PARAMS_SEQ, \
NAME_SEQ, \
@ -65,41 +69,13 @@
BOOST_FUSION_ADAPT_STRUCT_C)
#define BOOST_FUSION_ADAPT_STRUCT(NAME, ATTRIBUTES) \
BOOST_FUSION_ADAPT_STRUCT_BASE( \
(0), \
(0)(NAME), \
struct_tag, \
0, \
BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0(0,0)ATTRIBUTES,_END), \
BOOST_FUSION_ADAPT_STRUCT_C)
#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
#define BOOST_FUSION_ADAPT_STRUCT_NEWAPI(NAME, ATTRIBUTES) \
BOOST_FUSION_ADAPT_STRUCT_BASE( \
(0), \
(0)(NAME), \
struct_tag, \
0, \
BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_NEWAPI__0(0,0)ATTRIBUTES,_END), \
BOOST_FUSION_ADAPT_STRUCT_C_AUTO)
BOOST_FUSION_ADAPT_STRUCT_C)
#define BOOST_FUSION_ADAPT_STRUCT_AS_VIEW(NAME, ATTRIBUTES) \
BOOST_FUSION_ADAPT_STRUCT_BASE( \

View File

@ -56,22 +56,22 @@ namespace ns
#endif
}
BOOST_FUSION_ADAPT_STRUCT_NEWAPI(
BOOST_FUSION_ADAPT_STRUCT(
ns::point,
(x)
(int, y)
)
#if !BOOST_WORKAROUND(__GNUC__,<4)
BOOST_FUSION_ADAPT_STRUCT_NEWAPI(
BOOST_FUSION_ADAPT_STRUCT(
ns::point_with_private_attributes,
(x)
(y)
(int, x)
(int, y)
)
#endif
struct s { int m; };
BOOST_FUSION_ADAPT_STRUCT_NEWAPI(s, (m))
BOOST_FUSION_ADAPT_STRUCT(s, (m))
int
main()