Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/phoenix/object/new.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
15:663ca0da4350 | 16:2665513ce2d3 |
---|---|
1 /*============================================================================== | |
2 Copyright (c) 2001-2010 Joel de Guzman | |
3 Copyright (c) 2010 Thomas Heller | |
4 | |
5 Distributed under the Boost Software License, Version 1.0. (See accompanying | |
6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
7 ==============================================================================*/ | |
8 #ifndef BOOST_PHOENIX_OBJECT_NEW_HPP | |
9 #define BOOST_PHOENIX_OBJECT_NEW_HPP | |
10 | |
11 #include <boost/phoenix/core/limits.hpp> | |
12 #include <boost/phoenix/core/expression.hpp> | |
13 #include <boost/phoenix/core/meta_grammar.hpp> | |
14 #include <boost/phoenix/core/call.hpp> | |
15 #include <boost/phoenix/object/detail/target.hpp> | |
16 #include <boost/phoenix/support/iterate.hpp> | |
17 #include <boost/preprocessor/repetition/repeat_from_to.hpp> | |
18 | |
19 BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG( | |
20 (boost)(phoenix)(new_) | |
21 , (proto::terminal<detail::target<proto::_> >) | |
22 (meta_grammar) | |
23 , BOOST_PHOENIX_COMPOSITE_LIMIT | |
24 ) | |
25 | |
26 namespace boost { namespace phoenix | |
27 { | |
28 struct new_eval | |
29 { | |
30 template <typename Sig> | |
31 struct result; | |
32 | |
33 template <typename This, typename A0, typename Context> | |
34 struct result<This(A0, Context)> | |
35 { | |
36 typedef typename detail::result_of::target<A0> target_type; | |
37 typedef typename target_type::type * type; | |
38 }; | |
39 | |
40 template <typename Target, typename Context> | |
41 typename detail::result_of::target<Target>::type * | |
42 operator()(Target, Context const &) const | |
43 { | |
44 return new typename detail::result_of::target<Target>::type; | |
45 } | |
46 | |
47 // Bring in the rest | |
48 #include <boost/phoenix/object/detail/new_eval.hpp> | |
49 }; | |
50 | |
51 template <typename Dummy> | |
52 struct default_actions::when<rule::new_, Dummy> | |
53 : call<new_eval, Dummy> | |
54 {}; | |
55 | |
56 template <typename T> | |
57 inline | |
58 typename expression::new_<detail::target<T> >::type const | |
59 new_() | |
60 { | |
61 return | |
62 expression:: | |
63 new_<detail::target<T> >:: | |
64 make(detail::target<T>()); | |
65 } | |
66 | |
67 // Bring in the rest | |
68 #include <boost/phoenix/object/detail/new.hpp> | |
69 }} | |
70 | |
71 #endif | |
72 |