Chris@16: /*============================================================================= Chris@16: Copyright (c) 2001-2007 Joel de Guzman Chris@16: Chris@16: Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: ==============================================================================*/ Chris@16: #ifndef PHOENIX_OPERATOR_IO_HPP Chris@16: #define PHOENIX_OPERATOR_IO_HPP Chris@16: Chris@16: #include Chris@16: Chris@16: namespace boost { namespace phoenix Chris@16: { Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // Chris@16: // overloads for std::basic_ostream and std::basic_istream Chris@16: // Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: template Chris@16: inline typename detail::enable_if_ostream::type Chris@16: operator<<(T0& a0, actor const& a1) Chris@16: { Chris@16: return compose(phoenix::ref(a0), a1); Chris@16: } Chris@16: Chris@16: template Chris@16: inline typename detail::enable_if_istream::type Chris@16: operator>>(T0& a0, actor const& a1) Chris@16: { Chris@16: return compose(phoenix::ref(a0), a1); Chris@16: } Chris@16: Chris@16: // resolve ambiguities with fusion. Chris@16: template Chris@16: inline typename detail::enable_if_ostream::type Chris@16: operator<<(std::ostream& a0, actor const& a1) Chris@16: { Chris@16: return compose(phoenix::ref(a0), a1); Chris@16: } Chris@16: Chris@16: template Chris@16: inline typename detail::enable_if_istream::type Chris@16: operator>>(std::istream& a0, actor const& a1) Chris@16: { Chris@16: return compose(phoenix::ref(a0), a1); Chris@16: } Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // Chris@16: // overloads for I/O manipulators. Chris@16: // Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: template Chris@16: inline actor, detail::omanip_type>::type> Chris@16: operator<<(actor const& a0, detail::omanip_type a1) Chris@16: { Chris@16: return compose(a0, a1); Chris@16: } Chris@16: Chris@16: template Chris@16: inline actor, detail::iomanip_type>::type> Chris@16: operator<<(actor const& a0, detail::iomanip_type a1) Chris@16: { Chris@16: return compose(a0, a1); Chris@16: } Chris@16: Chris@16: template Chris@16: inline actor, detail::imanip_type>::type> Chris@16: operator>>(actor const& a0, detail::imanip_type a1) Chris@16: { Chris@16: return compose(a0, a1); Chris@16: } Chris@16: Chris@16: template Chris@16: inline actor, detail::iomanip_type>::type> Chris@16: operator>>(actor const& a0, detail::iomanip_type a1) Chris@16: { Chris@16: return compose(a0, a1); Chris@16: } Chris@16: }} Chris@16: Chris@16: #endif