00001
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
00032
00033 #ifndef GROOVX_RUTZ_CSTRSTREAM_CC_UTC20050626084020_DEFINED
00034 #define GROOVX_RUTZ_CSTRSTREAM_CC_UTC20050626084020_DEFINED
00035
00036 #include "cstrstream.h"
00037
00038 rutz::imembuf::imembuf(const char* s) :
00039 m_len(strlen(s)),
00040 m_buf(s),
00041 m_owned_mem(0)
00042 {
00043 setg(const_cast<char*>(m_buf),
00044 const_cast<char*>(m_buf),
00045 const_cast<char*>(m_buf) + m_len);
00046 }
00047
00048 rutz::imembuf::imembuf(const char* s, unsigned int len) :
00049 m_len(len),
00050 m_buf(s),
00051 m_owned_mem(0)
00052 {
00053 setg(const_cast<char*>(m_buf),
00054 const_cast<char*>(m_buf),
00055 const_cast<char*>(m_buf) + m_len);
00056 }
00057
00058 void rutz::imembuf::make_owning()
00059 {
00060 if (m_owned_mem == 0)
00061 {
00062 m_owned_mem = new char[m_len+1];
00063 memcpy(m_owned_mem, m_buf, m_len+1);
00064 m_buf = 0;
00065 setg(m_owned_mem, m_owned_mem, m_owned_mem + m_len);
00066 }
00067 }
00068
00069 rutz::imembuf::~imembuf()
00070 {
00071 delete [] m_owned_mem;
00072 }
00073
00074 int rutz::imembuf::underflow()
00075 {
00076 if (gptr() < egptr())
00077 {
00078 return *gptr();
00079 }
00080
00081
00082
00083 return EOF;
00084 }
00085
00086 rutz::imemstream::imemstream(const char* s)
00087 :
00088 std::istream(&m_buf), m_buf(s)
00089 {}
00090
00091 rutz::imemstream::imemstream(const char* s, unsigned int len)
00092 :
00093 std::istream(&m_buf), m_buf(s, len)
00094 {}
00095
00096 rutz::icstrstream::icstrstream(const char* s)
00097 :
00098 std::istream(&m_buf), m_buf(s)
00099 {
00100 m_buf.make_owning();
00101 }
00102
00103 static const char __attribute__((used)) vcid_groovx_rutz_cstrstream_cc_utc20050626084020[] = "$Id: cstrstream.cc 10065 2007-04-12 05:54:56Z rjpeters $ $HeadURL: file:
00104 #endif // !GROOVX_RUTZ_CSTRSTREAM_CC_UTC20050626084020_DEFINED