xref: /aosp_15_r20/external/lzma/CPP/7zip/Archive/Zip/ZipAddCommon.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // ZipAddCommon.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_ZIP_ADD_COMMON_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_ZIP_ADD_COMMON_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #include "../../ICoder.h"
7*f6dc9357SAndroid Build Coastguard Worker #include "../../IProgress.h"
8*f6dc9357SAndroid Build Coastguard Worker 
9*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/CreateCoder.h"
10*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/FilterCoder.h"
11*f6dc9357SAndroid Build Coastguard Worker 
12*f6dc9357SAndroid Build Coastguard Worker #include "../../Compress/CopyCoder.h"
13*f6dc9357SAndroid Build Coastguard Worker 
14*f6dc9357SAndroid Build Coastguard Worker #include "../../Crypto/ZipCrypto.h"
15*f6dc9357SAndroid Build Coastguard Worker #include "../../Crypto/WzAes.h"
16*f6dc9357SAndroid Build Coastguard Worker 
17*f6dc9357SAndroid Build Coastguard Worker #include "ZipCompressionMode.h"
18*f6dc9357SAndroid Build Coastguard Worker 
19*f6dc9357SAndroid Build Coastguard Worker namespace NArchive {
20*f6dc9357SAndroid Build Coastguard Worker namespace NZip {
21*f6dc9357SAndroid Build Coastguard Worker 
22*f6dc9357SAndroid Build Coastguard Worker struct CCompressingResult
23*f6dc9357SAndroid Build Coastguard Worker {
24*f6dc9357SAndroid Build Coastguard Worker   UInt64 UnpackSize;
25*f6dc9357SAndroid Build Coastguard Worker   UInt64 PackSize;
26*f6dc9357SAndroid Build Coastguard Worker   UInt32 CRC;
27*f6dc9357SAndroid Build Coastguard Worker   UInt16 Method;
28*f6dc9357SAndroid Build Coastguard Worker   Byte ExtractVersion;
29*f6dc9357SAndroid Build Coastguard Worker   bool DescriptorMode;
30*f6dc9357SAndroid Build Coastguard Worker   bool LzmaEos;
31*f6dc9357SAndroid Build Coastguard Worker 
CCompressingResultCCompressingResult32*f6dc9357SAndroid Build Coastguard Worker   CCompressingResult()
33*f6dc9357SAndroid Build Coastguard Worker   {
34*f6dc9357SAndroid Build Coastguard Worker     // for GCC:
35*f6dc9357SAndroid Build Coastguard Worker     UnpackSize = 0;
36*f6dc9357SAndroid Build Coastguard Worker   }
37*f6dc9357SAndroid Build Coastguard Worker };
38*f6dc9357SAndroid Build Coastguard Worker 
39*f6dc9357SAndroid Build Coastguard Worker class CAddCommon  MY_UNCOPYABLE
40*f6dc9357SAndroid Build Coastguard Worker {
41*f6dc9357SAndroid Build Coastguard Worker   CCompressionMethodMode _options;
42*f6dc9357SAndroid Build Coastguard Worker   CMyComPtr2<ICompressCoder, NCompress::CCopyCoder> _copyCoder;
43*f6dc9357SAndroid Build Coastguard Worker 
44*f6dc9357SAndroid Build Coastguard Worker   CMyComPtr<ICompressCoder> _compressEncoder;
45*f6dc9357SAndroid Build Coastguard Worker   Byte _compressExtractVersion;
46*f6dc9357SAndroid Build Coastguard Worker   bool _isLzmaEos;
47*f6dc9357SAndroid Build Coastguard Worker 
48*f6dc9357SAndroid Build Coastguard Worker   CMyComPtr2<ISequentialOutStream, CFilterCoder> _cryptoStream;
49*f6dc9357SAndroid Build Coastguard Worker 
50*f6dc9357SAndroid Build Coastguard Worker   NCrypto::NZip::CEncoder *_filterSpec;
51*f6dc9357SAndroid Build Coastguard Worker   NCrypto::NWzAes::CEncoder *_filterAesSpec;
52*f6dc9357SAndroid Build Coastguard Worker 
53*f6dc9357SAndroid Build Coastguard Worker   Byte *_buf;
54*f6dc9357SAndroid Build Coastguard Worker 
55*f6dc9357SAndroid Build Coastguard Worker   HRESULT CalcStreamCRC(ISequentialInStream *inStream, UInt32 &resultCRC);
56*f6dc9357SAndroid Build Coastguard Worker public:
57*f6dc9357SAndroid Build Coastguard Worker   // CAddCommon(const CCompressionMethodMode &options);
58*f6dc9357SAndroid Build Coastguard Worker   CAddCommon();
59*f6dc9357SAndroid Build Coastguard Worker   void SetOptions(const CCompressionMethodMode &options);
60*f6dc9357SAndroid Build Coastguard Worker   ~CAddCommon();
61*f6dc9357SAndroid Build Coastguard Worker 
62*f6dc9357SAndroid Build Coastguard Worker   HRESULT Set_Pre_CompressionResult(bool inSeqMode, bool outSeqMode, UInt64 unpackSize,
63*f6dc9357SAndroid Build Coastguard Worker       CCompressingResult &opRes) const;
64*f6dc9357SAndroid Build Coastguard Worker 
65*f6dc9357SAndroid Build Coastguard Worker   HRESULT Compress(
66*f6dc9357SAndroid Build Coastguard Worker       DECL_EXTERNAL_CODECS_LOC_VARS
67*f6dc9357SAndroid Build Coastguard Worker       ISequentialInStream *inStream, IOutStream *outStream,
68*f6dc9357SAndroid Build Coastguard Worker       bool inSeqMode, bool outSeqMode,
69*f6dc9357SAndroid Build Coastguard Worker       UInt32 fileTime,
70*f6dc9357SAndroid Build Coastguard Worker       UInt64 expectedDataSize, bool expectedDataSize_IsConfirmed,
71*f6dc9357SAndroid Build Coastguard Worker       ICompressProgressInfo *progress, CCompressingResult &opRes);
72*f6dc9357SAndroid Build Coastguard Worker };
73*f6dc9357SAndroid Build Coastguard Worker 
74*f6dc9357SAndroid Build Coastguard Worker }}
75*f6dc9357SAndroid Build Coastguard Worker 
76*f6dc9357SAndroid Build Coastguard Worker #endif
77