| // 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 |