]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /*============================================================================= |
2 | Copyright (c) 2011 Thomas Heller | |
3 | ||
4 | Distributed under the Boost Software License, Version 1.0. (See accompanying | |
5 | file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
6 | ==============================================================================*/ | |
7 | #if !BOOST_PHOENIX_IS_ITERATING | |
8 | ||
9 | template <typename F, BOOST_PHOENIX_typename_A_void(BOOST_PP_DEC(BOOST_PHOENIX_COMPOSITE_LIMIT)), typename Dummy = void> | |
10 | struct has_phx2_result | |
11 | : mpl::false_ | |
12 | {}; | |
13 | ||
14 | template <typename F, BOOST_PHOENIX_typename_A_void(BOOST_PP_DEC(BOOST_PHOENIX_COMPOSITE_LIMIT)), typename Dummy = void> | |
15 | struct phx2_result; | |
16 | ||
17 | #if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES) | |
18 | #include <boost/phoenix/core/detail/cpp03/preprocessed/phx2_result.hpp> | |
19 | #else | |
20 | #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) | |
21 | #pragma wave option(preserve: 2, line: 0, output: "preprocessed/phx2_result_" BOOST_PHOENIX_LIMIT_STR ".hpp") | |
22 | #endif | |
23 | /*============================================================================= | |
24 | Copyright (c) 2011 Thomas Heller | |
25 | ||
26 | Distributed under the Boost Software License, Version 1.0. (See accompanying | |
27 | file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
28 | ==============================================================================*/ | |
29 | #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) | |
30 | #pragma wave option(preserve: 1) | |
31 | #endif | |
32 | ||
33 | #define BOOST_PHOENIX_ITERATION_PARAMS \ | |
34 | (3, (1, BOOST_PP_DEC(BOOST_PHOENIX_COMPOSITE_LIMIT), \ | |
35 | <boost/phoenix/core/detail/cpp03/phx2_result.hpp>)) | |
36 | #include BOOST_PHOENIX_ITERATE() | |
37 | ||
38 | #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) | |
39 | #pragma wave option(output: null) | |
40 | #endif | |
41 | ||
42 | #endif | |
43 | ||
44 | #else | |
45 | ||
46 | template <typename F, BOOST_PHOENIX_typename_A> | |
47 | struct has_phx2_result<F, BOOST_PHOENIX_A> | |
48 | : mpl::eval_if< | |
49 | has_result_type<F> | |
50 | , mpl::false_ | |
51 | , has_phx2_result_impl<typename F::template result<F(BOOST_PHOENIX_A)> > | |
52 | >::type | |
53 | {}; | |
54 | ||
55 | template <typename F, BOOST_PHOENIX_typename_A> | |
56 | struct phx2_result<F, BOOST_PHOENIX_A> | |
57 | { | |
58 | typedef typename F::template result<BOOST_PHOENIX_A>::type type; | |
59 | }; | |
60 | ||
61 | template <typename F, BOOST_PHOENIX_typename_A> | |
62 | struct phx2_result<F, BOOST_PHOENIX_A_ref> | |
63 | { | |
64 | typedef typename F::template result<BOOST_PHOENIX_A>::type type; | |
65 | }; | |
66 | ||
67 | template <typename F, BOOST_PHOENIX_typename_A> | |
68 | struct phx2_result<F, BOOST_PHOENIX_A_const_ref> | |
69 | { | |
70 | typedef typename F::template result<BOOST_PHOENIX_A>::type type; | |
71 | }; | |
72 | ||
73 | #endif |