ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

_ostreambuf_iterator.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 1999
00003  * Silicon Graphics Computer Systems, Inc.
00004  *
00005  * Copyright (c) 1999
00006  * Boris Fomitchev
00007  *
00008  * This material is provided "as is", with absolutely no warranty expressed
00009  * or implied. Any use is at your own risk.
00010  *
00011  * Permission to use or copy this software for any purpose is hereby granted
00012  * without fee, provided the above notices are retained on all copies.
00013  * Permission to modify the code and to distribute modified code is granted,
00014  * provided the above notices are retained, and a notice that the code was
00015  * modified is included with the above copyright notice.
00016  *
00017  */
00018 // WARNING: This is an internal header file, included by other C++
00019 // standard library headers.  You should not attempt to use this header
00020 // file directly.
00021 
00022 
00023 #ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
00024 #define _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
00025 
00026 #ifndef _STLP_INTERNAL_STREAMBUF
00027 # include <stl/_streambuf.h>
00028 #endif
00029 
00030 _STLP_BEGIN_NAMESPACE
00031 
00032 _STLP_MOVE_TO_PRIV_NAMESPACE
00033 
00034 template<class _CharT, class _Traits>
00035 extern basic_streambuf<_CharT, _Traits>* _STLP_CALL __get_ostreambuf(basic_ostream<_CharT, _Traits>&);
00036 
00037 _STLP_MOVE_TO_STD_NAMESPACE
00038 
00039 // The default template argument is declared in iosfwd
00040 template <class _CharT, class _Traits>
00041 class ostreambuf_iterator :
00042   public iterator<output_iterator_tag, void, void, void, void> {
00043 public:
00044   typedef _CharT                           char_type;
00045   typedef _Traits                          traits_type;
00046   typedef typename _Traits::int_type       int_type;
00047   typedef basic_streambuf<_CharT, _Traits> streambuf_type;
00048   typedef basic_ostream<_CharT, _Traits>   ostream_type;
00049 
00050   typedef output_iterator_tag              iterator_category;
00051   typedef void                             value_type;
00052   typedef void                             difference_type;
00053   typedef void                             pointer;
00054   typedef void                             reference;
00055 
00056 public:
00057   ostreambuf_iterator(streambuf_type* __buf) _STLP_NOTHROW : _M_buf(__buf), _M_ok(__buf!=0) {}
00058   //  ostreambuf_iterator(ostream_type& __o) _STLP_NOTHROW : _M_buf(__get_ostreambuf(__o)), _M_ok(_M_buf != 0) {}
00059   inline ostreambuf_iterator(ostream_type& __o) _STLP_NOTHROW;
00060 
00061   ostreambuf_iterator<_CharT, _Traits>& operator=(char_type __c) {
00062     _M_ok = _M_ok && !traits_type::eq_int_type(_M_buf->sputc(__c),
00063                                                traits_type::eof());
00064     return *this;
00065   }
00066 
00067   ostreambuf_iterator<_CharT, _Traits>& operator*()     { return *this; }
00068   ostreambuf_iterator<_CharT, _Traits>& operator++()    { return *this; }
00069   ostreambuf_iterator<_CharT, _Traits>& operator++(int) { return *this; }
00070 
00071   bool failed() const { return !_M_ok; }
00072 
00073 private:
00074   streambuf_type* _M_buf;
00075   bool _M_ok;
00076 };
00077 
00078 template <class _CharT, class _Traits>
00079 inline ostreambuf_iterator<_CharT, _Traits>::ostreambuf_iterator(basic_ostream<_CharT, _Traits>& __o) _STLP_NOTHROW
00080   : _M_buf(_STLP_PRIV __get_ostreambuf(__o)), _M_ok(_M_buf != 0) {}
00081 
00082 #if defined (_STLP_USE_TEMPLATE_EXPORT)
00083 _STLP_EXPORT_TEMPLATE_CLASS ostreambuf_iterator<char, char_traits<char> >;
00084 #  if defined (INSTANTIATE_WIDE_STREAMS)
00085 _STLP_EXPORT_TEMPLATE_CLASS ostreambuf_iterator<wchar_t, char_traits<wchar_t> >;
00086 #  endif
00087 #endif /* _STLP_USE_TEMPLATE_EXPORT */
00088 
00089 #if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES)
00090 template <class _CharT, class _Traits>
00091 inline output_iterator_tag _STLP_CALL
00092 iterator_category(const ostreambuf_iterator<_CharT, _Traits>&) { return output_iterator_tag(); }
00093 #endif
00094 
00095 _STLP_END_NAMESPACE
00096 
00097 #endif /* _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H */
00098 
00099 // Local Variables:
00100 // mode:C++
00101 // End:
00102 

Generated on Fri May 25 2012 04:27:53 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.