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
00031
00033
00034 #ifndef GROOVX_RUTZ_CSTRSTREAM_H_UTC20050626084019_DEFINED
00035 #define GROOVX_RUTZ_CSTRSTREAM_H_UTC20050626084019_DEFINED
00036
00037 #include <cstring>
00038 #include <istream>
00039 #include <streambuf>
00040
00041 namespace rutz
00042 {
00043 class imembuf;
00044 class imemstream;
00045 class icstrstream;
00046 }
00047
00049 class rutz::imembuf : public std::streambuf
00050 {
00051 private:
00052 unsigned int m_len;
00053 const char* m_buf;
00054 char* m_owned_mem;
00055
00056 imembuf(const imembuf&);
00057 imembuf& operator=(const imembuf&);
00058
00059 public:
00061 imembuf(const char* s);
00062
00064 imembuf(const char* s, unsigned int len);
00065
00066 void make_owning();
00067
00069 virtual ~imembuf();
00070
00072
00074 virtual int underflow();
00075 };
00076
00078 class rutz::imemstream : public std::istream
00079 {
00080 private:
00081 imembuf m_buf;
00082 public:
00084 imemstream(const char* s);
00085
00087 imemstream(const char* s, unsigned int len);
00088 };
00089
00091 class rutz::icstrstream : public std::istream
00092 {
00093 private:
00094 imembuf m_buf;
00095 public:
00097 icstrstream(const char* s);
00098 };
00099
00100 static const char __attribute__((used)) vcid_groovx_rutz_cstrstream_h_utc20050626084019[] = "$Id: cstrstream.h 10065 2007-04-12 05:54:56Z rjpeters $ $HeadURL: file:
00101 #endif // !GROOVX_RUTZ_CSTRSTREAM_H_UTC20050626084019_DEFINED