]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/phoenix/include/boost/phoenix/operator/io.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / phoenix / include / boost / phoenix / operator / io.hpp
CommitLineData
7c673cae
FG
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_OPERATOR_IO_HPP
9#define BOOST_PHOENIX_OPERATOR_IO_HPP
10
11#include <iosfwd>
12
13#include <boost/phoenix/core/limits.hpp>
14#include <boost/fusion/sequence/intrinsic/at.hpp>
15#include <boost/phoenix/core/domain.hpp>
16#include <boost/proto/make_expr.hpp>
17#include <boost/proto/tags.hpp>
18#include <boost/proto/operators.hpp>
19
20namespace boost { namespace phoenix
21{
22 namespace detail
23 {
24 typedef std::ios_base& (*iomanip_type)(std::ios_base&);
25 typedef std::istream& (*imanip_type)(std::istream&);
26 typedef std::ostream& (*omanip_type)(std::ostream&);
27 }
28
29 /////////////////////////////////////////////////////////////////////////////
30 //
31 // overloads for I/O manipulators.
32 //
33 /////////////////////////////////////////////////////////////////////////////
34 template <typename Expr>
35 inline
36 typename proto::result_of::make_expr<
37 proto::tag::shift_left
38 , phoenix_domain
39 , actor<Expr>
40 , detail::iomanip_type
41 >::type const
42 operator<<(actor<Expr> const& a0, detail::iomanip_type a1)
43 {
44 return proto::make_expr<
45 proto::tag::shift_left, phoenix_domain>(a0, a1);
46 }
47
48 template <typename Expr>
49 inline
50 typename proto::result_of::make_expr<
51 proto::tag::shift_left
52 , phoenix_domain
53 , actor<Expr>
54 , detail::omanip_type
55 >::type const
56 operator<<(actor<Expr> const& a0, detail::omanip_type a1)
57 {
58 return proto::make_expr<
59 proto::tag::shift_left, phoenix_domain>(a0, a1);
60 }
61
62 template <typename Expr>
63 inline
64 typename proto::result_of::make_expr<
65 proto::tag::shift_right
66 , phoenix_domain
67 , actor<Expr>
68 , detail::iomanip_type
69 >::type const
70 operator>>(actor<Expr> const& a0, detail::iomanip_type a1)
71 {
72 return proto::make_expr<
73 proto::tag::shift_right, phoenix_domain>(a0, a1);
74 }
75
76 template <typename Expr>
77 inline
78 typename proto::result_of::make_expr<
79 proto::tag::shift_right
80 , phoenix_domain
81 , actor<Expr>
82 , detail::imanip_type
83 >::type const
84 operator>>(actor<Expr> const& a0, detail::imanip_type a1)
85 {
86 return proto::make_expr<
87 proto::tag::shift_right, phoenix_domain>(a0, a1);
88 }
89
90 using proto::exprns_::operator<<;
91 using proto::exprns_::operator>>;
92}}
93
94#endif