3 #ifndef __STREAMOBJECTS_H
4 #define __STREAMOBJECTS_H
6 #include "../../Common/DynamicBuffer.h"
7 #include "../../Common/MyCom.h"
8 #include "../IStream.h"
10 class CSequentialInStreamImp:
11 public ISequentialInStream,
14 const Byte *_dataPointer;
19 void Init(const Byte *dataPointer, size_t size)
21 _dataPointer = dataPointer;
28 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
34 CByteDynamicBuffer _buffer;
37 CWriteBuffer(): _size(0) {}
38 void Init() { _size = 0; }
39 void Write(const void *data, size_t size);
40 size_t GetSize() const { return _size; }
41 const CByteDynamicBuffer& GetBuffer() const { return _buffer; }
44 class CSequentialOutStreamImp:
45 public ISequentialOutStream,
48 CWriteBuffer _writeBuffer;
50 void Init() { _writeBuffer.Init(); }
51 size_t GetSize() const { return _writeBuffer.GetSize(); }
52 const CByteDynamicBuffer& GetBuffer() const { return _writeBuffer.GetBuffer(); }
56 STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
59 class CSequentialOutStreamImp2:
60 public ISequentialOutStream,
68 void Init(Byte *buffer, size_t size)
75 size_t GetPos() const { return _pos; }
79 STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
82 class CSequentialInStreamSizeCount:
83 public ISequentialInStream,
86 CMyComPtr<ISequentialInStream> _stream;
89 void Init(ISequentialInStream *stream)
94 UInt64 GetSize() const { return _size; }
98 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
101 class CSequentialOutStreamSizeCount:
102 public ISequentialOutStream,
105 CMyComPtr<ISequentialOutStream> _stream;
108 void SetStream(ISequentialOutStream *stream) { _stream = stream; }
109 void Init() { _size = 0; }
110 UInt64 GetSize() const { return _size; }
114 STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);