00001 #ifndef FDO_IO_BUFFERSTREAM_H
00002 #define FDO_IO_BUFFERSTREAM_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <FdoCommon.h>
00023
00024
00025
00026
00027 class FdoIoBufferStream :
00028 public FdoIoStream
00029 {
00030 public:
00031
00032 static FdoIoBufferStream* Create( FdoByte* buffer, FdoSize size );
00033
00034 static FdoIoBufferStream* Create( FdoSize size );
00035
00036
00037 virtual FdoSize Read( FdoByte* buffer, FdoSize count );
00038 virtual void Write( FdoByte* buffer, FdoSize count );
00039 virtual void Write( FdoIoStream* stream, FdoSize count = 0 );
00040 virtual void SetLength( FdoInt64 length );
00041
00042 virtual FdoInt64 GetLength() {
00043 return( mLength);
00044 }
00045
00046 virtual FdoInt64 GetIndex()
00047 {
00048 return mPos;
00049 }
00050
00051 virtual void Skip( FdoInt64 offset );
00052 virtual void Reset();
00053
00054 protected:
00055 FdoIoBufferStream( FdoByte* buffer, FdoSize size );
00056 FdoIoBufferStream( FdoSize size = 4096 );
00057 virtual ~FdoIoBufferStream(void);
00058
00059 private:
00060
00061 FdoByte* mpBuffer;
00062
00063
00064 FdoBoolean mbMyBuffer;
00065
00066 FdoSize mSize;
00067
00068 FdoSize mLength;
00069
00070 FdoSize mPos;
00071
00072 };
00073
00074 typedef FdoPtr<FdoIoBufferStream> FdoIoBufferStreamP;
00075
00076
00077 #endif
00078
00079