Mercurial > vba-linux
view src/win32/7zip/7z/CPP/7zip/Archive/Common/InStreamWithCRC.h @ 1:f9f4f1b99eed
importing src directory
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 03 Mar 2012 10:31:27 -0600 |
parents | |
children |
line wrap: on
line source
1 // InStreamWithCRC.h3 #ifndef __INSTREAMWITHCRC_H4 #define __INSTREAMWITHCRC_H6 #include "../../../Common/MyCom.h"7 #include "../../IStream.h"9 extern "C"10 {11 #include "../../../../C/7zCrc.h"12 }14 class CSequentialInStreamWithCRC:15 public ISequentialInStream,16 public CMyUnknownImp17 {18 public:19 MY_UNKNOWN_IMP21 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);22 private:23 CMyComPtr<ISequentialInStream> _stream;24 UInt64 _size;25 UInt32 _crc;26 bool _wasFinished;27 public:28 void SetStream(ISequentialInStream *stream) { _stream = stream; }29 void Init()30 {31 _size = 0;32 _wasFinished = false;33 _crc = CRC_INIT_VAL;34 }35 void ReleaseStream() { _stream.Release(); }36 UInt32 GetCRC() const { return CRC_GET_DIGEST(_crc); }37 UInt64 GetSize() const { return _size; }38 bool WasFinished() const { return _wasFinished; }39 };41 class CInStreamWithCRC:42 public IInStream,43 public CMyUnknownImp44 {45 public:46 MY_UNKNOWN_IMP1(IInStream)48 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);49 STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition);50 private:51 CMyComPtr<IInStream> _stream;52 UInt64 _size;53 UInt32 _crc;54 bool _wasFinished;55 public:56 void SetStream(IInStream *stream) { _stream = stream; }57 void Init()58 {59 _size = 0;60 _wasFinished = false;61 _crc = CRC_INIT_VAL;62 }63 void ReleaseStream() { _stream.Release(); }64 UInt32 GetCRC() const { return CRC_GET_DIGEST(_crc); }65 UInt64 GetSize() const { return _size; }66 bool WasFinished() const { return _wasFinished; }67 };69 #endif