annotate DEPENDENCIES/generic/include/boost/optional/optional_io.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents c530137014c0
children
rev   line source
Chris@16 1 // Copyright (C) 2005, Fernando Luis Cacciola Carballal.
Chris@16 2 //
Chris@16 3 // Use, modification, and distribution is subject to the Boost Software
Chris@16 4 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
Chris@16 5 // http://www.boost.org/LICENSE_1_0.txt)
Chris@16 6 //
Chris@16 7 // See http://www.boost.org/libs/optional for documentation.
Chris@16 8 //
Chris@16 9 // You are welcome to contact the author at:
Chris@16 10 // fernando_cacciola@hotmail.com
Chris@16 11 //
Chris@16 12 #ifndef BOOST_OPTIONAL_OPTIONAL_IO_FLC_19NOV2002_HPP
Chris@16 13 #define BOOST_OPTIONAL_OPTIONAL_IO_FLC_19NOV2002_HPP
Chris@16 14
Chris@101 15 #include <istream>
Chris@101 16 #include <ostream>
Chris@16 17
Chris@16 18 #include <boost/none.hpp>
Chris@16 19 #include "boost/optional/optional.hpp"
Chris@101 20
Chris@16 21
Chris@16 22 namespace boost
Chris@16 23 {
Chris@16 24
Chris@101 25 template<class CharType, class CharTrait>
Chris@101 26 inline
Chris@101 27 std::basic_ostream<CharType, CharTrait>&
Chris@101 28 operator<<(std::basic_ostream<CharType, CharTrait>& out, none_t const&)
Chris@101 29 {
Chris@101 30 if (out.good())
Chris@101 31 {
Chris@101 32 out << "--";
Chris@101 33 }
Chris@101 34
Chris@101 35 return out;
Chris@101 36 }
Chris@101 37
Chris@16 38 template<class CharType, class CharTrait, class T>
Chris@16 39 inline
Chris@16 40 std::basic_ostream<CharType, CharTrait>&
Chris@16 41 operator<<(std::basic_ostream<CharType, CharTrait>& out, optional<T> const& v)
Chris@16 42 {
Chris@101 43 if (out.good())
Chris@16 44 {
Chris@101 45 if (!v)
Chris@16 46 out << "--" ;
Chris@16 47 else out << ' ' << *v ;
Chris@16 48 }
Chris@16 49
Chris@16 50 return out;
Chris@16 51 }
Chris@16 52
Chris@16 53 template<class CharType, class CharTrait, class T>
Chris@16 54 inline
Chris@16 55 std::basic_istream<CharType, CharTrait>&
Chris@16 56 operator>>(std::basic_istream<CharType, CharTrait>& in, optional<T>& v)
Chris@16 57 {
Chris@16 58 if (in.good())
Chris@16 59 {
Chris@16 60 int d = in.get();
Chris@16 61 if (d == ' ')
Chris@16 62 {
Chris@16 63 T x;
Chris@16 64 in >> x;
Chris@101 65 #ifndef BOOST_OPTIONAL_DETAIL_NO_RVALUE_REFERENCES
Chris@101 66 v = boost::move(x);
Chris@101 67 #else
Chris@16 68 v = x;
Chris@101 69 #endif
Chris@16 70 }
Chris@16 71 else
Chris@16 72 {
Chris@16 73 if (d == '-')
Chris@16 74 {
Chris@16 75 d = in.get();
Chris@16 76
Chris@16 77 if (d == '-')
Chris@16 78 {
Chris@16 79 v = none;
Chris@16 80 return in;
Chris@16 81 }
Chris@16 82 }
Chris@16 83
Chris@16 84 in.setstate( std::ios::failbit );
Chris@16 85 }
Chris@16 86 }
Chris@16 87
Chris@16 88 return in;
Chris@16 89 }
Chris@16 90
Chris@16 91 } // namespace boost
Chris@16 92
Chris@16 93 #endif
Chris@16 94