You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
1.5 KiB
77 lines
1.5 KiB
4 months ago
|
// 7zCompressionMode.h
|
||
|
|
||
|
#ifndef __7Z_COMPRESSION_MODE_H
|
||
|
#define __7Z_COMPRESSION_MODE_H
|
||
|
|
||
|
#include "../../Common/MethodId.h"
|
||
|
#include "../../Common/MethodProps.h"
|
||
|
|
||
|
namespace NArchive {
|
||
|
namespace N7z {
|
||
|
|
||
|
struct CMethodFull: public CMethodProps
|
||
|
{
|
||
|
CMethodId Id;
|
||
|
UInt32 NumStreams;
|
||
|
int CodecIndex;
|
||
|
|
||
|
CMethodFull(): CodecIndex(-1) {}
|
||
|
bool IsSimpleCoder() const { return NumStreams == 1; }
|
||
|
};
|
||
|
|
||
|
struct CBond2
|
||
|
{
|
||
|
UInt32 OutCoder;
|
||
|
UInt32 OutStream;
|
||
|
UInt32 InCoder;
|
||
|
};
|
||
|
|
||
|
struct CCompressionMethodMode
|
||
|
{
|
||
|
/*
|
||
|
if (Bonds.Empty()), then default bonds must be created
|
||
|
if (Filter_was_Inserted)
|
||
|
{
|
||
|
Methods[0] is filter method
|
||
|
Bonds don't contain bonds for filter (these bonds must be created)
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
CObjectVector<CMethodFull> Methods;
|
||
|
CRecordVector<CBond2> Bonds;
|
||
|
|
||
|
bool IsThereBond_to_Coder(unsigned coderIndex) const
|
||
|
{
|
||
|
FOR_VECTOR(i, Bonds)
|
||
|
if (Bonds[i].InCoder == coderIndex)
|
||
|
return true;
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
bool DefaultMethod_was_Inserted;
|
||
|
bool Filter_was_Inserted;
|
||
|
|
||
|
#ifndef _7ZIP_ST
|
||
|
UInt32 NumThreads;
|
||
|
bool MultiThreadMixer;
|
||
|
#endif
|
||
|
|
||
|
bool PasswordIsDefined;
|
||
|
UString Password;
|
||
|
|
||
|
bool IsEmpty() const { return (Methods.IsEmpty() && !PasswordIsDefined); }
|
||
|
CCompressionMethodMode():
|
||
|
DefaultMethod_was_Inserted(false),
|
||
|
Filter_was_Inserted(false),
|
||
|
PasswordIsDefined(false)
|
||
|
#ifndef _7ZIP_ST
|
||
|
, NumThreads(1)
|
||
|
, MultiThreadMixer(true)
|
||
|
#endif
|
||
|
{}
|
||
|
};
|
||
|
|
||
|
}}
|
||
|
|
||
|
#endif
|