111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1999 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Silicon Graphics Computer Systems, Inc. 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1999 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Boris Fomitchev 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * This material is provided "as is", with absolutely no warranty expressed 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * or implied. Any use is at your own risk. 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Permission to use or copy this software for any purpose is hereby granted 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * without fee, provided the above notices are retained on all copies. 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Permission to modify the code and to distribute modified code is granted, 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * provided the above notices are retained, and a notice that the code was 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * modified is included with the above copyright notice. 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// This header defines classes basic_stringbuf, basic_istringstream, 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// basic_ostringstream, and basic_stringstream. These classes 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// represent streamsbufs and streams whose sources or destinations are 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// C++ strings. 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_INTERNAL_SSTREAM 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_INTERNAL_SSTREAM 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_INTERNAL_STREAMBUF 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# include <stl/_streambuf.h> 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_INTERNAL_ISTREAM 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# include <stl/_istream.h> // Includes <ostream>, <ios>, <iosfwd> 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_INTERNAL_STRING_H 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# include <stl/_string.h> 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_BEGIN_NAMESPACE 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//---------------------------------------------------------------------- 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// This version of basic_stringbuf relies on the internal details of 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// basic_string. It relies on the fact that, in this implementation, 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// basic_string's iterators are pointers. It also assumes (as allowed 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// by the standard) that _CharT is a POD type. 4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// We have a very small buffer for the put area, just so that we don't 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// have to use append() for every sputc. Conceptually, the buffer 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// immediately follows the end of the underlying string. We use this 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// buffer when appending to write-only streambufs, but we don't use it 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// for read-write streambufs. 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, class _Traits, class _Alloc> 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_stringbuf : public basic_streambuf<_CharT, _Traits> { 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic: // Typedefs. 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef _CharT char_type; 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::int_type int_type; 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::pos_type pos_type; 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::off_type off_type; 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef _Traits traits_type; 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_streambuf<_CharT, _Traits> _Base; 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Self; 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_string<_CharT, _Traits, _Alloc> _String; 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic: // Constructors, destructor. 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert explicit basic_stringbuf(ios_base::openmode __mode 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert = ios_base::in | ios_base::out); 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert explicit basic_stringbuf(const _String& __s, ios_base::openmode __mode 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert = ios_base::in | ios_base::out); 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert virtual ~basic_stringbuf(); 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic: // Get or set the string. 7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _String str() const { return _M_str; } 7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void str(const _String& __s); 7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprotected: // Overridden virtual member functions. 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert virtual int_type underflow(); 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert virtual int_type uflow(); 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert virtual int_type pbackfail(int_type __c); 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert virtual int_type overflow(int_type __c); 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int_type pbackfail() {return pbackfail(_Traits::eof());} 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int_type overflow() {return overflow(_Traits::eof());} 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert virtual streamsize xsputn(const char_type* __s, streamsize __n); 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert virtual streamsize _M_xsputnc(char_type __c, streamsize __n); 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert virtual _Base* setbuf(_CharT* __buf, streamsize __n); 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert virtual pos_type seekoff(off_type __off, ios_base::seekdir __dir, 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ios_base::openmode __mode 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert = ios_base::in | ios_base::out); 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert = ios_base::in | ios_base::out); 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprivate: // Helper functions. 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void _M_set_ptrs(); 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert static _CharT* _S_start(const _String& __str) { return __CONST_CAST(_CharT*, __str.data()); } 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert static _CharT* _S_finish(const _String& __str) { return __CONST_CAST(_CharT*, __str.data()) + __str.size(); } 10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprivate: 10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ios_base::openmode _M_mode; 10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _String _M_str; 10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_USE_TEMPLATE_EXPORT) 10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_EXPORT_TEMPLATE_CLASS basic_stringbuf<char, char_traits<char>, allocator<char> >; 10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# if !defined (_STLP_NO_WCHAR_T) 10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_EXPORT_TEMPLATE_CLASS basic_stringbuf<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >; 11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _STLP_USE_TEMPLATE_EXPORT */ 11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//---------------------------------------------------------------------- 11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Class basic_istringstream, an input stream that uses a stringbuf. 11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 11611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, class _Traits, class _Alloc> 11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_istringstream : public basic_istream<_CharT, _Traits> { 11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic: // Typedefs 11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::char_type char_type; 12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::int_type int_type; 12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::pos_type pos_type; 12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::off_type off_type; 12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef _Traits traits_type; 12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_ios<_CharT, _Traits> _Basic_ios; 12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_istream<_CharT, _Traits> _Base; 12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_string<_CharT, _Traits, _Alloc> _String; 12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Buf; 12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic: // Constructors, destructor. 13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_istringstream(ios_base::openmode __mode = ios_base::in); 13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_istringstream(const _String& __str, 13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ios_base::openmode __mode = ios_base::in); 13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ~basic_istringstream(); 13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic: // Member functions 13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const 13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert { return __CONST_CAST(_Buf*,&_M_buf); } 14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _String str() const { return _M_buf.str(); } 14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void str(const _String& __s) { _M_buf.str(__s); } 14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprivate: 14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf; 14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) 14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_istringstream<_CharT, _Traits> _Self; 14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert //explicitely defined as private to avoid warnings: 15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_istringstream(_Self const&); 15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _Self& operator = (_Self const&); 15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//---------------------------------------------------------------------- 15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Class basic_ostringstream, an output stream that uses a stringbuf. 15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, class _Traits, class _Alloc> 16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_ostringstream : public basic_ostream<_CharT, _Traits> { 16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic: // Typedefs 16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::char_type char_type; 16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::int_type int_type; 16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::pos_type pos_type; 16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::off_type off_type; 16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef _Traits traits_type; 16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_ios<_CharT, _Traits> _Basic_ios; 16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_ostream<_CharT, _Traits> _Base; 17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_string<_CharT, _Traits, _Alloc> _String; 17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Buf; 17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic: // Constructors, destructor. 17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_ostringstream(ios_base::openmode __mode = ios_base::out); 17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_ostringstream(const _String& __str, 17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ios_base::openmode __mode = ios_base::out); 17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ~basic_ostringstream(); 17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic: // Member functions. 18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const 18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert { return __CONST_CAST(_Buf*,&_M_buf); } 18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _String str() const { return _M_buf.str(); } 18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void str(const _String& __s) { _M_buf.str(__s); } // dwa 02/07/00 - BUG STOMPER DAVE 18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprivate: 18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf; 19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) 19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_ostringstream<_CharT, _Traits> _Self; 19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert //explicitely defined as private to avoid warnings: 19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_ostringstream(_Self const&); 19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _Self& operator = (_Self const&); 19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//---------------------------------------------------------------------- 20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Class basic_stringstream, a bidirectional stream that uses a stringbuf. 20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 20311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _CharT, class _Traits, class _Alloc> 20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass basic_stringstream : public basic_iostream<_CharT, _Traits> { 20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic: // Typedefs 20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::char_type char_type; 20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::int_type int_type; 20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::pos_type pos_type; 20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef typename _Traits::off_type off_type; 21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef _Traits traits_type; 21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_ios<_CharT, _Traits> _Basic_ios; 21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_iostream<_CharT, _Traits> _Base; 21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_string<_CharT, _Traits, _Alloc> _String; 21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Buf; 21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef ios_base::openmode openmode; 21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic: // Constructors, destructor. 22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_stringstream(openmode __mod = ios_base::in | ios_base::out); 22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_stringstream(const _String& __str, 22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert openmode __mod = ios_base::in | ios_base::out); 22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ~basic_stringstream(); 22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic: // Member functions. 22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const 22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert { return __CONST_CAST(_Buf*,&_M_buf); } 22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _String str() const { return _M_buf.str(); } 23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void str(const _String& __s) { _M_buf.str(__s); } 23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprivate: 23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf; 23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) 23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert typedef basic_stringstream<_CharT, _Traits> _Self; 23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert //explicitely defined as private to avoid warnings: 23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert basic_stringstream(_Self const&); 24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert _Self& operator = (_Self const&); 24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_USE_TEMPLATE_EXPORT) 24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_EXPORT_TEMPLATE_CLASS basic_istringstream<char, char_traits<char>, allocator<char> >; 24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_EXPORT_TEMPLATE_CLASS basic_ostringstream<char, char_traits<char>, allocator<char> >; 24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_EXPORT_TEMPLATE_CLASS basic_stringstream<char, char_traits<char>, allocator<char> >; 24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# if !defined (_STLP_NO_WCHAR_T) 25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_EXPORT_TEMPLATE_CLASS basic_istringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >; 25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_EXPORT_TEMPLATE_CLASS basic_ostringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >; 25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_EXPORT_TEMPLATE_CLASS basic_stringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >; 25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif 25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _STLP_USE_TEMPLATE_EXPORT */ 25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_END_NAMESPACE 25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) 25911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# include <stl/_sstream.c> 26011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 26211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _STLP_INTERNAL_SSTREAM */ 26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 26411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Local Variables: 26511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// mode:C++ 26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// End: 267