| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | /*==============================================================================    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
 |