//
// Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
// 
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
// ===
///
/// \file sstream
///

#ifndef G_STD_SSTREAM_H
#define G_STD_SSTREAM_H

#include <strstream.h>
#include <string>

/// \namespace std
namespace std
{
	class ostringstream : public ostrstream
	{
	public:
		ostringstream() ;
		ostringstream( char * , size_t ) ;
		std::string str() const ;
	} ;
	typedef ostringstream stringstream ;
}

inline
std::ostringstream::ostringstream()
{
}

inline
std::ostringstream::ostringstream( char * p , size_t n ) :
	ostrstream(p,static_cast<int>(n))
{
}

inline
std::string std::ostringstream::str() const
{
	std::ostringstream * This = const_cast<std::ostringstream*>(this) ;
	ostrstream * base = This ;
	(*base) << '\0' ;
	char * p = base->str() ;
	std::string s( p ? p : "" ) ;
	base->rdbuf()->freeze( 0 ) ;
	return s ;
}

#endif


