123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /*==============================================================================
- Copyright (c) 2005-2010 Joel de Guzman
- Copyright (c) 2011 Thomas Heller
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- ==============================================================================*/
- #ifndef BOOST_PHOENIX_FUNCTION_ADAPT_CALLABLE_HPP
- #define BOOST_PHOENIX_FUNCTION_ADAPT_CALLABLE_HPP
- #include <boost/phoenix/core/limits.hpp>
- #include <boost/phoenix/core/detail/function_eval.hpp>
- #include <boost/preprocessor/repetition/repeat.hpp>
- #define BOOST_PHOENIX_ADAPT_CALLABLE_NULLARY(NAME, FUNC) \
- inline \
- boost::phoenix::detail::expression::function_eval<FUNC>::type const \
- NAME() \
- { \
- return boost::phoenix::detail::expression:: \
- function_eval<FUNC>::make(FUNC()); \
- } \
- /**/
- #define BOOST_PHOENIX_ADAPT_CALLABLE(NAME, FUNC, N) \
- template <BOOST_PHOENIX_typename_A(N)> \
- inline \
- typename \
- boost::phoenix::detail::expression::function_eval< \
- FUNC \
- , BOOST_PHOENIX_A(N)>::type const \
- NAME(BOOST_PHOENIX_A_const_ref_a(N)) \
- { \
- return boost::phoenix::detail::expression:: \
- function_eval<FUNC, BOOST_PHOENIX_A(N)>:: \
- make(FUNC(), BOOST_PHOENIX_a(N)); \
- } \
- /**/
- #define BOOST_PHOENIX_ADAPT_CALLABLE_VARARG(NAME, FUNC) \
- BOOST_PHOENIX_ADAPT_CALLABLE_NULLARY(NAME, FUNC) \
- BOOST_PP_REPEAT_FROM_TO( \
- 1 \
- , BOOST_PHOENIX_LIMIT \
- , BOOST_PHOENIX_ADAPT_CALLABLE_VARARG_R \
- , (NAME, FUNC) \
- ) \
- /**/
- #define BOOST_PHOENIX_ADAPT_CALLABLE_VARARG_R(Z, N, D) \
- BOOST_PHOENIX_ADAPT_CALLABLE( \
- BOOST_PP_TUPLE_ELEM(2, 0, D) \
- , BOOST_PP_TUPLE_ELEM(2, 1, D) \
- , N \
- ) \
- /**/
- #endif
|