Chris@16
|
1 /*=============================================================================
|
Chris@16
|
2 Copyright (c) 2001-2011 Joel de Guzman
|
Chris@16
|
3 Copyright (c) 2001-2011 Hartmut Kaiser
|
Chris@16
|
4 Copyright (c) 2011 Thomas Heller
|
Chris@16
|
5
|
Chris@16
|
6 Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Chris@16
|
7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
8 ==============================================================================*/
|
Chris@16
|
9 #if !defined(BOOST_SPIRIT_TERMINAL_EXPRESSION_MARCH_24_2011_1210AM)
|
Chris@16
|
10 #define BOOST_SPIRIT_TERMINAL_EXPRESSION_MARCH_24_2011_1210AM
|
Chris@16
|
11
|
Chris@16
|
12 #ifndef BOOST_SPIRIT_USE_PHOENIX_V3
|
Chris@16
|
13
|
Chris@16
|
14 namespace boost { namespace phoenix { namespace detail
|
Chris@16
|
15 {
|
Chris@16
|
16 namespace expression
|
Chris@16
|
17 {
|
Chris@16
|
18 template <
|
Chris@16
|
19 typename F, typename A0 = void, typename A1 = void
|
Chris@16
|
20 , typename A2 = void, typename Dummy = void>
|
Chris@16
|
21 struct function_eval;
|
Chris@16
|
22
|
Chris@16
|
23 template <typename F, typename A0>
|
Chris@16
|
24 struct function_eval<F, A0>
|
Chris@16
|
25 {
|
Chris@16
|
26 typedef phoenix::actor<
|
Chris@16
|
27 typename phoenix::as_composite<
|
Chris@16
|
28 phoenix::detail::function_eval<1>, F, A0
|
Chris@16
|
29 >::type
|
Chris@16
|
30 > type;
|
Chris@16
|
31
|
Chris@16
|
32 static type make(F f, A0 const & _0)
|
Chris@16
|
33 {
|
Chris@16
|
34 return phoenix::compose<
|
Chris@16
|
35 phoenix::detail::function_eval<1> >(f, _0);
|
Chris@16
|
36 }
|
Chris@16
|
37 };
|
Chris@16
|
38
|
Chris@16
|
39 template <typename F, typename A0, typename A1>
|
Chris@16
|
40 struct function_eval<F, A0, A1>
|
Chris@16
|
41 {
|
Chris@16
|
42 typedef phoenix::actor<
|
Chris@16
|
43 typename phoenix::as_composite<
|
Chris@16
|
44 phoenix::detail::function_eval<2>, F, A0, A1
|
Chris@16
|
45 >::type
|
Chris@16
|
46 > type;
|
Chris@16
|
47
|
Chris@16
|
48 static type make(F f, A0 const & _0, A1 const & _1)
|
Chris@16
|
49 {
|
Chris@16
|
50 return phoenix::compose<
|
Chris@16
|
51 phoenix::detail::function_eval<2> >(f, _0, _1);
|
Chris@16
|
52 }
|
Chris@16
|
53 };
|
Chris@16
|
54
|
Chris@16
|
55 template <typename F, typename A0, typename A1, typename A2>
|
Chris@16
|
56 struct function_eval<F, A0, A1, A2>
|
Chris@16
|
57 {
|
Chris@16
|
58 typedef phoenix::actor<
|
Chris@16
|
59 typename phoenix::as_composite<
|
Chris@16
|
60 phoenix::detail::function_eval<3>, F, A0, A1, A2
|
Chris@16
|
61 >::type
|
Chris@16
|
62 > type;
|
Chris@16
|
63
|
Chris@16
|
64 static type make(F f, A0 const & _0, A1 const & _1, A2 const & _2)
|
Chris@16
|
65 {
|
Chris@16
|
66 return phoenix::compose<
|
Chris@16
|
67 phoenix::detail::function_eval<3> >(f, _0, _1, _2);
|
Chris@16
|
68 }
|
Chris@16
|
69 };
|
Chris@16
|
70 }
|
Chris@16
|
71 }}}
|
Chris@16
|
72
|
Chris@16
|
73 #endif // !BOOST_SPIRIT_USE_PHOENIX_V3
|
Chris@16
|
74
|
Chris@16
|
75 #endif
|