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
00034 #ifndef LIBEBML_MEMIOCALLBACK_H
00035 #define LIBEBML_MEMIOCALLBACK_H
00036
00037 #include "IOCallback.h"
00038 #include <string>
00039 #ifndef __BEOS__
00040 #include <sstream>
00041 #else
00042 #include <strstream>
00043 #define stringstream strstream
00044 #endif
00045
00046 START_LIBEBML_NAMESPACE
00047
00048 class EBML_DLL_API MemIOCallback : public IOCallback
00049 {
00050 public:
00051 MemIOCallback(uint64 DefaultSize = 128);
00052 ~MemIOCallback();
00053
00057 uint32 read(void *Buffer, size_t Size);
00058
00064 void setFilePointer(int64 Offset, seek_mode Mode=seek_beginning);
00065
00069 size_t write(const void *Buffer, size_t Size);
00070
00078 virtual uint64 getFilePointer() {return dataBufferPos;};
00079
00085 void close() {};
00086
00087 binary *GetDataBuffer() const {return dataBuffer;};
00088 uint64 GetDataBufferSize() {return dataBufferTotalSize;};
00089 void SetDataBufferSize(uint64 newDataBufferSize) {dataBufferTotalSize = newDataBufferSize;};
00093 uint32 write(IOCallback & IOToRead, size_t Size);
00094
00095 bool IsOk() { return mOk; };
00096 const std::string &GetLastErrorStr() { return mLastErrorStr; };
00097 protected:
00098 bool mOk;
00099 std::string mLastErrorStr;
00100
00101 binary *dataBuffer;
00105 uint64 dataBufferPos;
00109 uint64 dataBufferTotalSize;
00113 uint64 dataBufferMemorySize;
00114 };
00115
00116 END_LIBEBML_NAMESPACE
00117
00118 #endif // LIBEBML_MEMIOCALLBACK_H