1*f6dc9357SAndroid Build Coastguard Worker // 7zCompressionMode.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_7Z_COMPRESSION_MODE_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_7Z_COMPRESSION_MODE_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MethodId.h" 7*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MethodProps.h" 8*f6dc9357SAndroid Build Coastguard Worker 9*f6dc9357SAndroid Build Coastguard Worker namespace NArchive { 10*f6dc9357SAndroid Build Coastguard Worker namespace N7z { 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker struct CMethodFull: public CMethodProps 13*f6dc9357SAndroid Build Coastguard Worker { 14*f6dc9357SAndroid Build Coastguard Worker CMethodId Id; 15*f6dc9357SAndroid Build Coastguard Worker UInt32 NumStreams; 16*f6dc9357SAndroid Build Coastguard Worker int CodecIndex; 17*f6dc9357SAndroid Build Coastguard Worker UInt32 NumThreads; 18*f6dc9357SAndroid Build Coastguard Worker bool Set_NumThreads; 19*f6dc9357SAndroid Build Coastguard Worker CMethodFullCMethodFull20*f6dc9357SAndroid Build Coastguard Worker CMethodFull(): CodecIndex(-1), NumThreads(1), Set_NumThreads(false) {} IsSimpleCoderCMethodFull21*f6dc9357SAndroid Build Coastguard Worker bool IsSimpleCoder() const { return NumStreams == 1; } 22*f6dc9357SAndroid Build Coastguard Worker }; 23*f6dc9357SAndroid Build Coastguard Worker 24*f6dc9357SAndroid Build Coastguard Worker struct CBond2 25*f6dc9357SAndroid Build Coastguard Worker { 26*f6dc9357SAndroid Build Coastguard Worker UInt32 OutCoder; 27*f6dc9357SAndroid Build Coastguard Worker UInt32 OutStream; 28*f6dc9357SAndroid Build Coastguard Worker UInt32 InCoder; 29*f6dc9357SAndroid Build Coastguard Worker }; 30*f6dc9357SAndroid Build Coastguard Worker 31*f6dc9357SAndroid Build Coastguard Worker struct CCompressionMethodMode 32*f6dc9357SAndroid Build Coastguard Worker { 33*f6dc9357SAndroid Build Coastguard Worker /* 34*f6dc9357SAndroid Build Coastguard Worker if (Bonds.Empty()), then default bonds must be created 35*f6dc9357SAndroid Build Coastguard Worker if (Filter_was_Inserted) 36*f6dc9357SAndroid Build Coastguard Worker { 37*f6dc9357SAndroid Build Coastguard Worker Methods[0] is filter method 38*f6dc9357SAndroid Build Coastguard Worker Bonds don't contain bonds for filter (these bonds must be created) 39*f6dc9357SAndroid Build Coastguard Worker } 40*f6dc9357SAndroid Build Coastguard Worker */ 41*f6dc9357SAndroid Build Coastguard Worker 42*f6dc9357SAndroid Build Coastguard Worker CObjectVector<CMethodFull> Methods; 43*f6dc9357SAndroid Build Coastguard Worker CRecordVector<CBond2> Bonds; 44*f6dc9357SAndroid Build Coastguard Worker IsThereBond_to_CoderCCompressionMethodMode45*f6dc9357SAndroid Build Coastguard Worker bool IsThereBond_to_Coder(unsigned coderIndex) const 46*f6dc9357SAndroid Build Coastguard Worker { 47*f6dc9357SAndroid Build Coastguard Worker FOR_VECTOR(i, Bonds) 48*f6dc9357SAndroid Build Coastguard Worker if (Bonds[i].InCoder == coderIndex) 49*f6dc9357SAndroid Build Coastguard Worker return true; 50*f6dc9357SAndroid Build Coastguard Worker return false; 51*f6dc9357SAndroid Build Coastguard Worker } 52*f6dc9357SAndroid Build Coastguard Worker 53*f6dc9357SAndroid Build Coastguard Worker bool DefaultMethod_was_Inserted; 54*f6dc9357SAndroid Build Coastguard Worker bool Filter_was_Inserted; 55*f6dc9357SAndroid Build Coastguard Worker bool PasswordIsDefined; 56*f6dc9357SAndroid Build Coastguard Worker bool MemoryUsageLimit_WasSet; 57*f6dc9357SAndroid Build Coastguard Worker 58*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_ST 59*f6dc9357SAndroid Build Coastguard Worker bool NumThreads_WasForced; 60*f6dc9357SAndroid Build Coastguard Worker bool MultiThreadMixer; 61*f6dc9357SAndroid Build Coastguard Worker UInt32 NumThreads; 62*f6dc9357SAndroid Build Coastguard Worker #endif 63*f6dc9357SAndroid Build Coastguard Worker 64*f6dc9357SAndroid Build Coastguard Worker UString Password; // _Wipe 65*f6dc9357SAndroid Build Coastguard Worker UInt64 MemoryUsageLimit; 66*f6dc9357SAndroid Build Coastguard Worker IsEmptyCCompressionMethodMode67*f6dc9357SAndroid Build Coastguard Worker bool IsEmpty() const { return (Methods.IsEmpty() && !PasswordIsDefined); } CCompressionMethodModeCCompressionMethodMode68*f6dc9357SAndroid Build Coastguard Worker CCompressionMethodMode(): 69*f6dc9357SAndroid Build Coastguard Worker DefaultMethod_was_Inserted(false) 70*f6dc9357SAndroid Build Coastguard Worker , Filter_was_Inserted(false) 71*f6dc9357SAndroid Build Coastguard Worker , PasswordIsDefined(false) 72*f6dc9357SAndroid Build Coastguard Worker , MemoryUsageLimit_WasSet(false) 73*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_ST 74*f6dc9357SAndroid Build Coastguard Worker , NumThreads_WasForced(false) 75*f6dc9357SAndroid Build Coastguard Worker , MultiThreadMixer(true) 76*f6dc9357SAndroid Build Coastguard Worker , NumThreads(1) 77*f6dc9357SAndroid Build Coastguard Worker #endif 78*f6dc9357SAndroid Build Coastguard Worker , MemoryUsageLimit((UInt64)1 << 30) 79*f6dc9357SAndroid Build Coastguard Worker {} 80*f6dc9357SAndroid Build Coastguard Worker 81*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_CPP_IS_SUPPORTED_default 82*f6dc9357SAndroid Build Coastguard Worker CCompressionMethodMode(const CCompressionMethodMode &) = default; 83*f6dc9357SAndroid Build Coastguard Worker CCompressionMethodMode& operator =(const CCompressionMethodMode &) = default; 84*f6dc9357SAndroid Build Coastguard Worker #endif ~CCompressionMethodModeCCompressionMethodMode85*f6dc9357SAndroid Build Coastguard Worker ~CCompressionMethodMode() { Password.Wipe_and_Empty(); } 86*f6dc9357SAndroid Build Coastguard Worker }; 87*f6dc9357SAndroid Build Coastguard Worker 88*f6dc9357SAndroid Build Coastguard Worker }} 89*f6dc9357SAndroid Build Coastguard Worker 90*f6dc9357SAndroid Build Coastguard Worker #endif 91