19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc. 49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev 79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed 99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk. 109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted 129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies. 139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted, 149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was 159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice. 169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// WARNING: This is an internal header file, included by other C++ 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// standard library headers. You should not attempt to use this header 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// file directly. 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_STREAMBUF 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_streambuf.h> 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_PRIV_NAMESPACE 339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _CharT, class _Traits> 359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockextern basic_streambuf<_CharT, _Traits>* _STLP_CALL __get_ostreambuf(basic_ostream<_CharT, _Traits>&); 369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_MOVE_TO_STD_NAMESPACE 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// The default template argument is declared in iosfwd 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits> 419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass ostreambuf_iterator : 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public iterator<output_iterator_tag, void, void, void, void> { 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _CharT char_type; 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Traits traits_type; 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::int_type int_type; 479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_streambuf<_CharT, _Traits> streambuf_type; 489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_ostream<_CharT, _Traits> ostream_type; 499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef output_iterator_tag iterator_category; 519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void value_type; 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void difference_type; 539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void pointer; 549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void reference; 559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ostreambuf_iterator(streambuf_type* __buf) _STLP_NOTHROW : _M_buf(__buf), _M_ok(__buf!=0) {} 589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // ostreambuf_iterator(ostream_type& __o) _STLP_NOTHROW : _M_buf(__get_ostreambuf(__o)), _M_ok(_M_buf != 0) {} 599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block inline ostreambuf_iterator(ostream_type& __o) _STLP_NOTHROW; 609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ostreambuf_iterator<_CharT, _Traits>& operator=(char_type __c) { 629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_ok = _M_ok && !traits_type::eq_int_type(_M_buf->sputc(__c), 639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block traits_type::eof()); 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ostreambuf_iterator<_CharT, _Traits>& operator*() { return *this; } 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ostreambuf_iterator<_CharT, _Traits>& operator++() { return *this; } 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ostreambuf_iterator<_CharT, _Traits>& operator++(int) { return *this; } 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool failed() const { return !_M_ok; } 729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block streambuf_type* _M_buf; 759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool _M_ok; 769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits> 799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ostreambuf_iterator<_CharT, _Traits>::ostreambuf_iterator(basic_ostream<_CharT, _Traits>& __o) _STLP_NOTHROW 809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _M_buf(_STLP_PRIV __get_ostreambuf(__o)), _M_ok(_M_buf != 0) {} 819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_TEMPLATE_EXPORT) 839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_EXPORT_TEMPLATE_CLASS ostreambuf_iterator<char, char_traits<char> >; 849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if defined (INSTANTIATE_WIDE_STREAMS) 859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_EXPORT_TEMPLATE_CLASS ostreambuf_iterator<wchar_t, char_traits<wchar_t> >; 869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_USE_TEMPLATE_EXPORT */ 889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) 909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits> 919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline output_iterator_tag _STLP_CALL 929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockiterator_category(const ostreambuf_iterator<_CharT, _Traits>&) { return output_iterator_tag(); } 939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE 969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H */ 989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables: 1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++ 1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End: 1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 103