diff options
Diffstat (limited to '3rdParty/Boost/src/boost/phoenix/operator/io.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/phoenix/operator/io.hpp | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/phoenix/operator/io.hpp b/3rdParty/Boost/src/boost/phoenix/operator/io.hpp new file mode 100644 index 0000000..d93500c --- /dev/null +++ b/3rdParty/Boost/src/boost/phoenix/operator/io.hpp @@ -0,0 +1,94 @@ +/*============================================================================== + Copyright (c) 2001-2010 Joel de Guzman + Copyright (c) 2010 Thomas Heller + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#ifndef BOOST_PHOENIX_OPERATOR_IO_HPP +#define BOOST_PHOENIX_OPERATOR_IO_HPP + +#include <iosfwd> + +#include <boost/phoenix/core/limits.hpp> +#include <boost/fusion/sequence/intrinsic/at.hpp> +#include <boost/phoenix/core/domain.hpp> +#include <boost/proto/make_expr.hpp> +#include <boost/proto/tags.hpp> +#include <boost/proto/operators.hpp> + +namespace boost { namespace phoenix +{ + namespace detail + { + typedef std::ios_base& (*iomanip_type)(std::ios_base&); + typedef std::istream& (*imanip_type)(std::istream&); + typedef std::ostream& (*omanip_type)(std::ostream&); + } + + ///////////////////////////////////////////////////////////////////////////// + // + // overloads for I/O manipulators. + // + ///////////////////////////////////////////////////////////////////////////// + template <typename Expr> + inline + typename proto::result_of::make_expr< + proto::tag::shift_left + , phoenix_domain + , actor<Expr> + , detail::iomanip_type + >::type const + operator<<(actor<Expr> const& a0, detail::iomanip_type a1) + { + return proto::make_expr< + proto::tag::shift_left, phoenix_domain>(a0, a1); + } + + template <typename Expr> + inline + typename proto::result_of::make_expr< + proto::tag::shift_left + , phoenix_domain + , actor<Expr> + , detail::omanip_type + >::type const + operator<<(actor<Expr> const& a0, detail::omanip_type a1) + { + return proto::make_expr< + proto::tag::shift_left, phoenix_domain>(a0, a1); + } + + template <typename Expr> + inline + typename proto::result_of::make_expr< + proto::tag::shift_right + , phoenix_domain + , actor<Expr> + , detail::iomanip_type + >::type const + operator>>(actor<Expr> const& a0, detail::iomanip_type a1) + { + return proto::make_expr< + proto::tag::shift_right, phoenix_domain>(a0, a1); + } + + template <typename Expr> + inline + typename proto::result_of::make_expr< + proto::tag::shift_right + , phoenix_domain + , actor<Expr> + , detail::imanip_type + >::type const + operator>>(actor<Expr> const& a0, detail::imanip_type a1) + { + return proto::make_expr< + proto::tag::shift_right, phoenix_domain>(a0, a1); + } + + using proto::exprns_::operator<<; + using proto::exprns_::operator>>; +}} + +#endif |