Home | History | Annotate | Download | only in std
      1 /*
      2    For wchar support, you need to include the wchar.i file
      3    before this file, ie:
      4 
      5    %include <wchar.i>
      6    %include <std_sstream.i>
      7 
      8    or equivalently, just include
      9 
     10    %include <std_wsstream.i>
     11 */
     12 
     13 %include <std_alloc.i>
     14 %include <std_basic_string.i>
     15 %include <std_string.i>
     16 %include <std_ios.i>
     17 #if defined(SWIG_WCHAR)
     18 %include <std_wstring.i>
     19 #endif
     20 %include <std_streambuf.i>
     21 %include <std_iostream.i>
     22 
     23 %{
     24 #include <sstream>
     25 %}
     26 
     27 
     28 namespace std
     29 {
     30   template<typename _CharT, typename _Traits = char_traits<_CharT>,
     31 	   typename _Alloc = allocator<_CharT> >
     32     class basic_stringbuf : public basic_streambuf<_CharT, _Traits>
     33     {
     34     public:
     35       // Types:
     36       typedef _CharT 					char_type;
     37       typedef _Traits 					traits_type;
     38 // 251. basic_stringbuf missing allocator_type
     39       typedef _Alloc				       	allocator_type;
     40       typedef typename traits_type::int_type 		int_type;
     41       typedef typename traits_type::pos_type 		pos_type;
     42       typedef typename traits_type::off_type 		off_type;
     43 
     44     public:
     45       // Constructors:
     46       explicit
     47       basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out);
     48 
     49       explicit
     50       basic_stringbuf(const basic_string<_CharT, _Traits, _Alloc>& __str,
     51 		      ios_base::openmode __mode = ios_base::in | ios_base::out);
     52 
     53       // Get and set:
     54       basic_string<_CharT, _Traits, _Alloc>
     55       str() const;
     56 
     57       void
     58       str(const basic_string<_CharT, _Traits, _Alloc>& __s);
     59 
     60     };
     61 
     62 
     63   // 27.7.2  Template class basic_istringstream
     64   template<typename _CharT, typename _Traits = char_traits<_CharT>,
     65 	   typename _Alloc = allocator<_CharT> >
     66   class basic_istringstream : public basic_istream<_CharT, _Traits>
     67   {
     68     public:
     69       // Types:
     70       typedef _CharT 					char_type;
     71       typedef _Traits 					traits_type;
     72 // 251. basic_stringbuf missing allocator_type
     73       typedef _Alloc				       	allocator_type;
     74       typedef typename traits_type::int_type 		int_type;
     75       typedef typename traits_type::pos_type 		pos_type;
     76       typedef typename traits_type::off_type 		off_type;
     77 
     78 
     79     public:
     80       // Constructors:
     81       explicit
     82       basic_istringstream(ios_base::openmode __mode = ios_base::in);
     83 
     84       explicit
     85       basic_istringstream(const basic_string<_CharT, _Traits, _Alloc>& __str,
     86 			  ios_base::openmode __mode = ios_base::in);
     87 
     88       ~basic_istringstream();
     89 
     90       // Members:
     91       basic_stringbuf<_CharT, _Traits, _Alloc>*
     92       rdbuf() const;
     93 
     94       basic_string<_CharT, _Traits, _Alloc>
     95       str() const;
     96 
     97       void
     98       str(const basic_string<_CharT, _Traits, _Alloc>& __s);
     99     };
    100 
    101 
    102   // 27.7.3  Template class basic_ostringstream
    103   template<typename _CharT, typename _Traits = char_traits<_CharT>,
    104 	   typename _Alloc = allocator<_CharT> >
    105   class basic_ostringstream : public basic_ostream<_CharT, _Traits>
    106   {
    107     public:
    108       // Types:
    109       typedef _CharT 					char_type;
    110       typedef _Traits 					traits_type;
    111 // 251. basic_stringbuf missing allocator_type
    112       typedef _Alloc				       	allocator_type;
    113       typedef typename traits_type::int_type 		int_type;
    114       typedef typename traits_type::pos_type 		pos_type;
    115       typedef typename traits_type::off_type 		off_type;
    116 
    117 
    118     public:
    119      // Constructors/destructor:
    120       explicit
    121       basic_ostringstream(ios_base::openmode __mode = ios_base::out);
    122 
    123       explicit
    124       basic_ostringstream(const basic_string<_CharT, _Traits, _Alloc>& __str,
    125 			  ios_base::openmode __mode = ios_base::out);
    126 
    127       ~basic_ostringstream();
    128 
    129       // Members:
    130       basic_stringbuf<_CharT, _Traits, _Alloc>*
    131       rdbuf() const;
    132 
    133       basic_string<_CharT, _Traits, _Alloc>
    134       str() const;
    135 
    136 #if 0
    137       void
    138       str(const basic_string<_CharT, _Traits, _Alloc>& __s);
    139 #endif
    140     };
    141 
    142 
    143   // 27.7.4  Template class basic_stringstream
    144   template<typename _CharT, typename _Traits = char_traits<_CharT>,
    145 	   typename _Alloc = allocator<_CharT> >
    146   class basic_stringstream : public basic_iostream<_CharT, _Traits>
    147   {
    148     public:
    149       // Types:
    150       typedef _CharT 					char_type;
    151       typedef _Traits 					traits_type;
    152 // 251. basic_stringbuf missing allocator_type
    153       typedef _Alloc				       	allocator_type;
    154       typedef typename traits_type::int_type 		int_type;
    155       typedef typename traits_type::pos_type 		pos_type;
    156       typedef typename traits_type::off_type 		off_type;
    157 
    158     public:
    159       // Constructors/destructors
    160       explicit
    161       basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in);
    162 
    163       explicit
    164       basic_stringstream(const basic_string<_CharT, _Traits, _Alloc>& __str,
    165 			 ios_base::openmode __m = ios_base::out | ios_base::in);
    166 
    167       ~basic_stringstream();
    168 
    169       // Members:
    170       basic_stringbuf<_CharT, _Traits, _Alloc>*
    171       rdbuf() const;
    172 
    173       basic_string<_CharT, _Traits, _Alloc>
    174       str() const;
    175 
    176       void
    177       str(const basic_string<_CharT, _Traits, _Alloc>& __s);
    178     };
    179 
    180 
    181 } // namespace std
    182 
    183 
    184 namespace std {
    185   %template(istringstream) basic_istringstream<char>;
    186   %template(ostringstream) basic_ostringstream<char>;
    187   %template(stringstream)  basic_stringstream<char>;
    188 
    189 
    190 #if defined(SWIG_WCHAR)
    191   %template(wistringstream) basic_istringstream<wchar_t>;
    192   %template(wostringstream) basic_ostringstream<wchar_t>;
    193   %template(wstringstream)  basic_stringstream<wchar_t>;
    194 #endif
    195 }
    196