177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner/* 277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1999 377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Silicon Graphics Computer Systems, Inc. 477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1999 677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Boris Fomitchev 777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * This material is provided "as is", with absolutely no warranty expressed 977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * or implied. Any use is at your own risk. 1077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to use or copy this software for any purpose is hereby granted 1277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * without fee, provided the above notices are retained on all copies. 1377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to modify the code and to distribute modified code is granted, 1477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * provided the above notices are retained, and a notice that the code was 1577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * modified is included with the above copyright notice. 1677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner */ 1877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 1977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// This header defines classes basic_stringbuf, basic_istringstream, 2177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// basic_ostringstream, and basic_stringstream. These classes 2277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// represent streamsbufs and streams whose sources or destinations are 2377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// C++ strings. 2477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_SSTREAM 2677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#define _STLP_INTERNAL_SSTREAM 2777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_STREAMBUF 2977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_streambuf.h> 3077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 3177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_ISTREAM 3377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_istream.h> // Includes <ostream>, <ios>, <iosfwd> 3477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 3577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_STRING_H 3777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_string.h> 3877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 3977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 4077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_BEGIN_NAMESPACE 4177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 4277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//---------------------------------------------------------------------- 4377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// This version of basic_stringbuf relies on the internal details of 4477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// basic_string. It relies on the fact that, in this implementation, 4577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// basic_string's iterators are pointers. It also assumes (as allowed 4677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// by the standard) that _CharT is a POD type. 4777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 4877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// We have a very small buffer for the put area, just so that we don't 4977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// have to use append() for every sputc. Conceptually, the buffer 5077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// immediately follows the end of the underlying string. We use this 5177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// buffer when appending to write-only streambufs, but we don't use it 5277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// for read-write streambufs. 5377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 5477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _CharT, class _Traits, class _Alloc> 5577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass basic_stringbuf : public basic_streambuf<_CharT, _Traits> { 5677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // Typedefs. 5777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef _CharT char_type; 5877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::int_type int_type; 5977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::pos_type pos_type; 6077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::off_type off_type; 6177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef _Traits traits_type; 6277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 6377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_streambuf<_CharT, _Traits> _Base; 6477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Self; 6577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_string<_CharT, _Traits, _Alloc> _String; 6677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 6777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // Constructors, destructor. 6877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner explicit basic_stringbuf(ios_base::openmode __mode 6977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner = ios_base::in | ios_base::out); 7077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner explicit basic_stringbuf(const _String& __s, ios_base::openmode __mode 7177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner = ios_base::in | ios_base::out); 7277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual ~basic_stringbuf(); 7377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 7477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // Get or set the string. 7577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _String str() const { return _M_str; } 7677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void str(const _String& __s); 7777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 7877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprotected: // Overridden virtual member functions. 7977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual int_type underflow(); 8077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual int_type uflow(); 8177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual int_type pbackfail(int_type __c); 8277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual int_type overflow(int_type __c); 8377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner int_type pbackfail() {return pbackfail(_Traits::eof());} 8477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner int_type overflow() {return overflow(_Traits::eof());} 8577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 8677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual streamsize xsputn(const char_type* __s, streamsize __n); 8777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual streamsize _M_xsputnc(char_type __c, streamsize __n); 8877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 8977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual _Base* setbuf(_CharT* __buf, streamsize __n); 9077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual pos_type seekoff(off_type __off, ios_base::seekdir __dir, 9177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ios_base::openmode __mode 9277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner = ios_base::in | ios_base::out); 9377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode 9477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner = ios_base::in | ios_base::out); 9577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 9677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprivate: // Helper functions. 9777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void _M_set_ptrs(); 9877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static _CharT* _S_start(const _String& __str) { return __CONST_CAST(_CharT*, __str.data()); } 9977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static _CharT* _S_finish(const _String& __str) { return __CONST_CAST(_CharT*, __str.data()) + __str.size(); } 10077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 10177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprivate: 10277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ios_base::openmode _M_mode; 10377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _String _M_str; 10477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 10577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 10677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_USE_TEMPLATE_EXPORT) 10777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE_CLASS basic_stringbuf<char, char_traits<char>, allocator<char> >; 10877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if !defined (_STLP_NO_WCHAR_T) 10977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE_CLASS basic_stringbuf<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >; 11077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 11177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_USE_TEMPLATE_EXPORT */ 11277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 11377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//---------------------------------------------------------------------- 11477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Class basic_istringstream, an input stream that uses a stringbuf. 11577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 11677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _CharT, class _Traits, class _Alloc> 11777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass basic_istringstream : public basic_istream<_CharT, _Traits> { 11877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // Typedefs 11977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::char_type char_type; 12077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::int_type int_type; 12177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::pos_type pos_type; 12277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::off_type off_type; 12377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef _Traits traits_type; 12477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 12577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_ios<_CharT, _Traits> _Basic_ios; 12677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_istream<_CharT, _Traits> _Base; 12777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_string<_CharT, _Traits, _Alloc> _String; 12877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Buf; 12977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 13077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // Constructors, destructor. 13177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_istringstream(ios_base::openmode __mode = ios_base::in); 13277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_istringstream(const _String& __str, 13377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ios_base::openmode __mode = ios_base::in); 13477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ~basic_istringstream(); 13577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 13677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // Member functions 13777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 13877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const 13977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return __CONST_CAST(_Buf*,&_M_buf); } 14077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 14177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _String str() const { return _M_buf.str(); } 14277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void str(const _String& __s) { _M_buf.str(__s); } 14377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 14477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprivate: 14577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf; 14677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 14777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) 14877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_istringstream<_CharT, _Traits> _Self; 14977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner //explicitely defined as private to avoid warnings: 15077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_istringstream(_Self const&); 15177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator = (_Self const&); 15277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 15377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 15477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 15577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 15677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//---------------------------------------------------------------------- 15777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Class basic_ostringstream, an output stream that uses a stringbuf. 15877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 15977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _CharT, class _Traits, class _Alloc> 16077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass basic_ostringstream : public basic_ostream<_CharT, _Traits> { 16177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // Typedefs 16277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::char_type char_type; 16377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::int_type int_type; 16477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::pos_type pos_type; 16577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::off_type off_type; 16677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef _Traits traits_type; 16777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 16877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_ios<_CharT, _Traits> _Basic_ios; 16977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_ostream<_CharT, _Traits> _Base; 17077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_string<_CharT, _Traits, _Alloc> _String; 17177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Buf; 17277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 17377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // Constructors, destructor. 17477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_ostringstream(ios_base::openmode __mode = ios_base::out); 17577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_ostringstream(const _String& __str, 17677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ios_base::openmode __mode = ios_base::out); 17777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ~basic_ostringstream(); 17877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 17977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // Member functions. 18077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const 18277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return __CONST_CAST(_Buf*,&_M_buf); } 18377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _String str() const { return _M_buf.str(); } 18577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void str(const _String& __s) { _M_buf.str(__s); } // dwa 02/07/00 - BUG STOMPER DAVE 18677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprivate: 18977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf; 19077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 19177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) 19277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_ostringstream<_CharT, _Traits> _Self; 19377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner //explicitely defined as private to avoid warnings: 19477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_ostringstream(_Self const&); 19577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator = (_Self const&); 19677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 19777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 19877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 19977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 20077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//---------------------------------------------------------------------- 20177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Class basic_stringstream, a bidirectional stream that uses a stringbuf. 20277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 20377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class _CharT, class _Traits, class _Alloc> 20477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass basic_stringstream : public basic_iostream<_CharT, _Traits> { 20577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // Typedefs 20677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::char_type char_type; 20777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::int_type int_type; 20877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::pos_type pos_type; 20977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef typename _Traits::off_type off_type; 21077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef _Traits traits_type; 21177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 21277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_ios<_CharT, _Traits> _Basic_ios; 21377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_iostream<_CharT, _Traits> _Base; 21477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_string<_CharT, _Traits, _Alloc> _String; 21577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Buf; 21677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 21777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef ios_base::openmode openmode; 21877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 21977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // Constructors, destructor. 22077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_stringstream(openmode __mod = ios_base::in | ios_base::out); 22177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_stringstream(const _String& __str, 22277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner openmode __mod = ios_base::in | ios_base::out); 22377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ~basic_stringstream(); 22477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 22577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: // Member functions. 22677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 22777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const 22877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return __CONST_CAST(_Buf*,&_M_buf); } 22977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 23077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _String str() const { return _M_buf.str(); } 23177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void str(const _String& __s) { _M_buf.str(__s); } 23277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 23377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprivate: 23477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf; 23577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 23677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) 23777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef basic_stringstream<_CharT, _Traits> _Self; 23877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner //explicitely defined as private to avoid warnings: 23977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner basic_stringstream(_Self const&); 24077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator = (_Self const&); 24177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 24277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 24377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 24477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 24577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_USE_TEMPLATE_EXPORT) 24677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE_CLASS basic_istringstream<char, char_traits<char>, allocator<char> >; 24777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE_CLASS basic_ostringstream<char, char_traits<char>, allocator<char> >; 24877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE_CLASS basic_stringstream<char, char_traits<char>, allocator<char> >; 24977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# if !defined (_STLP_NO_WCHAR_T) 25077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE_CLASS basic_istringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >; 25177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE_CLASS basic_ostringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >; 25277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_EXPORT_TEMPLATE_CLASS basic_stringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >; 25377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 25477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_USE_TEMPLATE_EXPORT */ 25577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 25677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_END_NAMESPACE 25777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 25877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) 25977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_sstream.c> 26077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 26177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 26277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_INTERNAL_SSTREAM */ 26377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 26477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Local Variables: 26577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// mode:C++ 26677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// End: 267