File indexing completed on 2025-01-19 09:34:15
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_APPEND_HPP_
0009 #define BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_APPEND_HPP_
0010
0011 #include <boost/local_function/aux_/preprocessor/traits/decl_returns.hpp>
0012 #include <boost/local_function/aux_/preprocessor/traits/decl_params.hpp>
0013 #include <boost/local_function/aux_/preprocessor/traits/decl_const_binds.hpp>
0014 #include <boost/local_function/aux_/preprocessor/traits/decl_binds.hpp>
0015 #include <boost/local_function/aux_/preprocessor/traits/decl_error.hpp>
0016 #include <boost/local_function/aux_/preprocessor/traits/param.hpp>
0017 #include <boost/local_function/detail/preprocessor/keyword/return.hpp>
0018 #include <boost/preprocessor/facilities/empty.hpp>
0019 #include <boost/preprocessor/arithmetic/dec.hpp>
0020 #include <boost/preprocessor/list/append.hpp>
0021 #include <boost/preprocessor/list/size.hpp>
0022 #include <boost/preprocessor/list/at.hpp>
0023 #include <boost/preprocessor/list/first_n.hpp>
0024
0025
0026
0027 #define BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_APPEND_PARAM_DEFAULT_( \
0028 params, default_value) \
0029 \
0030 BOOST_PP_LIST_APPEND( \
0031 BOOST_PP_LIST_FIRST_N(BOOST_PP_DEC(BOOST_PP_LIST_SIZE(params)), \
0032 params) \
0033 , \
0034 ( \
0035 ( \
0036 BOOST_LOCAL_FUNCTION_AUX_PP_PARAM_TRAITS_DECL( \
0037 BOOST_PP_LIST_AT(params, BOOST_PP_DEC( \
0038 BOOST_PP_LIST_SIZE(params)))) \
0039 , \
0040 default_value BOOST_PP_EMPTY \
0041 ) \
0042 , \
0043 BOOST_PP_NIL \
0044 ) \
0045 )
0046
0047
0048
0049
0050 #define BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_APPEND_RETURN( \
0051 decl_traits, return_type) \
0052 ( \
0053 BOOST_PP_LIST_APPEND( \
0054 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_RETURNS(decl_traits), \
0055 ( BOOST_LOCAL_FUNCTION_DETAIL_PP_KEYWORD_RETURN_REMOVE_FRONT( \
0056 return_type), BOOST_PP_NIL ) ) \
0057 , \
0058 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_PARAMS(decl_traits) \
0059 , \
0060 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_CONST_BINDS(decl_traits) \
0061 , \
0062 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_CONST_BIND_THIS_TYPES( \
0063 decl_traits) \
0064 , \
0065 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_BINDS(decl_traits) \
0066 , \
0067 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_BIND_THIS_TYPES(decl_traits) \
0068 , \
0069 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_ERROR(decl_traits) \
0070 )
0071
0072
0073
0074 #define BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_APPEND_PARAM( \
0075 decl_traits, param_decl) \
0076 ( \
0077 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_RETURNS(decl_traits) \
0078 , \
0079 BOOST_PP_LIST_APPEND( \
0080 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_PARAMS(decl_traits), \
0081 \
0082 ( (param_decl, BOOST_PP_EMPTY), BOOST_PP_NIL ) ) \
0083 , \
0084 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_CONST_BINDS(decl_traits) \
0085 , \
0086 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_CONST_BIND_THIS_TYPES( \
0087 decl_traits) \
0088 , \
0089 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_BINDS(decl_traits) \
0090 , \
0091 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_BIND_THIS_TYPES(decl_traits) \
0092 , \
0093 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_ERROR(decl_traits) \
0094 )
0095
0096
0097
0098 #define BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_APPEND_PARAM_DEFAULT( \
0099 decl_traits, default_value) \
0100 ( \
0101 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_RETURNS(decl_traits) \
0102 , \
0103 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_APPEND_PARAM_DEFAULT_( \
0104 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_PARAMS(decl_traits), \
0105 default_value) \
0106 , \
0107 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_CONST_BINDS(decl_traits) \
0108 , \
0109 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_CONST_BIND_THIS_TYPES( \
0110 decl_traits) \
0111 , \
0112 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_BINDS(decl_traits) \
0113 , \
0114 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_BIND_THIS_TYPES(decl_traits) \
0115 , \
0116 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_ERROR(decl_traits) \
0117 )
0118
0119
0120
0121 #define BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_APPEND_BIND( \
0122 decl_traits, var_without_type, var_with_type) \
0123 ( \
0124 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_RETURNS(decl_traits) \
0125 , \
0126 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_PARAMS(decl_traits) \
0127 , \
0128 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_CONST_BINDS(decl_traits) \
0129 , \
0130 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_CONST_BIND_THIS_TYPES( \
0131 decl_traits) \
0132 , \
0133 BOOST_PP_LIST_APPEND( \
0134 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_BINDS(decl_traits), \
0135 ( (var_without_type, var_with_type), BOOST_PP_NIL ) ) \
0136 , \
0137 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_BIND_THIS_TYPES(decl_traits) \
0138 , \
0139 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_ERROR(decl_traits) \
0140 )
0141
0142
0143 #define BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_APPEND_BIND_THIS_TYPE( \
0144 decl_traits, this_type) \
0145 ( \
0146 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_RETURNS(decl_traits) \
0147 , \
0148 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_PARAMS(decl_traits) \
0149 , \
0150 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_CONST_BINDS(decl_traits) \
0151 , \
0152 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_CONST_BIND_THIS_TYPES( \
0153 decl_traits) \
0154 , \
0155 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_BINDS(decl_traits) \
0156 , \
0157 BOOST_PP_LIST_APPEND( \
0158 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_BIND_THIS_TYPES( \
0159 decl_traits), \
0160 ( (this_type), BOOST_PP_NIL ) ) \
0161 , \
0162 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_ERROR(decl_traits) \
0163 )
0164
0165
0166
0167 #define BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_APPEND_CONST_BIND( \
0168 decl_traits, var_without_type, var_with_type) \
0169 ( \
0170 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_RETURNS(decl_traits) \
0171 , \
0172 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_PARAMS(decl_traits) \
0173 , \
0174 BOOST_PP_LIST_APPEND( \
0175 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_CONST_BINDS( \
0176 decl_traits), \
0177 ( (var_without_type, var_with_type), BOOST_PP_NIL ) ) \
0178 , \
0179 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_CONST_BIND_THIS_TYPES( \
0180 decl_traits) \
0181 , \
0182 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_BINDS(decl_traits) \
0183 , \
0184 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_BIND_THIS_TYPES(decl_traits) \
0185 , \
0186 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_ERROR(decl_traits) \
0187 )
0188
0189
0190 #define BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_APPEND_CONST_BIND_THIS_TYPE( \
0191 decl_traits, this_type) \
0192 ( \
0193 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_RETURNS(decl_traits) \
0194 , \
0195 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_PARAMS(decl_traits) \
0196 , \
0197 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_CONST_BINDS(decl_traits) \
0198 , \
0199 BOOST_PP_LIST_APPEND( \
0200 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_CONST_BIND_THIS_TYPES( \
0201 decl_traits), \
0202 ( (this_type), BOOST_PP_NIL ) ) \
0203 , \
0204 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_BINDS(decl_traits) \
0205 , \
0206 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_BIND_THIS_TYPES(decl_traits) \
0207 , \
0208 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_ERROR(decl_traits) \
0209 )
0210
0211 #endif
0212