Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/spirit/home/phoenix/operator/io.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-2007 Joel de Guzman | |
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 #ifndef PHOENIX_OPERATOR_IO_HPP | |
8 #define PHOENIX_OPERATOR_IO_HPP | |
9 | |
10 #include <boost/spirit/home/phoenix/operator/detail/io.hpp> | |
11 | |
12 namespace boost { namespace phoenix | |
13 { | |
14 /////////////////////////////////////////////////////////////////////////////// | |
15 // | |
16 // overloads for std::basic_ostream and std::basic_istream | |
17 // | |
18 /////////////////////////////////////////////////////////////////////////////// | |
19 template <typename T0, typename T1> | |
20 inline typename detail::enable_if_ostream<T0, T1>::type | |
21 operator<<(T0& a0, actor<T1> const& a1) | |
22 { | |
23 return compose<shift_left_eval>(phoenix::ref(a0), a1); | |
24 } | |
25 | |
26 template <typename T0, typename T1> | |
27 inline typename detail::enable_if_istream<T0, T1>::type | |
28 operator>>(T0& a0, actor<T1> const& a1) | |
29 { | |
30 return compose<shift_right_eval>(phoenix::ref(a0), a1); | |
31 } | |
32 | |
33 // resolve ambiguities with fusion. | |
34 template <typename T1> | |
35 inline typename detail::enable_if_ostream<std::ostream, T1>::type | |
36 operator<<(std::ostream& a0, actor<T1> const& a1) | |
37 { | |
38 return compose<shift_left_eval>(phoenix::ref(a0), a1); | |
39 } | |
40 | |
41 template <typename T1> | |
42 inline typename detail::enable_if_istream<std::istream, T1>::type | |
43 operator>>(std::istream& a0, actor<T1> const& a1) | |
44 { | |
45 return compose<shift_right_eval>(phoenix::ref(a0), a1); | |
46 } | |
47 | |
48 /////////////////////////////////////////////////////////////////////////////// | |
49 // | |
50 // overloads for I/O manipulators. | |
51 // | |
52 /////////////////////////////////////////////////////////////////////////////// | |
53 template <typename T0> | |
54 inline actor<typename as_composite< | |
55 shift_left_eval, actor<T0>, detail::omanip_type>::type> | |
56 operator<<(actor<T0> const& a0, detail::omanip_type a1) | |
57 { | |
58 return compose<shift_left_eval>(a0, a1); | |
59 } | |
60 | |
61 template <typename T0> | |
62 inline actor<typename as_composite< | |
63 shift_left_eval, actor<T0>, detail::iomanip_type>::type> | |
64 operator<<(actor<T0> const& a0, detail::iomanip_type a1) | |
65 { | |
66 return compose<shift_left_eval>(a0, a1); | |
67 } | |
68 | |
69 template <typename T0> | |
70 inline actor<typename as_composite< | |
71 shift_right_eval, actor<T0>, detail::imanip_type>::type> | |
72 operator>>(actor<T0> const& a0, detail::imanip_type a1) | |
73 { | |
74 return compose<shift_right_eval>(a0, a1); | |
75 } | |
76 | |
77 template <typename T0> | |
78 inline actor<typename as_composite< | |
79 shift_right_eval, actor<T0>, detail::iomanip_type>::type> | |
80 operator>>(actor<T0> const& a0, detail::iomanip_type a1) | |
81 { | |
82 return compose<shift_right_eval>(a0, a1); | |
83 } | |
84 }} | |
85 | |
86 #endif |