/* For wchar support, you need to include the wchar.i file before this file, ie: %include <wchar.i> %include <std_sstream.i> or equivalently, just include %include <std_wsstream.i> */ %include <std_alloc.i> %include <std_basic_string.i> %include <std_string.i> %include <std_ios.i> #if defined(SWIG_WCHAR) %include <std_wstring.i> #endif %include <std_streambuf.i> %include <std_iostream.i> %{ #include <sstream> %} namespace std { template<typename _CharT, typename _Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT> > class basic_stringbuf : public basic_streambuf<_CharT, _Traits> { public: // Types: typedef _CharT char_type; typedef _Traits traits_type; // 251. basic_stringbuf missing allocator_type typedef _Alloc allocator_type; typedef typename traits_type::int_type int_type; typedef typename traits_type::pos_type pos_type; typedef typename traits_type::off_type off_type; public: // Constructors: explicit basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out); explicit basic_stringbuf(const basic_string<_CharT, _Traits, _Alloc>& __str, ios_base::openmode __mode = ios_base::in | ios_base::out); // Get and set: basic_string<_CharT, _Traits, _Alloc> str() const; void str(const basic_string<_CharT, _Traits, _Alloc>& __s); }; // 27.7.2 Template class basic_istringstream template<typename _CharT, typename _Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT> > class basic_istringstream : public basic_istream<_CharT, _Traits> { public: // Types: typedef _CharT char_type; typedef _Traits traits_type; // 251. basic_stringbuf missing allocator_type typedef _Alloc allocator_type; typedef typename traits_type::int_type int_type; typedef typename traits_type::pos_type pos_type; typedef typename traits_type::off_type off_type; public: // Constructors: explicit basic_istringstream(ios_base::openmode __mode = ios_base::in); explicit basic_istringstream(const basic_string<_CharT, _Traits, _Alloc>& __str, ios_base::openmode __mode = ios_base::in); ~basic_istringstream(); // Members: basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const; basic_string<_CharT, _Traits, _Alloc> str() const; void str(const basic_string<_CharT, _Traits, _Alloc>& __s); }; // 27.7.3 Template class basic_ostringstream template<typename _CharT, typename _Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT> > class basic_ostringstream : public basic_ostream<_CharT, _Traits> { public: // Types: typedef _CharT char_type; typedef _Traits traits_type; // 251. basic_stringbuf missing allocator_type typedef _Alloc allocator_type; typedef typename traits_type::int_type int_type; typedef typename traits_type::pos_type pos_type; typedef typename traits_type::off_type off_type; public: // Constructors/destructor: explicit basic_ostringstream(ios_base::openmode __mode = ios_base::out); explicit basic_ostringstream(const basic_string<_CharT, _Traits, _Alloc>& __str, ios_base::openmode __mode = ios_base::out); ~basic_ostringstream(); // Members: basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const; basic_string<_CharT, _Traits, _Alloc> str() const; #if 0 void str(const basic_string<_CharT, _Traits, _Alloc>& __s); #endif }; // 27.7.4 Template class basic_stringstream template<typename _CharT, typename _Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT> > class basic_stringstream : public basic_iostream<_CharT, _Traits> { public: // Types: typedef _CharT char_type; typedef _Traits traits_type; // 251. basic_stringbuf missing allocator_type typedef _Alloc allocator_type; typedef typename traits_type::int_type int_type; typedef typename traits_type::pos_type pos_type; typedef typename traits_type::off_type off_type; public: // Constructors/destructors explicit basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in); explicit basic_stringstream(const basic_string<_CharT, _Traits, _Alloc>& __str, ios_base::openmode __m = ios_base::out | ios_base::in); ~basic_stringstream(); // Members: basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const; basic_string<_CharT, _Traits, _Alloc> str() const; void str(const basic_string<_CharT, _Traits, _Alloc>& __s); }; } // namespace std namespace std { %template(istringstream) basic_istringstream<char>; %template(ostringstream) basic_ostringstream<char>; %template(stringstream) basic_stringstream<char>; #if defined(SWIG_WCHAR) %template(wistringstream) basic_istringstream<wchar_t>; %template(wostringstream) basic_ostringstream<wchar_t>; %template(wstringstream) basic_stringstream<wchar_t>; #endif }