xref: /aosp_15_r20/external/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // 7zFolderInStream.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_7Z_FOLDER_IN_STREAM_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_7Z_FOLDER_IN_STREAM_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #include "../../../../C/7zCrc.h"
7*f6dc9357SAndroid Build Coastguard Worker 
8*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/MyCom.h"
9*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/MyVector.h"
10*f6dc9357SAndroid Build Coastguard Worker // #include "../Common/InStreamWithCRC.h"
11*f6dc9357SAndroid Build Coastguard Worker 
12*f6dc9357SAndroid Build Coastguard Worker #include "../../ICoder.h"
13*f6dc9357SAndroid Build Coastguard Worker #include "../IArchive.h"
14*f6dc9357SAndroid Build Coastguard Worker 
15*f6dc9357SAndroid Build Coastguard Worker namespace NArchive {
16*f6dc9357SAndroid Build Coastguard Worker namespace N7z {
17*f6dc9357SAndroid Build Coastguard Worker 
18*f6dc9357SAndroid Build Coastguard Worker Z7_CLASS_IMP_COM_2(
19*f6dc9357SAndroid Build Coastguard Worker   CFolderInStream
20*f6dc9357SAndroid Build Coastguard Worker   , ISequentialInStream
21*f6dc9357SAndroid Build Coastguard Worker   , ICompressGetSubStreamSize
22*f6dc9357SAndroid Build Coastguard Worker )
23*f6dc9357SAndroid Build Coastguard Worker   /*
24*f6dc9357SAndroid Build Coastguard Worker   Z7_COM7F_IMP(GetNextStream(UInt64 *streamIndex))
25*f6dc9357SAndroid Build Coastguard Worker   Z7_IFACE_COM7_IMP(ICompressInSubStreams)
26*f6dc9357SAndroid Build Coastguard Worker   */
27*f6dc9357SAndroid Build Coastguard Worker 
28*f6dc9357SAndroid Build Coastguard Worker   CMyComPtr<ISequentialInStream> _stream;
29*f6dc9357SAndroid Build Coastguard Worker   UInt64 _totalSize_for_Coder;
30*f6dc9357SAndroid Build Coastguard Worker   UInt64 _pos;
31*f6dc9357SAndroid Build Coastguard Worker   UInt32 _crc;
32*f6dc9357SAndroid Build Coastguard Worker   bool _size_Defined;
33*f6dc9357SAndroid Build Coastguard Worker   bool _times_Defined;
34*f6dc9357SAndroid Build Coastguard Worker   UInt64 _size;
35*f6dc9357SAndroid Build Coastguard Worker   FILETIME _mTime;
36*f6dc9357SAndroid Build Coastguard Worker   FILETIME _cTime;
37*f6dc9357SAndroid Build Coastguard Worker   FILETIME _aTime;
38*f6dc9357SAndroid Build Coastguard Worker   UInt32 _attrib;
39*f6dc9357SAndroid Build Coastguard Worker 
40*f6dc9357SAndroid Build Coastguard Worker   unsigned _numFiles;
41*f6dc9357SAndroid Build Coastguard Worker   const UInt32 *_indexes;
42*f6dc9357SAndroid Build Coastguard Worker 
43*f6dc9357SAndroid Build Coastguard Worker   CMyComPtr<IArchiveUpdateCallback> _updateCallback;
44*f6dc9357SAndroid Build Coastguard Worker 
45*f6dc9357SAndroid Build Coastguard Worker   void ClearFileInfo();
46*f6dc9357SAndroid Build Coastguard Worker   HRESULT OpenStream();
47*f6dc9357SAndroid Build Coastguard Worker   HRESULT AddFileInfo(bool isProcessed);
48*f6dc9357SAndroid Build Coastguard Worker   // HRESULT CloseCrcStream();
49*f6dc9357SAndroid Build Coastguard Worker public:
50*f6dc9357SAndroid Build Coastguard Worker   bool Need_MTime;
51*f6dc9357SAndroid Build Coastguard Worker   bool Need_CTime;
52*f6dc9357SAndroid Build Coastguard Worker   bool Need_ATime;
53*f6dc9357SAndroid Build Coastguard Worker   bool Need_Attrib;
54*f6dc9357SAndroid Build Coastguard Worker   // bool Need_Crc;
55*f6dc9357SAndroid Build Coastguard Worker   // bool Need_FolderCrc;
56*f6dc9357SAndroid Build Coastguard Worker   // unsigned AlignLog;
57*f6dc9357SAndroid Build Coastguard Worker 
58*f6dc9357SAndroid Build Coastguard Worker   CRecordVector<bool> Processed;
59*f6dc9357SAndroid Build Coastguard Worker   CRecordVector<UInt64> Sizes;
60*f6dc9357SAndroid Build Coastguard Worker   CRecordVector<UInt32> CRCs;
61*f6dc9357SAndroid Build Coastguard Worker   CRecordVector<UInt32> Attribs;
62*f6dc9357SAndroid Build Coastguard Worker   CRecordVector<bool> TimesDefined;
63*f6dc9357SAndroid Build Coastguard Worker   CRecordVector<UInt64> MTimes;
64*f6dc9357SAndroid Build Coastguard Worker   CRecordVector<UInt64> CTimes;
65*f6dc9357SAndroid Build Coastguard Worker   CRecordVector<UInt64> ATimes;
66*f6dc9357SAndroid Build Coastguard Worker   // UInt32 FolderCrc;
67*f6dc9357SAndroid Build Coastguard Worker 
68*f6dc9357SAndroid Build Coastguard Worker   // UInt32 GetFolderCrc() const { return CRC_GET_DIGEST(FolderCrc); }
69*f6dc9357SAndroid Build Coastguard Worker   // CSequentialInStreamWithCRC *_crcStream_Spec;
70*f6dc9357SAndroid Build Coastguard Worker   // CMyComPtr<ISequentialInStream> _crcStream;
71*f6dc9357SAndroid Build Coastguard Worker   // CMyComPtr<IArchiveUpdateCallbackArcProp> _reportArcProp;
72*f6dc9357SAndroid Build Coastguard Worker 
73*f6dc9357SAndroid Build Coastguard Worker   void Init(IArchiveUpdateCallback *updateCallback, const UInt32 *indexes, unsigned numFiles);
74*f6dc9357SAndroid Build Coastguard Worker 
WasFinished()75*f6dc9357SAndroid Build Coastguard Worker   bool WasFinished() const { return Processed.Size() == _numFiles; }
76*f6dc9357SAndroid Build Coastguard Worker 
Get_TotalSize_for_Coder()77*f6dc9357SAndroid Build Coastguard Worker   UInt64 Get_TotalSize_for_Coder() const { return _totalSize_for_Coder; }
78*f6dc9357SAndroid Build Coastguard Worker   /*
79*f6dc9357SAndroid Build Coastguard Worker   UInt64 GetFullSize() const
80*f6dc9357SAndroid Build Coastguard Worker   {
81*f6dc9357SAndroid Build Coastguard Worker     UInt64 size = 0;
82*f6dc9357SAndroid Build Coastguard Worker     FOR_VECTOR (i, Sizes)
83*f6dc9357SAndroid Build Coastguard Worker       size += Sizes[i];
84*f6dc9357SAndroid Build Coastguard Worker     return size;
85*f6dc9357SAndroid Build Coastguard Worker   }
86*f6dc9357SAndroid Build Coastguard Worker   */
87*f6dc9357SAndroid Build Coastguard Worker 
CFolderInStream()88*f6dc9357SAndroid Build Coastguard Worker   CFolderInStream():
89*f6dc9357SAndroid Build Coastguard Worker       Need_MTime(false),
90*f6dc9357SAndroid Build Coastguard Worker       Need_CTime(false),
91*f6dc9357SAndroid Build Coastguard Worker       Need_ATime(false),
92*f6dc9357SAndroid Build Coastguard Worker       Need_Attrib(false)
93*f6dc9357SAndroid Build Coastguard Worker       // , Need_Crc(true)
94*f6dc9357SAndroid Build Coastguard Worker       // , Need_FolderCrc(false)
95*f6dc9357SAndroid Build Coastguard Worker       // , AlignLog(0)
96*f6dc9357SAndroid Build Coastguard Worker       {}
97*f6dc9357SAndroid Build Coastguard Worker };
98*f6dc9357SAndroid Build Coastguard Worker 
99*f6dc9357SAndroid Build Coastguard Worker }}
100*f6dc9357SAndroid Build Coastguard Worker 
101*f6dc9357SAndroid Build Coastguard Worker #endif
102