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 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// This header defines classes basic_stringbuf, basic_istringstream, 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// basic_ostringstream, and basic_stringstream. These classes 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// represent streamsbufs and streams whose sources or destinations are 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// C++ strings. 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_SSTREAM 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_INTERNAL_SSTREAM 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_STREAMBUF 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_streambuf.h> 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_ISTREAM 339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_istream.h> // Includes <ostream>, <ios>, <iosfwd> 349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_STRING_H 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_string.h> 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE 419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//---------------------------------------------------------------------- 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// This version of basic_stringbuf relies on the internal details of 449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// basic_string. It relies on the fact that, in this implementation, 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// basic_string's iterators are pointers. It also assumes (as allowed 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// by the standard) that _CharT is a POD type. 479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// We have a very small buffer for the put area, just so that we don't 499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// have to use append() for every sputc. Conceptually, the buffer 509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// immediately follows the end of the underlying string. We use this 519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// buffer when appending to write-only streambufs, but we don't use it 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// for read-write streambufs. 539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits, class _Alloc> 559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass basic_stringbuf : public basic_streambuf<_CharT, _Traits> { 569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Typedefs. 579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _CharT char_type; 589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::int_type int_type; 599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::pos_type pos_type; 609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::off_type off_type; 619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Traits traits_type; 629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_streambuf<_CharT, _Traits> _Base; 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Self; 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_string<_CharT, _Traits, _Alloc> _String; 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Constructors, destructor. 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit basic_stringbuf(ios_base::openmode __mode 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block = ios_base::in | ios_base::out); 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit basic_stringbuf(const _String& __s, ios_base::openmode __mode 719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block = ios_base::in | ios_base::out); 729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual ~basic_stringbuf(); 739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Get or set the string. 75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _String str() const { return _M_str; } 769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void str(const _String& __s); 779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: // Overridden virtual member functions. 799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual int_type underflow(); 809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual int_type uflow(); 819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual int_type pbackfail(int_type __c); 829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual int_type overflow(int_type __c); 839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int_type pbackfail() {return pbackfail(_Traits::eof());} 849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block int_type overflow() {return overflow(_Traits::eof());} 859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual streamsize xsputn(const char_type* __s, streamsize __n); 879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual streamsize _M_xsputnc(char_type __c, streamsize __n); 889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual _Base* setbuf(_CharT* __buf, streamsize __n); 909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual pos_type seekoff(off_type __off, ios_base::seekdir __dir, 919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::openmode __mode 929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block = ios_base::in | ios_base::out); 939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode 949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block = ios_base::in | ios_base::out); 959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: // Helper functions. 979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void _M_set_ptrs(); 98e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott static _CharT* _S_start(const _String& __str) { return __CONST_CAST(_CharT*, __str.data()); } 99e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott static _CharT* _S_finish(const _String& __str) { return __CONST_CAST(_CharT*, __str.data()) + __str.size(); } 1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::openmode _M_mode; 103e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _String _M_str; 1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_TEMPLATE_EXPORT) 1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_EXPORT_TEMPLATE_CLASS basic_stringbuf<char, char_traits<char>, allocator<char> >; 1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if !defined (_STLP_NO_WCHAR_T) 1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_EXPORT_TEMPLATE_CLASS basic_stringbuf<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >; 1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_USE_TEMPLATE_EXPORT */ 1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//---------------------------------------------------------------------- 1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Class basic_istringstream, an input stream that uses a stringbuf. 1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits, class _Alloc> 1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass basic_istringstream : public basic_istream<_CharT, _Traits> { 1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Typedefs 1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::char_type char_type; 1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::int_type int_type; 1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::pos_type pos_type; 1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::off_type off_type; 1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Traits traits_type; 1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_ios<_CharT, _Traits> _Basic_ios; 1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_istream<_CharT, _Traits> _Base; 1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_string<_CharT, _Traits, _Alloc> _String; 1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Buf; 1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Constructors, destructor. 1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_istringstream(ios_base::openmode __mode = ios_base::in); 1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_istringstream(const _String& __str, 1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::openmode __mode = ios_base::in); 1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ~basic_istringstream(); 1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Member functions 1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const 1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return __CONST_CAST(_Buf*,&_M_buf); } 1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _String str() const { return _M_buf.str(); } 1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void str(const _String& __s) { _M_buf.str(__s); } 1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf; 1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) 1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_istringstream<_CharT, _Traits> _Self; 1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block //explicitely defined as private to avoid warnings: 1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_istringstream(_Self const&); 1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator = (_Self const&); 1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//---------------------------------------------------------------------- 1579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Class basic_ostringstream, an output stream that uses a stringbuf. 1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits, class _Alloc> 1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass basic_ostringstream : public basic_ostream<_CharT, _Traits> { 1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Typedefs 1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::char_type char_type; 1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::int_type int_type; 1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::pos_type pos_type; 1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::off_type off_type; 1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Traits traits_type; 1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_ios<_CharT, _Traits> _Basic_ios; 1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_ostream<_CharT, _Traits> _Base; 1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_string<_CharT, _Traits, _Alloc> _String; 1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Buf; 1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Constructors, destructor. 1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_ostringstream(ios_base::openmode __mode = ios_base::out); 1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_ostringstream(const _String& __str, 1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::openmode __mode = ios_base::out); 1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ~basic_ostringstream(); 1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Member functions. 1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const 1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return __CONST_CAST(_Buf*,&_M_buf); } 1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _String str() const { return _M_buf.str(); } 1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void str(const _String& __s) { _M_buf.str(__s); } // dwa 02/07/00 - BUG STOMPER DAVE 1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf; 1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) 1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_ostringstream<_CharT, _Traits> _Self; 1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block //explicitely defined as private to avoid warnings: 1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_ostringstream(_Self const&); 1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator = (_Self const&); 1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//---------------------------------------------------------------------- 2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Class basic_stringstream, a bidirectional stream that uses a stringbuf. 2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits, class _Alloc> 2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass basic_stringstream : public basic_iostream<_CharT, _Traits> { 2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Typedefs 2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::char_type char_type; 2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::int_type int_type; 2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::pos_type pos_type; 2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Traits::off_type off_type; 2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Traits traits_type; 2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_ios<_CharT, _Traits> _Basic_ios; 2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_iostream<_CharT, _Traits> _Base; 2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_string<_CharT, _Traits, _Alloc> _String; 2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Buf; 2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef ios_base::openmode openmode; 2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Constructors, destructor. 2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_stringstream(openmode __mod = ios_base::in | ios_base::out); 2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_stringstream(const _String& __str, 2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block openmode __mod = ios_base::in | ios_base::out); 2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ~basic_stringstream(); 2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: // Member functions. 2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const 2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return __CONST_CAST(_Buf*,&_M_buf); } 2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _String str() const { return _M_buf.str(); } 2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void str(const _String& __s) { _M_buf.str(__s); } 2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf; 2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) 2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef basic_stringstream<_CharT, _Traits> _Self; 2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block //explicitely defined as private to avoid warnings: 2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_stringstream(_Self const&); 2409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator = (_Self const&); 2419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_TEMPLATE_EXPORT) 2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_EXPORT_TEMPLATE_CLASS basic_istringstream<char, char_traits<char>, allocator<char> >; 2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_EXPORT_TEMPLATE_CLASS basic_ostringstream<char, char_traits<char>, allocator<char> >; 2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_EXPORT_TEMPLATE_CLASS basic_stringstream<char, char_traits<char>, allocator<char> >; 2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if !defined (_STLP_NO_WCHAR_T) 2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_EXPORT_TEMPLATE_CLASS basic_istringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >; 2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_EXPORT_TEMPLATE_CLASS basic_ostringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >; 2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_EXPORT_TEMPLATE_CLASS basic_stringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >; 2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_USE_TEMPLATE_EXPORT */ 2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE 2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) 2599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_sstream.c> 2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_INTERNAL_SSTREAM */ 2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables: 2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++ 2669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End: 267