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 IsSimpleCoderCMethodFull17 bool IsSimpleCoder() const { return NumStreams == 1; } 18 }; 19 20 struct CBond2 21 { 22 UInt32 OutCoder; 23 UInt32 OutStream; 24 UInt32 InCoder; 25 }; 26 27 struct CCompressionMethodMode 28 { 29 /* 30 if (Bonds.Empty()), then default bonds must be created 31 if (Filter_was_Inserted) 32 { 33 Methods[0] is filter method 34 Bonds don't contain bonds for filter (these bonds must be created) 35 } 36 */ 37 38 CObjectVector<CMethodFull> Methods; 39 CRecordVector<CBond2> Bonds; 40 IsThereBond_to_CoderCCompressionMethodMode41 bool IsThereBond_to_Coder(unsigned coderIndex) const 42 { 43 FOR_VECTOR(i, Bonds) 44 if (Bonds[i].InCoder == coderIndex) 45 return true; 46 return false; 47 } 48 49 bool DefaultMethod_was_Inserted; 50 bool Filter_was_Inserted; 51 52 #ifndef _7ZIP_ST 53 UInt32 NumThreads; 54 bool MultiThreadMixer; 55 #endif 56 57 bool PasswordIsDefined; 58 UString Password; 59 IsEmptyCCompressionMethodMode60 bool IsEmpty() const { return (Methods.IsEmpty() && !PasswordIsDefined); } CCompressionMethodModeCCompressionMethodMode61 CCompressionMethodMode(): 62 DefaultMethod_was_Inserted(false), 63 Filter_was_Inserted(false), 64 PasswordIsDefined(false) 65 #ifndef _7ZIP_ST 66 , NumThreads(1) 67 , MultiThreadMixer(true) 68 #endif 69 {} 70 }; 71 72 }} 73 74 #endif 75