00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _StringIODevice_incl_
00020 #define _StringIODevice_incl_
00021
00022 #include <rel/IODevice.h>
00023 #include <string>
00024
00025 namespace rel
00026 {
00027
00028 class TypeStream;
00029
00030
00031
00032
00033
00034
00035 class StringIODevice : public IODevice
00036 {
00037 public:
00038 StringIODevice();
00039 StringIODevice(const StringIODevice &src);
00040 ~StringIODevice();
00041
00042 StringIODevice &operator = (const StringIODevice &src);
00043
00047 virtual size_type writeBytes(const char *data, size_type len);
00048
00053 virtual size_type readBytes(char *data, size_type maxLen);
00054
00055
00056 virtual bool atEnd() const;
00057
00058
00059
00060 virtual size_type at() const;
00061
00062
00063 virtual bool at(size_type offset);
00064
00065
00066 virtual SmartPtr<char*> print();
00067
00068
00069 void clear();
00070
00071 bool writeToStream(TypeStream &output) const;
00072 bool readFromStream(const TypeStream &input);
00073
00074 private:
00075 std::string fData;
00076 size_type fOffset;
00077 size_type fSize;
00078 };
00079
00080 }
00081
00082
00083 rel::TypeStream &operator << (rel::TypeStream &output,
00084 const rel::StringIODevice &src);
00085 const rel::TypeStream &operator >> (const rel::TypeStream &input,
00086 rel::StringIODevice &src);
00087
00088 #endif