~ubuntu-branches/ubuntu/precise/deal.ii/precise

« back to all changes in this revision

Viewing changes to contrib/boost/include/boost/optional/optional_io.hpp

  • Committer: Bazaar Package Importer
  • Author(s): Adam C. Powell, IV
  • Date: 2009-05-08 23:13:50 UTC
  • Revision ID: james.westby@ubuntu.com-20090508231350-rrh1ltgi0tifabwc
Tags: upstream-6.2.0
ImportĀ upstreamĀ versionĀ 6.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright (C) 2005, Fernando Luis Cacciola Carballal.
 
2
//
 
3
// Use, modification, and distribution is subject to the Boost Software
 
4
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 
5
// http://www.boost.org/LICENSE_1_0.txt)
 
6
//
 
7
// See http://www.boost.org/lib/optional for documentation.
 
8
//
 
9
// You are welcome to contact the author at:
 
10
//  fernando_cacciola@hotmail.com
 
11
//
 
12
#ifndef BOOST_OPTIONAL_OPTIONAL_IO_FLC_19NOV2002_HPP
 
13
#define BOOST_OPTIONAL_OPTIONAL_IO_FLC_19NOV2002_HPP
 
14
 
 
15
#if defined __GNUC__
 
16
#  if (__GNUC__ == 2 && __GNUC_MINOR__ <= 97) 
 
17
#    define BOOST_OPTIONAL_NO_TEMPLATED_STREAMS
 
18
#  endif
 
19
#endif // __GNUC__
 
20
 
 
21
#if defined BOOST_OPTIONAL_NO_TEMPLATED_STREAMS
 
22
#  include <iostream>
 
23
#else 
 
24
#  include <istream>
 
25
#  include <ostream>
 
26
#endif  
 
27
 
 
28
 
 
29
#include "boost/optional/optional.hpp"
 
30
#include "boost/utility/value_init.hpp"
 
31
 
 
32
namespace boost
 
33
{
 
34
 
 
35
#if defined (BOOST_NO_TEMPLATED_STREAMS)
 
36
template<class T>
 
37
inline std::ostream& operator<<(std::ostream& out, optional<T> const& v)
 
38
#else
 
39
template<class CharType, class CharTrait, class T>
 
40
inline
 
41
std::basic_ostream<CharType, CharTrait>&
 
42
operator<<(std::basic_ostream<CharType, CharTrait>& out, optional<T> const& v)
 
43
#endif
 
44
{
 
45
  if ( out.good() )
 
46
  {
 
47
    if ( !v )
 
48
         out << "--" ;
 
49
    else out << ' ' << *v ;
 
50
  }
 
51
 
 
52
  return out;
 
53
}
 
54
 
 
55
#if defined (BOOST_NO_TEMPLATED_STREAMS)
 
56
template<class T>
 
57
inline std::istream& operator>>(std::istream& in, optional<T>& v)
 
58
#else
 
59
template<class CharType, class CharTrait, class T>
 
60
inline
 
61
std::basic_istream<CharType, CharTrait>&
 
62
operator>>(std::basic_istream<CharType, CharTrait>& in, optional<T>& v)
 
63
#endif
 
64
{
 
65
  if ( in.good() )
 
66
  {
 
67
    int d = in.get();
 
68
    if ( d == ' ' )
 
69
    {
 
70
      T x ;
 
71
      in >> x;
 
72
      v = x ;
 
73
    }
 
74
    else
 
75
      v = optional<T>() ;
 
76
  }
 
77
 
 
78
  return in;
 
79
}
 
80
 
 
81
} // namespace boost
 
82
 
 
83
#endif
 
84