Mercurial > vba-linux
annotate src/win32/7zip/7z/CPP/7zip/Archive/7z/7zFolderInStream.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 // 7z/FolderInStream.h |
rlm@1 | 2 |
rlm@1 | 3 #ifndef __7Z_FOLDERINSTREAM_H |
rlm@1 | 4 #define __7Z_FOLDERINSTREAM_H |
rlm@1 | 5 |
rlm@1 | 6 #include "7zItem.h" |
rlm@1 | 7 #include "7zHeader.h" |
rlm@1 | 8 |
rlm@1 | 9 #include "../IArchive.h" |
rlm@1 | 10 #include "../Common/InStreamWithCRC.h" |
rlm@1 | 11 #include "../../IStream.h" |
rlm@1 | 12 #include "../../ICoder.h" |
rlm@1 | 13 |
rlm@1 | 14 namespace NArchive { |
rlm@1 | 15 namespace N7z { |
rlm@1 | 16 |
rlm@1 | 17 class CFolderInStream: |
rlm@1 | 18 public ISequentialInStream, |
rlm@1 | 19 public ICompressGetSubStreamSize, |
rlm@1 | 20 public CMyUnknownImp |
rlm@1 | 21 { |
rlm@1 | 22 public: |
rlm@1 | 23 |
rlm@1 | 24 MY_UNKNOWN_IMP1(ICompressGetSubStreamSize) |
rlm@1 | 25 |
rlm@1 | 26 CFolderInStream(); |
rlm@1 | 27 |
rlm@1 | 28 STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize); |
rlm@1 | 29 |
rlm@1 | 30 STDMETHOD(GetSubStreamSize)(UInt64 subStream, UInt64 *value); |
rlm@1 | 31 private: |
rlm@1 | 32 CSequentialInStreamWithCRC *_inStreamWithHashSpec; |
rlm@1 | 33 CMyComPtr<ISequentialInStream> _inStreamWithHash; |
rlm@1 | 34 CMyComPtr<IArchiveUpdateCallback> _updateCallback; |
rlm@1 | 35 |
rlm@1 | 36 bool _currentSizeIsDefined; |
rlm@1 | 37 UInt64 _currentSize; |
rlm@1 | 38 |
rlm@1 | 39 bool _fileIsOpen; |
rlm@1 | 40 UInt64 _filePos; |
rlm@1 | 41 |
rlm@1 | 42 const UInt32 *_fileIndices; |
rlm@1 | 43 UInt32 _numFiles; |
rlm@1 | 44 UInt32 _fileIndex; |
rlm@1 | 45 |
rlm@1 | 46 HRESULT OpenStream(); |
rlm@1 | 47 HRESULT CloseStream(); |
rlm@1 | 48 void AddDigest(); |
rlm@1 | 49 public: |
rlm@1 | 50 void Init(IArchiveUpdateCallback *updateCallback, |
rlm@1 | 51 const UInt32 *fileIndices, UInt32 numFiles); |
rlm@1 | 52 CRecordVector<bool> Processed; |
rlm@1 | 53 CRecordVector<UInt32> CRCs; |
rlm@1 | 54 CRecordVector<UInt64> Sizes; |
rlm@1 | 55 UInt64 GetFullSize() const |
rlm@1 | 56 { |
rlm@1 | 57 UInt64 size = 0; |
rlm@1 | 58 for (int i = 0; i < Sizes.Size(); i++) |
rlm@1 | 59 size += Sizes[i]; |
rlm@1 | 60 return size; |
rlm@1 | 61 } |
rlm@1 | 62 }; |
rlm@1 | 63 |
rlm@1 | 64 }} |
rlm@1 | 65 |
rlm@1 | 66 #endif |