1370b324cSopenharmony_ci// 7zCompressionMode.h 2370b324cSopenharmony_ci 3370b324cSopenharmony_ci#ifndef ZIP7_INC_7Z_COMPRESSION_MODE_H 4370b324cSopenharmony_ci#define ZIP7_INC_7Z_COMPRESSION_MODE_H 5370b324cSopenharmony_ci 6370b324cSopenharmony_ci#include "../../Common/MethodId.h" 7370b324cSopenharmony_ci#include "../../Common/MethodProps.h" 8370b324cSopenharmony_ci 9370b324cSopenharmony_cinamespace NArchive { 10370b324cSopenharmony_cinamespace N7z { 11370b324cSopenharmony_ci 12370b324cSopenharmony_cistruct CMethodFull: public CMethodProps 13370b324cSopenharmony_ci{ 14370b324cSopenharmony_ci CMethodId Id; 15370b324cSopenharmony_ci UInt32 NumStreams; 16370b324cSopenharmony_ci int CodecIndex; 17370b324cSopenharmony_ci UInt32 NumThreads; 18370b324cSopenharmony_ci bool Set_NumThreads; 19370b324cSopenharmony_ci 20370b324cSopenharmony_ci CMethodFull(): CodecIndex(-1), NumThreads(1), Set_NumThreads(false) {} 21370b324cSopenharmony_ci bool IsSimpleCoder() const { return NumStreams == 1; } 22370b324cSopenharmony_ci}; 23370b324cSopenharmony_ci 24370b324cSopenharmony_cistruct CBond2 25370b324cSopenharmony_ci{ 26370b324cSopenharmony_ci UInt32 OutCoder; 27370b324cSopenharmony_ci UInt32 OutStream; 28370b324cSopenharmony_ci UInt32 InCoder; 29370b324cSopenharmony_ci}; 30370b324cSopenharmony_ci 31370b324cSopenharmony_cistruct CCompressionMethodMode 32370b324cSopenharmony_ci{ 33370b324cSopenharmony_ci /* 34370b324cSopenharmony_ci if (Bonds.Empty()), then default bonds must be created 35370b324cSopenharmony_ci if (Filter_was_Inserted) 36370b324cSopenharmony_ci { 37370b324cSopenharmony_ci Methods[0] is filter method 38370b324cSopenharmony_ci Bonds don't contain bonds for filter (these bonds must be created) 39370b324cSopenharmony_ci } 40370b324cSopenharmony_ci */ 41370b324cSopenharmony_ci 42370b324cSopenharmony_ci CObjectVector<CMethodFull> Methods; 43370b324cSopenharmony_ci CRecordVector<CBond2> Bonds; 44370b324cSopenharmony_ci 45370b324cSopenharmony_ci bool IsThereBond_to_Coder(unsigned coderIndex) const 46370b324cSopenharmony_ci { 47370b324cSopenharmony_ci FOR_VECTOR(i, Bonds) 48370b324cSopenharmony_ci if (Bonds[i].InCoder == coderIndex) 49370b324cSopenharmony_ci return true; 50370b324cSopenharmony_ci return false; 51370b324cSopenharmony_ci } 52370b324cSopenharmony_ci 53370b324cSopenharmony_ci bool DefaultMethod_was_Inserted; 54370b324cSopenharmony_ci bool Filter_was_Inserted; 55370b324cSopenharmony_ci 56370b324cSopenharmony_ci #ifndef Z7_ST 57370b324cSopenharmony_ci UInt32 NumThreads; 58370b324cSopenharmony_ci bool NumThreads_WasForced; 59370b324cSopenharmony_ci bool MultiThreadMixer; 60370b324cSopenharmony_ci #endif 61370b324cSopenharmony_ci 62370b324cSopenharmony_ci UInt64 MemoryUsageLimit; 63370b324cSopenharmony_ci bool MemoryUsageLimit_WasSet; 64370b324cSopenharmony_ci 65370b324cSopenharmony_ci bool PasswordIsDefined; 66370b324cSopenharmony_ci UString Password; // _Wipe 67370b324cSopenharmony_ci 68370b324cSopenharmony_ci bool IsEmpty() const { return (Methods.IsEmpty() && !PasswordIsDefined); } 69370b324cSopenharmony_ci CCompressionMethodMode(): 70370b324cSopenharmony_ci DefaultMethod_was_Inserted(false) 71370b324cSopenharmony_ci , Filter_was_Inserted(false) 72370b324cSopenharmony_ci #ifndef Z7_ST 73370b324cSopenharmony_ci , NumThreads(1) 74370b324cSopenharmony_ci , NumThreads_WasForced(false) 75370b324cSopenharmony_ci , MultiThreadMixer(true) 76370b324cSopenharmony_ci #endif 77370b324cSopenharmony_ci , MemoryUsageLimit((UInt64)1 << 30) 78370b324cSopenharmony_ci , MemoryUsageLimit_WasSet(false) 79370b324cSopenharmony_ci , PasswordIsDefined(false) 80370b324cSopenharmony_ci {} 81370b324cSopenharmony_ci 82370b324cSopenharmony_ci#ifdef Z7_CPP_IS_SUPPORTED_default 83370b324cSopenharmony_ci CCompressionMethodMode(const CCompressionMethodMode &) = default; 84370b324cSopenharmony_ci CCompressionMethodMode& operator =(const CCompressionMethodMode &) = default; 85370b324cSopenharmony_ci#endif 86370b324cSopenharmony_ci ~CCompressionMethodMode() { Password.Wipe_and_Empty(); } 87370b324cSopenharmony_ci}; 88370b324cSopenharmony_ci 89370b324cSopenharmony_ci}} 90370b324cSopenharmony_ci 91370b324cSopenharmony_ci#endif 92