diff options
author | Kevin Smith <git@kismith.co.uk> | 2013-01-12 18:41:34 (GMT) |
---|---|---|
committer | Swift Review <review@swift.im> | 2013-01-13 10:36:26 (GMT) |
commit | f3bc816af1b0d61452de973963e453bf3b3f95a2 (patch) | |
tree | e895f8afa3580e6cff6f5ad2017d45bf147a17c2 /3rdParty/Boost/src/boost/phoenix/operator/io.hpp | |
parent | 188fc285c6555eadd3c9d50ab8a94adcade78d89 (diff) | |
download | swift-f3bc816af1b0d61452de973963e453bf3b3f95a2.zip swift-f3bc816af1b0d61452de973963e453bf3b3f95a2.tar.bz2 |
Adding in the spirit Boost stuff
Change-Id: I4f127ce61667243b64081b0aa309028d5077045f
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 |