File indexing completed on 2025-12-16 09:54:14
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef BOOST_LOCAL_FUNCTION_AUX_DECL_HPP_
0009 #define BOOST_LOCAL_FUNCTION_AUX_DECL_HPP_
0010
0011 #include <boost/local_function/aux_/macro/code_/result.hpp>
0012 #include <boost/local_function/aux_/macro/code_/bind.hpp>
0013 #include <boost/local_function/aux_/macro/code_/functor.hpp>
0014 #include <boost/local_function/aux_/preprocessor/traits/decl.hpp>
0015 #include <boost/local_function/aux_/preprocessor/traits/decl_error.hpp>
0016 #include <boost/scope_exit.hpp>
0017 #include <boost/mpl/assert.hpp>
0018 #include <boost/preprocessor/control/iif.hpp>
0019 #include <boost/preprocessor/facilities/is_empty.hpp>
0020 #include <boost/preprocessor/list/adt.hpp>
0021 #include <boost/preprocessor/tuple/eat.hpp>
0022
0023
0024
0025 #define BOOST_LOCAL_FUNCTION_AUX_DECL_OK_(id, typename01, decl_traits) \
0026 BOOST_LOCAL_FUNCTION_AUX_CODE_RESULT(id, typename01, decl_traits) \
0027 BOOST_LOCAL_FUNCTION_AUX_CODE_BIND(id, typename01, decl_traits) \
0028 BOOST_LOCAL_FUNCTION_AUX_CODE_FUNCTOR(id, typename01, decl_traits)
0029
0030 #define BOOST_LOCAL_FUNCTION_AUX_DECL_ERROR_(id, typename01, decl_traits) \
0031 BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS( \
0032 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_RETURNS(decl_traits)), \
0033 \
0034 BOOST_PP_TUPLE_EAT(1) \
0035 , \
0036 \
0037 \
0038 BOOST_LOCAL_FUNCTION_AUX_CODE_RESULT_DECL \
0039 )(id) \
0040 ; \
0041 BOOST_MPL_ASSERT_MSG(false, \
0042 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_ERROR_MSG(decl_traits), ())\
0043 ;
0044
0045
0046
0047 #define BOOST_LOCAL_FUNCTION_AUX_DECL_ARGS_VAR \
0048 BOOST_LOCAL_FUNCTION_AUX_SYMBOL( (args) )
0049
0050
0051
0052 extern boost::scope_exit::detail::undeclared
0053 BOOST_LOCAL_FUNCTION_AUX_DECL_ARGS_VAR;
0054
0055
0056 #define BOOST_LOCAL_FUNCTION_AUX_DECL(id, typename01, decl_traits) \
0057 BOOST_PP_IIF(BOOST_PP_IS_EMPTY( \
0058 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS_ERROR_MSG(decl_traits)), \
0059 BOOST_LOCAL_FUNCTION_AUX_DECL_OK_ \
0060 , \
0061 BOOST_LOCAL_FUNCTION_AUX_DECL_ERROR_ \
0062 )(id, typename01, decl_traits)
0063
0064 #endif
0065