#ifndef TINYSTL_SSTREAM
#define TINYSTL_SSTREAM

#include <iostream>
#include <string>

namespace std {
  
  class basic_stringbuf : public basic_streambuf {
  }

  class basic_istringstream : public basic_istream {
  public:
    explicit basic_istringstream (openmode m = out|in);
    explicit basic_istringstream (const basic_string& s, openmode m = out);
    
    basic_string& str () const;
    void str (const basic_string& s);

    basic_string* rdbuf () const;

  };

  class basic_ostringstream : public basic_ostream {
  public:
    explicit basic_ostringstream (openmode m = out|in);
    explicit basic_ostringstream (const basic_string& s, openmode m = out);
    
    basic_string& str () const;
    void str (const basic_string& s);

    basic_string* rdbuf () const;

  };
  
  class basic_stringstream : public basic_iostream {
  public:
    explicit basic_stringstream (openmode m = out|in);
    explicit basic_stringstream (const basic_string& s, openmode m = out);
    
    basic_string& str () const;
    void str (const basic_string& s);

    basic_string* rdbuf () const;

  };
  
  typedef basic_istringstream istringstream;
  typedef basic_ostringstream ostringstream;
  typedef basic_stringstream stringstream; 
  
}

#endif
