00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00039 #include "blocxx/BLOCXX_config.h"
00040 #include "blocxx/StringStream.hpp"
00041
00042 namespace BLOCXX_NAMESPACE
00043 {
00044
00046 OStringStreamBuf::OStringStreamBuf(size_t size)
00047 : BaseStreamBuffer(BaseStreamBuffer::E_OUT, size), m_buf(size)
00048 {
00049 }
00051 OStringStreamBuf::~OStringStreamBuf()
00052 {
00053 }
00055 String OStringStreamBuf::toString() const
00056 {
00057 return m_buf.toString();
00058 }
00060 String OStringStreamBuf::releaseString()
00061 {
00062 return m_buf.releaseString();
00063 }
00065 size_t OStringStreamBuf::length() const
00066 {
00067 return m_buf.length();
00068 }
00070 const char* OStringStreamBuf::c_str() const
00071 {
00072 return m_buf.c_str();
00073 }
00075 void OStringStreamBuf::reset()
00076 {
00077 m_buf.reset();
00078 }
00080 int OStringStreamBuf::buffer_to_device(const char *c, int n)
00081 {
00082 m_buf.append(c, n);
00083 return 0;
00084 }
00086 OStringStreamBase::OStringStreamBase(size_t sz)
00087 : m_buf(sz)
00088 {
00089 }
00091 OStringStream::OStringStream(size_t size)
00092 : OStringStreamBase(size)
00093 , std::basic_ostream<char, std::char_traits<char> >(&m_buf)
00094 {
00095 }
00097 OStringStream::~OStringStream()
00098 {
00099 }
00101 OStringStream::OStringStream(const OStringStream& ostr)
00102 #if !defined(__GNUC__) || __GNUC__ > 2
00103 : std::basic_ios<char>()
00104 #else
00105 : std::ios()
00106 #endif
00107 , OStringStreamBase(ostr.length())
00108 , std::basic_ostream<char, std::char_traits<char> >(&m_buf)
00109 {
00110 *this << ostr.toString();
00111 }
00113 OStringStream& OStringStream::operator=(const OStringStream& ostr)
00114 {
00115 if ( &ostr != this )
00116 {
00117 this->reset();
00118 *this << ostr.toString();
00119 }
00120 return *this;
00121 }
00122
00123
00125 String OStringStream::toString() const
00126 {
00127 m_buf.sync();
00128 return m_buf.toString();
00129 }
00131 String OStringStream::releaseString()
00132 {
00133 m_buf.sync();
00134 return m_buf.releaseString();
00135 }
00137 size_t OStringStream::length() const
00138 {
00139 m_buf.sync();
00140 return m_buf.length();
00141 }
00143 const char* OStringStream::c_str() const
00144 {
00145 m_buf.sync();
00146 return m_buf.c_str();
00147 }
00149 void OStringStream::reset()
00150 {
00151 m_buf.reset();
00152 }
00154 IStringStream::IStringStream(const String& s)
00155 : IStringStreamBase(s)
00156 , std::istream(&m_buf)
00157 {
00158 }
00160 IStringStream::~IStringStream()
00161 {
00162 }
00163
00164 }
00165