diff options
Diffstat (limited to '3rdparty/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h')
-rw-r--r-- | 3rdparty/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/3rdparty/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h b/3rdparty/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h index 6df3672a1ca..805db54e9d3 100644 --- a/3rdparty/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h +++ b/3rdparty/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h @@ -3,11 +3,13 @@ #ifndef __7Z_FOLDER_IN_STREAM_H #define __7Z_FOLDER_IN_STREAM_H +#include "../../../../C/7zCrc.h" + +#include "../../../Common/MyCom.h" +#include "../../../Common/MyVector.h" + #include "../../ICoder.h" #include "../IArchive.h" -#include "../Common/InStreamWithCRC.h" - -#include "7zItem.h" namespace NArchive { namespace N7z { @@ -17,37 +19,38 @@ class CFolderInStream: public ICompressGetSubStreamSize, public CMyUnknownImp { - CSequentialInStreamWithCRC *_inStreamWithHashSpec; - CMyComPtr<ISequentialInStream> _inStreamWithHash; - CMyComPtr<IArchiveUpdateCallback> _updateCallback; + CMyComPtr<ISequentialInStream> _stream; + UInt64 _pos; + UInt32 _crc; + bool _size_Defined; + UInt64 _size; - bool _currentSizeIsDefined; - bool _fileIsOpen; - UInt64 _currentSize; - UInt64 _filePos; - const UInt32 *_fileIndices; - UInt32 _numFiles; - UInt32 _fileIndex; + const UInt32 *_indexes; + unsigned _numFiles; + unsigned _index; + + CMyComPtr<IArchiveUpdateCallback> _updateCallback; HRESULT OpenStream(); - HRESULT CloseStream(); - void AddDigest(); + void AddFileInfo(bool isProcessed); public: CRecordVector<bool> Processed; CRecordVector<UInt32> CRCs; CRecordVector<UInt64> Sizes; - MY_UNKNOWN_IMP1(ICompressGetSubStreamSize) + MY_UNKNOWN_IMP2(ISequentialInStream, ICompressGetSubStreamSize) STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize); STDMETHOD(GetSubStreamSize)(UInt64 subStream, UInt64 *value); - CFolderInStream(); - void Init(IArchiveUpdateCallback *updateCallback, const UInt32 *fileIndices, UInt32 numFiles); + void Init(IArchiveUpdateCallback *updateCallback, const UInt32 *indexes, unsigned numFiles); + + bool WasFinished() const { return _index == _numFiles; } + UInt64 GetFullSize() const { UInt64 size = 0; - for (int i = 0; i < Sizes.Size(); i++) + FOR_VECTOR (i, Sizes) size += Sizes[i]; return size; } |