1 // 7zCompressionMode.h 2 3 #ifndef __7Z_COMPRESSION_MODE_H 4 #define __7Z_COMPRESSION_MODE_H 5 6 #include "../../Common/MethodId.h" 7 #include "../../Common/MethodProps.h" 8 9 namespace NArchive { 10 namespace N7z { 11 12 struct CMethodFull: public CMethodProps 13 { 14 CMethodId Id; 15 UInt32 NumStreams; 16 int CodecIndex; 17 CMethodFullCMethodFull18 CMethodFull(): CodecIndex(-1) {} IsSimpleCoderCMethodFull19 bool IsSimpleCoder() const { return NumStreams == 1; } 20 }; 21 22 struct CBond2 23 { 24 UInt32 OutCoder; 25 UInt32 OutStream; 26 UInt32 InCoder; 27 }; 28 29 struct CCompressionMethodMode 30 { 31 /* 32 if (Bonds.Empty()), then default bonds must be created 33 if (Filter_was_Inserted) 34 { 35 Methods[0] is filter method 36 Bonds don't contain bonds for filter (these bonds must be created) 37 } 38 */ 39 40 CObjectVector<CMethodFull> Methods; 41 CRecordVector<CBond2> Bonds; 42 IsThereBond_to_CoderCCompressionMethodMode43 bool IsThereBond_to_Coder(unsigned coderIndex) const 44 { 45 FOR_VECTOR(i, Bonds) 46 if (Bonds[i].InCoder == coderIndex) 47 return true; 48 return false; 49 } 50 51 bool DefaultMethod_was_Inserted; 52 bool Filter_was_Inserted; 53 54 #ifndef _7ZIP_ST 55 UInt32 NumThreads; 56 bool MultiThreadMixer; 57 #endif 58 59 bool PasswordIsDefined; 60 UString Password; 61 IsEmptyCCompressionMethodMode62 bool IsEmpty() const { return (Methods.IsEmpty() && !PasswordIsDefined); } CCompressionMethodModeCCompressionMethodMode63 CCompressionMethodMode(): 64 DefaultMethod_was_Inserted(false), 65 Filter_was_Inserted(false), 66 PasswordIsDefined(false) 67 #ifndef _7ZIP_ST 68 , NumThreads(1) 69 , MultiThreadMixer(true) 70 #endif 71 {} 72 }; 73 74 }} 75 76 #endif 77