mirror of
https://github.com/boostorg/fusion.git
synced 2025-07-16 05:42:20 +02:00
EDITORIAL: Cleaning the ADAPT_STRUCT which can deduce types.
This commit is contained in:
@ -41,17 +41,21 @@
|
|||||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_0_END
|
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_0_END
|
||||||
#define BOOST_FUSION_ADAPT_STRUCT_FILLER_1_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
|
||||||
|
|
||||||
#define BOOST_FUSION_ADAPT_STRUCT_C(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( \
|
BOOST_FUSION_ADAPT_STRUCT_C_BASE( \
|
||||||
TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,BOOST_PP_EMPTY,ATTRIBUTE,2)
|
TEMPLATE_PARAMS_SEQ, \
|
||||||
|
NAME_SEQ, \
|
||||||
#define BOOST_FUSION_ADAPT_STRUCT_C_AUTO(TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE) \
|
I, \
|
||||||
BOOST_FUSION_ADAPT_STRUCT_C_BASE( \
|
BOOST_PP_EMPTY, \
|
||||||
TEMPLATE_PARAMS_SEQ, \
|
BOOST_PP_TUPLE_ELEM(1, ATTRIBUTE), \
|
||||||
NAME_SEQ, \
|
|
||||||
I, \
|
|
||||||
BOOST_PP_EMPTY, \
|
|
||||||
BOOST_PP_TUPLE_ELEM(1, ATTRIBUTE), \
|
|
||||||
BOOST_PP_TUPLE_ELEM(0, ATTRIBUTE))
|
BOOST_PP_TUPLE_ELEM(0, ATTRIBUTE))
|
||||||
|
|
||||||
#define BOOST_FUSION_ADAPT_TPL_STRUCT(TEMPLATE_PARAMS_SEQ,NAME_SEQ, ATTRIBUTES) \
|
#define BOOST_FUSION_ADAPT_TPL_STRUCT(TEMPLATE_PARAMS_SEQ,NAME_SEQ, ATTRIBUTES) \
|
||||||
@ -65,41 +69,13 @@
|
|||||||
BOOST_FUSION_ADAPT_STRUCT_C)
|
BOOST_FUSION_ADAPT_STRUCT_C)
|
||||||
|
|
||||||
#define BOOST_FUSION_ADAPT_STRUCT(NAME, ATTRIBUTES) \
|
#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( \
|
BOOST_FUSION_ADAPT_STRUCT_BASE( \
|
||||||
(0), \
|
(0), \
|
||||||
(0)(NAME), \
|
(0)(NAME), \
|
||||||
struct_tag, \
|
struct_tag, \
|
||||||
0, \
|
0, \
|
||||||
BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_NEWAPI__0(0,0)ATTRIBUTES,_END), \
|
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) \
|
#define BOOST_FUSION_ADAPT_STRUCT_AS_VIEW(NAME, ATTRIBUTES) \
|
||||||
BOOST_FUSION_ADAPT_STRUCT_BASE( \
|
BOOST_FUSION_ADAPT_STRUCT_BASE( \
|
||||||
|
@ -56,22 +56,22 @@ namespace ns
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_FUSION_ADAPT_STRUCT_NEWAPI(
|
BOOST_FUSION_ADAPT_STRUCT(
|
||||||
ns::point,
|
ns::point,
|
||||||
(x)
|
(x)
|
||||||
(int, y)
|
(int, y)
|
||||||
)
|
)
|
||||||
|
|
||||||
#if !BOOST_WORKAROUND(__GNUC__,<4)
|
#if !BOOST_WORKAROUND(__GNUC__,<4)
|
||||||
BOOST_FUSION_ADAPT_STRUCT_NEWAPI(
|
BOOST_FUSION_ADAPT_STRUCT(
|
||||||
ns::point_with_private_attributes,
|
ns::point_with_private_attributes,
|
||||||
(x)
|
(int, x)
|
||||||
(y)
|
(int, y)
|
||||||
)
|
)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct s { int m; };
|
struct s { int m; };
|
||||||
BOOST_FUSION_ADAPT_STRUCT_NEWAPI(s, (m))
|
BOOST_FUSION_ADAPT_STRUCT(s, (m))
|
||||||
|
|
||||||
int
|
int
|
||||||
main()
|
main()
|
||||||
|
Reference in New Issue
Block a user