177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner/*
277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *
377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1994
477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Hewlett-Packard Company
577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *
677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1996-1998
777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Silicon Graphics Computer Systems, Inc.
877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *
977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1997
1077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Moscow Center for SPARC Technology
1177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *
1277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1999
1377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Boris Fomitchev
1477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *
1577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * This material is provided "as is", with absolutely no warranty expressed
1677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * or implied. Any use is at your own risk.
1777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *
1877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to use or copy this software for any purpose is hereby granted
1977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * without fee, provided the above notices are retained on all copies.
2077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to modify the code and to distribute modified code is granted,
2177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * provided the above notices are retained, and a notice that the code was
2277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * modified is included with the above copyright notice.
2377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *
2477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner */
2577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
2677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner/* NOTE: This is an internal header file, included by other STL headers.
2777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *   You should not attempt to use it directly.
2877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner */
2977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
3077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_INTERNAL_STREAM_ITERATOR_H) && !defined (_STLP_USE_NO_IOSTREAMS)
3177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#define _STLP_INTERNAL_STREAM_ITERATOR_H
3277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
3377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
3477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  include <stl/_iterator_base.h>
3577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
3677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
3777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// streambuf_iterators predeclarations must appear first
3877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_IOSFWD
3977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  include <stl/_iosfwd.h>
4077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
4177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
4277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_ALGOBASE_H
4377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  include <stl/_algobase.h>
4477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
4577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
4677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
4777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  include <stl/_ostreambuf_iterator.h>
4877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
4977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
5077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
5177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  include <stl/_istreambuf_iterator.h>
5277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
5377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
5477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_ISTREAM
5577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  include <stl/_istream.h>
5677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
5777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
5877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// istream_iterator and ostream_iterator look very different if we're
5977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// using new, templatized iostreams than if we're using the old cfront
6077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// version.
6177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
6277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_BEGIN_NAMESPACE
6377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
6477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
6577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  define __ISI_TMPL_HEADER_ARGUMENTS class _Tp, class _CharT, class _Traits, class _Dist
6677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  define __ISI_TMPL_ARGUMENTS _Tp, _CharT, _Traits, _Dist
6777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp,
6877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner          class _CharT = char, class _Traits = char_traits<_CharT>,
6977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner          class _Dist = ptrdiff_t>
7077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass istream_iterator : public iterator<input_iterator_tag, _Tp , _Dist,
7177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner                                         const _Tp*, const _Tp& > {
7277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#else
7377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && !defined (_STLP_DEFAULT_TYPE_PARAM)
7477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#    define __ISI_TMPL_HEADER_ARGUMENTS class _Tp
7577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#    define __ISI_TMPL_ARGUMENTS        _Tp
7677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp>
7777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass istream_iterator : public iterator<input_iterator_tag, _Tp , ptrdiff_t,
7877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner                                         const _Tp*, const _Tp& > {
7977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  else
8077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#    define __ISI_TMPL_HEADER_ARGUMENTS class _Tp, class _Dist
8177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#    define __ISI_TMPL_ARGUMENTS        _Tp, _Dist
8277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _Tp, _STLP_DFL_TYPE_PARAM(_Dist, ptrdiff_t)>
8377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass istream_iterator : public iterator<input_iterator_tag, _Tp, _Dist ,
8477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner                                         const _Tp*, const _Tp& > {
8577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  endif /* _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS */
8677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_LIMITED_DEFAULT_TEMPLATES */
8777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
8877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
8977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef char _CharT;
9077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef char_traits<char> _Traits;
9177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && !defined (_STLP_DEFAULT_TYPE_PARAM)
9277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef ptrdiff_t _Dist;
9377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  endif
9477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
9577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
9677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef istream_iterator< __ISI_TMPL_ARGUMENTS > _Self;
9777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic:
9877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef _CharT                         char_type;
9977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef _Traits                        traits_type;
10077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef basic_istream<_CharT, _Traits> istream_type;
10177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
10277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef input_iterator_tag             iterator_category;
10377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef _Tp                            value_type;
10477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef _Dist                          difference_type;
10577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef const _Tp*                     pointer;
10677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef const _Tp&                     reference;
10777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
10877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  istream_iterator() : _M_stream(0), _M_ok(false), _M_read_done(true) {}
10977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  istream_iterator(istream_type& __s) : _M_stream(&__s), _M_ok(false), _M_read_done(false) {}
11077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
11177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  reference operator*() const {
11277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    if (!_M_read_done) {
11377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      _M_read();
11477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    }
11577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    return _M_value;
11677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
11777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
11877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  _STLP_DEFINE_ARROW_OPERATOR
11977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
12077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  _Self& operator++() {
12177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    _M_read();
12277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    return *this;
12377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
12477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  _Self operator++(int)  {
12577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    _Self __tmp = *this;
12677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    _M_read();
12777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    return __tmp;
12877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
12977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
13077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  bool _M_equal(const _Self& __x) const {
13177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    if (!_M_read_done) {
13277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      _M_read();
13377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    }
13477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    if (!__x._M_read_done) {
13577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      __x._M_read();
13677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    }
13777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream);
13877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
13977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
14077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprivate:
14177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  istream_type* _M_stream;
14277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  mutable _Tp _M_value;
14377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  mutable bool _M_ok;
14477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  mutable bool _M_read_done;
14577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
14677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  void _M_read() const {
14777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    _STLP_MUTABLE(_Self, _M_ok) = ((_M_stream != 0) && !_M_stream->fail());
14877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    if (_M_ok) {
14977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      *_M_stream >> _STLP_MUTABLE(_Self, _M_value);
15077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner      _STLP_MUTABLE(_Self, _M_ok) = !_M_stream->fail();
15177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    }
15277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    _STLP_MUTABLE(_Self, _M_read_done) = true;
15377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
15477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner};
15577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
15677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if !defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
15777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _TpP,
15877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner          class _CharT = char, class _Traits = char_traits<_CharT> >
15977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#else
16077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _TpP>
16177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
16277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass ostream_iterator: public iterator<output_iterator_tag, void, void, void, void> {
16377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
16477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef char _CharT;
16577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef char_traits<char> _Traits;
16677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef ostream_iterator<_TpP> _Self;
16777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#else
16877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef ostream_iterator<_TpP, _CharT, _Traits> _Self;
16977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
17077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic:
17177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef _CharT                         char_type;
17277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef _Traits                        traits_type;
17377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef basic_ostream<_CharT, _Traits> ostream_type;
17477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
17577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  typedef output_iterator_tag            iterator_category;
17677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
17777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {}
17877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  ostream_iterator(ostream_type& __s, const _CharT* __c)
17977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    : _M_stream(&__s), _M_string(__c)  {}
18077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  _Self& operator=(const _TpP& __val) {
18177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    *_M_stream << __val;
18277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    if (_M_string) *_M_stream << _M_string;
18377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner    return *this;
18477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  }
18577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  _Self& operator*() { return *this; }
18677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  _Self& operator++() { return *this; }
18777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  _Self& operator++(int) { return *this; }
18877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprivate:
18977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  ostream_type* _M_stream;
19077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner  const _CharT* _M_string;
19177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner};
19277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
19377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES)
19477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
19577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _TpP>
19677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline output_iterator_tag _STLP_CALL
19777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneriterator_category(const ostream_iterator<_TpP>&) { return output_iterator_tag(); }
19877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  else
19977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _TpP, class _CharT, class _Traits>
20077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline output_iterator_tag _STLP_CALL
20177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneriterator_category(const ostream_iterator<_TpP, _CharT, _Traits>&) { return output_iterator_tag(); }
20277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  endif
20377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
20477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
20577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_END_NAMESPACE
20677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
20777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// form-independent definiotion of stream iterators
20877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_BEGIN_NAMESPACE
20977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
21077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate < __ISI_TMPL_HEADER_ARGUMENTS >
21177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline bool _STLP_CALL
21277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator==(const istream_iterator< __ISI_TMPL_ARGUMENTS >& __x,
21377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner           const istream_iterator< __ISI_TMPL_ARGUMENTS >& __y)
21477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return __x._M_equal(__y); }
21577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
21677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_USE_SEPARATE_RELOPS_NAMESPACE)
21777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate < __ISI_TMPL_HEADER_ARGUMENTS >
21877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline bool _STLP_CALL
21977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneroperator!=(const istream_iterator< __ISI_TMPL_ARGUMENTS >& __x,
22077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner           const istream_iterator< __ISI_TMPL_ARGUMENTS >& __y)
22177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return !__x._M_equal(__y); }
22277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
22377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
22477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES)
22577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate < __ISI_TMPL_HEADER_ARGUMENTS >
22677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline input_iterator_tag _STLP_CALL
22777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turneriterator_category(const istream_iterator< __ISI_TMPL_ARGUMENTS >&)
22877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner{ return input_iterator_tag(); }
22977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate < __ISI_TMPL_HEADER_ARGUMENTS >
23077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _Tp* _STLP_CALL
23177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnervalue_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (_Tp*) 0; }
23277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
23377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && !defined (_STLP_DEFAULT_TYPE_PARAM)
23477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate < __ISI_TMPL_HEADER_ARGUMENTS >
23577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline ptrdiff_t* _STLP_CALL
23677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerdistance_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (ptrdiff_t*)0; }
23777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  else
23877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate < __ISI_TMPL_HEADER_ARGUMENTS >
23977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerinline _Dist* _STLP_CALL
24077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerdistance_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (_Dist*)0; }
24177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#  endif /* _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS */
24277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif
24377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
24477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_END_NAMESPACE
24577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
24677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#undef __ISI_TMPL_HEADER_ARGUMENTS
24777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#undef __ISI_TMPL_ARGUMENTS
24877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
24977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_INTERNAL_STREAM_ITERATOR_H */
25077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner
25177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Local Variables:
25277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// mode:C++
25377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// End:
254