forked from boostorg/fusion
Optimize.
This commit is contained in:
@ -15,6 +15,7 @@
|
||||
#include <boost/fusion/adapted/struct/detail/adapt_is_tpl.hpp>
|
||||
|
||||
#include <boost/preprocessor/control/if.hpp>
|
||||
#include <boost/preprocessor/control/expr_if.hpp>
|
||||
#include <boost/preprocessor/seq/seq.hpp>
|
||||
#include <boost/preprocessor/seq/elem.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
@ -56,7 +57,8 @@
|
||||
struct deduced_attr_type { \
|
||||
static const BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj; \
|
||||
typedef \
|
||||
BOOST_PP_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ),typename,) \
|
||||
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
|
||||
typename) \
|
||||
BOOST_TYPEOF( PREFIX() BOOST_FUSION_ADAPT_ADT_ATTRIBUTE_GETEXPR( \
|
||||
ATTRIBUTE, ATTRIBUTE_TUPLE_SIZE, 1)) type; \
|
||||
};
|
||||
@ -79,16 +81,20 @@
|
||||
NAME_SEQ, ATTRIBUTE, ATTRIBUTE_TUPLE_SIZE, PREFIX, TEMPLATE_PARAMS_SEQ) \
|
||||
\
|
||||
typedef \
|
||||
BOOST_PP_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ),typename,) \
|
||||
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
|
||||
typename) \
|
||||
boost::remove_const< \
|
||||
BOOST_PP_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ),typename,) \
|
||||
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
|
||||
typename) \
|
||||
deduced_attr_type::type \
|
||||
>::type type; \
|
||||
\
|
||||
typedef \
|
||||
BOOST_PP_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ),typename,) \
|
||||
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
|
||||
typename) \
|
||||
boost::add_const< \
|
||||
BOOST_PP_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ),typename,) \
|
||||
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
|
||||
typename) \
|
||||
deduced_attr_type::type \
|
||||
>::type const_type;
|
||||
|
||||
@ -161,7 +167,7 @@
|
||||
> \
|
||||
{ \
|
||||
typedef \
|
||||
BOOST_PP_IF(BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ), typename, ) \
|
||||
BOOST_PP_EXPR_IF(BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ), typename) \
|
||||
access::adt_attribute_access< \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
|
||||
, I \
|
||||
@ -202,7 +208,7 @@
|
||||
> \
|
||||
{ \
|
||||
typedef \
|
||||
BOOST_PP_IF(BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ), typename, ) \
|
||||
BOOST_PP_EXPR_IF(BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ), typename) \
|
||||
access::adt_attribute_access< \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
|
||||
, I \
|
||||
@ -253,7 +259,8 @@
|
||||
, I \
|
||||
> \
|
||||
{ \
|
||||
typedef BOOST_PP_IF(BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ), typename, ) \
|
||||
typedef BOOST_PP_EXPR_IF(BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ), \
|
||||
typename) \
|
||||
adt_attribute_proxy< \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
|
||||
, I \
|
||||
|
@ -16,9 +16,9 @@
|
||||
#include <boost/mpl/aux_/preprocessor/token_equal.hpp>
|
||||
|
||||
#include <boost/preprocessor/config/config.hpp>
|
||||
#include <boost/preprocessor/control/if.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/variadic/size.hpp>
|
||||
#include <boost/preprocessor/arithmetic/sub.hpp>
|
||||
#include <boost/preprocessor/arithmetic/dec.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
@ -58,7 +58,7 @@
|
||||
#define BOOST_FUSION_ADAPT_ASSOC_ADT_WRAPPEDATTR_GET_KEY(ATTRIBUTE) \
|
||||
BOOST_PP_TUPLE_ELEM( \
|
||||
BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR_SIZE(ATTRIBUTE), \
|
||||
BOOST_PP_SUB(BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR_SIZE(ATTRIBUTE), 1), \
|
||||
BOOST_PP_DEC(BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR_SIZE(ATTRIBUTE)), \
|
||||
BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR(ATTRIBUTE))
|
||||
|
||||
#endif
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
#include <boost/mpl/aux_/preprocessor/token_equal.hpp>
|
||||
|
||||
#include <boost/preprocessor/arithmetic/sub.hpp>
|
||||
#include <boost/preprocessor/arithmetic/dec.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/logical/or.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
@ -45,6 +45,7 @@
|
||||
# define BOOST_FUSION_ADAPT_ADT_FILLER_0_END
|
||||
# define BOOST_FUSION_ADAPT_ADT_FILLER_1_END
|
||||
|
||||
// MSVC don't compile when using BOOST_PP_BITOR instead of BOOST_PP_OR.
|
||||
# define BOOST_FUSION_ADAPT_ADT_FILLER(...) \
|
||||
BOOST_PP_IIF( \
|
||||
BOOST_PP_OR( \
|
||||
@ -64,7 +65,7 @@
|
||||
|
||||
# define BOOST_FUSION_WORKAROUND_VARIADIC_EMPTINESS_LAST_ELEM(...) \
|
||||
BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REST_N( \
|
||||
BOOST_PP_SUB(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), 1), \
|
||||
BOOST_PP_DEC(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)), \
|
||||
BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__)))
|
||||
|
||||
#else // BOOST_PP_VARIADICS
|
||||
|
@ -48,8 +48,8 @@
|
||||
BOOST_PP_IIF(IS_VIEW, BOOST_FUSION_PROXY_PREFIX, BOOST_PP_EMPTY), \
|
||||
BOOST_FUSION_ADAPT_STRUCT_WRAPPEDATTR(ATTRIBUTE), \
|
||||
BOOST_FUSION_ADAPT_STRUCT_WRAPPEDATTR_SIZE(ATTRIBUTE), \
|
||||
BOOST_PP_IIF(BOOST_PP_LESS( \
|
||||
BOOST_FUSION_ADAPT_STRUCT_WRAPPEDATTR_SIZE(ATTRIBUTE),3), 1, 0)) \
|
||||
BOOST_PP_LESS( \
|
||||
BOOST_FUSION_ADAPT_STRUCT_WRAPPEDATTR_SIZE(ATTRIBUTE),3)) \
|
||||
\
|
||||
template< \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
#include <boost/preprocessor/config/config.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/arithmetic/sub.hpp>
|
||||
#include <boost/preprocessor/arithmetic/dec.hpp>
|
||||
#include <boost/preprocessor/variadic/size.hpp>
|
||||
#include <boost/preprocessor/variadic/elem.hpp>
|
||||
|
||||
@ -67,7 +67,7 @@
|
||||
#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_WRAPPEDATTR_GET_KEY(ATTRIBUTE) \
|
||||
BOOST_PP_TUPLE_ELEM( \
|
||||
BOOST_FUSION_ADAPT_STRUCT_WRAPPEDATTR_SIZE(ATTRIBUTE), \
|
||||
BOOST_PP_SUB(BOOST_FUSION_ADAPT_STRUCT_WRAPPEDATTR_SIZE(ATTRIBUTE), 1), \
|
||||
BOOST_PP_DEC(BOOST_FUSION_ADAPT_STRUCT_WRAPPEDATTR_SIZE(ATTRIBUTE)), \
|
||||
BOOST_FUSION_ADAPT_STRUCT_WRAPPEDATTR(ATTRIBUTE))
|
||||
|
||||
#endif
|
||||
|
@ -22,7 +22,7 @@
|
||||
#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/facilities/empty.hpp>
|
||||
#include <boost/preprocessor/repeat.hpp>
|
||||
#include <boost/preprocessor/seq/for_each_i.hpp>
|
||||
#include <boost/preprocessor/seq/size.hpp>
|
||||
@ -62,7 +62,6 @@
|
||||
~, \
|
||||
ATTRIBUTES_SEQ) \
|
||||
|
||||
#define BOOST_FUSION_IGNORE_1(ARG1)
|
||||
#define BOOST_FUSION_IGNORE_2(ARG1, ARG2)
|
||||
|
||||
#define BOOST_FUSION_MAKE_COPY_CONSTRUCTOR(NAME, ATTRIBUTES_SEQ) \
|
||||
@ -425,17 +424,10 @@
|
||||
#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_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_EMPTY)(ATTRIBUTES_SEQ) \
|
||||
{ \
|
||||
} \
|
||||
\
|
||||
|
Reference in New Issue
Block a user