mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-07 07:14:56 -06:00
62 lines
1.6 KiB
C++
62 lines
1.6 KiB
C++
// Lzx.h
|
|
|
|
#ifndef __COMPRESS_LZX_H
|
|
#define __COMPRESS_LZX_H
|
|
|
|
namespace NCompress {
|
|
namespace NLzx {
|
|
|
|
const unsigned kNumHuffmanBits = 16;
|
|
const UInt32 kNumRepDistances = 3;
|
|
|
|
const UInt32 kNumLenSlots = 8;
|
|
const UInt32 kMatchMinLen = 2;
|
|
const UInt32 kNumLenSymbols = 249;
|
|
const UInt32 kMatchMaxLen = kMatchMinLen + (kNumLenSlots - 1) + kNumLenSymbols - 1;
|
|
|
|
const unsigned kNumAlignBits = 3;
|
|
const UInt32 kAlignTableSize = 1 << kNumAlignBits;
|
|
|
|
const UInt32 kNumPosSlots = 50;
|
|
const UInt32 kNumPosLenSlots = kNumPosSlots * kNumLenSlots;
|
|
|
|
const UInt32 kMainTableSize = 256 + kNumPosLenSlots;
|
|
const UInt32 kLevelTableSize = 20;
|
|
const UInt32 kMaxTableSize = kMainTableSize;
|
|
|
|
const unsigned kNumBlockTypeBits = 3;
|
|
const unsigned kBlockTypeVerbatim = 1;
|
|
const unsigned kBlockTypeAligned = 2;
|
|
const unsigned kBlockTypeUncompressed = 3;
|
|
|
|
const unsigned kUncompressedBlockSizeNumBits = 24;
|
|
|
|
const unsigned kNumBitsForPreTreeLevel = 4;
|
|
|
|
const unsigned kLevelSymbolZeros = 17;
|
|
const unsigned kLevelSymbolZerosBig = 18;
|
|
const unsigned kLevelSymbolSame = 19;
|
|
|
|
const unsigned kLevelSymbolZerosStartValue = 4;
|
|
const unsigned kLevelSymbolZerosNumBits = 4;
|
|
|
|
const unsigned kLevelSymbolZerosBigStartValue = kLevelSymbolZerosStartValue +
|
|
(1 << kLevelSymbolZerosNumBits);
|
|
const unsigned kLevelSymbolZerosBigNumBits = 5;
|
|
|
|
const unsigned kLevelSymbolSameNumBits = 1;
|
|
const unsigned kLevelSymbolSameStartValue = 4;
|
|
|
|
const unsigned kNumBitsForAlignLevel = 3;
|
|
|
|
const unsigned kNumDictionaryBitsMin = 15;
|
|
const unsigned kNumDictionaryBitsMax = 21;
|
|
const UInt32 kDictionarySizeMax = (1 << kNumDictionaryBitsMax);
|
|
|
|
const unsigned kNumLinearPosSlotBits = 17;
|
|
const UInt32 kNumPowerPosSlots = 0x26;
|
|
|
|
}}
|
|
|
|
#endif
|