1 // 7zFolderInStream.h
\r
3 #ifndef __7Z_FOLDER_IN_STREAM_H
\r
4 #define __7Z_FOLDER_IN_STREAM_H
\r
6 #include "../../ICoder.h"
\r
7 #include "../IArchive.h"
\r
8 #include "../Common/InStreamWithCRC.h"
\r
12 namespace NArchive {
\r
15 class CFolderInStream:
\r
16 public ISequentialInStream,
\r
17 public ICompressGetSubStreamSize,
\r
18 public CMyUnknownImp
\r
20 CSequentialInStreamWithCRC *_inStreamWithHashSpec;
\r
21 CMyComPtr<ISequentialInStream> _inStreamWithHash;
\r
22 CMyComPtr<IArchiveUpdateCallback> _updateCallback;
\r
24 bool _currentSizeIsDefined;
\r
26 UInt64 _currentSize;
\r
28 const UInt32 *_fileIndices;
\r
32 HRESULT OpenStream();
\r
33 HRESULT CloseStream();
\r
37 CRecordVector<bool> Processed;
\r
38 CRecordVector<UInt32> CRCs;
\r
39 CRecordVector<UInt64> Sizes;
\r
41 MY_UNKNOWN_IMP1(ICompressGetSubStreamSize)
\r
42 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
\r
43 STDMETHOD(GetSubStreamSize)(UInt64 subStream, UInt64 *value);
\r
46 void Init(IArchiveUpdateCallback *updateCallback, const UInt32 *fileIndices, UInt32 numFiles);
\r
47 UInt64 GetFullSize() const
\r
50 for (int i = 0; i < Sizes.Size(); i++)
\r