annotate src/win32/7zip/7z/CPP/7zip/Common/StreamObjects.h @ 1:f9f4f1b99eed

importing src directory
author Robert McIntyre <rlm@mit.edu>
date Sat, 03 Mar 2012 10:31:27 -0600
parents
children
rev   line source
rlm@1 1 // StreamObjects.h
rlm@1 2
rlm@1 3 #ifndef __STREAMOBJECTS_H
rlm@1 4 #define __STREAMOBJECTS_H
rlm@1 5
rlm@1 6 #include "../../Common/DynamicBuffer.h"
rlm@1 7 #include "../../Common/MyCom.h"
rlm@1 8 #include "../IStream.h"
rlm@1 9
rlm@1 10 class CSequentialInStreamImp:
rlm@1 11 public ISequentialInStream,
rlm@1 12 public CMyUnknownImp
rlm@1 13 {
rlm@1 14 const Byte *_dataPointer;
rlm@1 15 size_t _size;
rlm@1 16 size_t _pos;
rlm@1 17
rlm@1 18 public:
rlm@1 19 void Init(const Byte *dataPointer, size_t size)
rlm@1 20 {
rlm@1 21 _dataPointer = dataPointer;
rlm@1 22 _size = size;
rlm@1 23 _pos = 0;
rlm@1 24 }
rlm@1 25
rlm@1 26 MY_UNKNOWN_IMP
rlm@1 27
rlm@1 28 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
rlm@1 29 };
rlm@1 30
rlm@1 31
rlm@1 32 class CWriteBuffer
rlm@1 33 {
rlm@1 34 CByteDynamicBuffer _buffer;
rlm@1 35 size_t _size;
rlm@1 36 public:
rlm@1 37 CWriteBuffer(): _size(0) {}
rlm@1 38 void Init() { _size = 0; }
rlm@1 39 void Write(const void *data, size_t size);
rlm@1 40 size_t GetSize() const { return _size; }
rlm@1 41 const CByteDynamicBuffer& GetBuffer() const { return _buffer; }
rlm@1 42 };
rlm@1 43
rlm@1 44 class CSequentialOutStreamImp:
rlm@1 45 public ISequentialOutStream,
rlm@1 46 public CMyUnknownImp
rlm@1 47 {
rlm@1 48 CWriteBuffer _writeBuffer;
rlm@1 49 public:
rlm@1 50 void Init() { _writeBuffer.Init(); }
rlm@1 51 size_t GetSize() const { return _writeBuffer.GetSize(); }
rlm@1 52 const CByteDynamicBuffer& GetBuffer() const { return _writeBuffer.GetBuffer(); }
rlm@1 53
rlm@1 54 MY_UNKNOWN_IMP
rlm@1 55
rlm@1 56 STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
rlm@1 57 };
rlm@1 58
rlm@1 59 class CSequentialOutStreamImp2:
rlm@1 60 public ISequentialOutStream,
rlm@1 61 public CMyUnknownImp
rlm@1 62 {
rlm@1 63 Byte *_buffer;
rlm@1 64 size_t _size;
rlm@1 65 size_t _pos;
rlm@1 66 public:
rlm@1 67
rlm@1 68 void Init(Byte *buffer, size_t size)
rlm@1 69 {
rlm@1 70 _buffer = buffer;
rlm@1 71 _pos = 0;
rlm@1 72 _size = size;
rlm@1 73 }
rlm@1 74
rlm@1 75 size_t GetPos() const { return _pos; }
rlm@1 76
rlm@1 77 MY_UNKNOWN_IMP
rlm@1 78
rlm@1 79 STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
rlm@1 80 };
rlm@1 81
rlm@1 82 class CSequentialInStreamSizeCount:
rlm@1 83 public ISequentialInStream,
rlm@1 84 public CMyUnknownImp
rlm@1 85 {
rlm@1 86 CMyComPtr<ISequentialInStream> _stream;
rlm@1 87 UInt64 _size;
rlm@1 88 public:
rlm@1 89 void Init(ISequentialInStream *stream)
rlm@1 90 {
rlm@1 91 _stream = stream;
rlm@1 92 _size = 0;
rlm@1 93 }
rlm@1 94 UInt64 GetSize() const { return _size; }
rlm@1 95
rlm@1 96 MY_UNKNOWN_IMP
rlm@1 97
rlm@1 98 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
rlm@1 99 };
rlm@1 100
rlm@1 101 class CSequentialOutStreamSizeCount:
rlm@1 102 public ISequentialOutStream,
rlm@1 103 public CMyUnknownImp
rlm@1 104 {
rlm@1 105 CMyComPtr<ISequentialOutStream> _stream;
rlm@1 106 UInt64 _size;
rlm@1 107 public:
rlm@1 108 void SetStream(ISequentialOutStream *stream) { _stream = stream; }
rlm@1 109 void Init() { _size = 0; }
rlm@1 110 UInt64 GetSize() const { return _size; }
rlm@1 111
rlm@1 112 MY_UNKNOWN_IMP
rlm@1 113
rlm@1 114 STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize);
rlm@1 115 };
rlm@1 116
rlm@1 117 #endif