xref: /aosp_15_r20/external/lzma/CPP/7zip/Compress/Lzx.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // Lzx.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_COMPRESS_LZX_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_COMPRESS_LZX_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MyTypes.h"
7*f6dc9357SAndroid Build Coastguard Worker 
8*f6dc9357SAndroid Build Coastguard Worker namespace NCompress {
9*f6dc9357SAndroid Build Coastguard Worker namespace NLzx {
10*f6dc9357SAndroid Build Coastguard Worker 
11*f6dc9357SAndroid Build Coastguard Worker const unsigned kBlockType_NumBits = 3;
12*f6dc9357SAndroid Build Coastguard Worker const unsigned kBlockType_Verbatim = 1;
13*f6dc9357SAndroid Build Coastguard Worker const unsigned kBlockType_Aligned = 2;
14*f6dc9357SAndroid Build Coastguard Worker const unsigned kBlockType_Uncompressed = 3;
15*f6dc9357SAndroid Build Coastguard Worker 
16*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumHuffmanBits = 16;
17*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumReps = 3;
18*f6dc9357SAndroid Build Coastguard Worker 
19*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumLenSlots = 8;
20*f6dc9357SAndroid Build Coastguard Worker const unsigned kMatchMinLen = 2;
21*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumLenSymbols = 249;
22*f6dc9357SAndroid Build Coastguard Worker const unsigned kMatchMaxLen = kMatchMinLen + (kNumLenSlots - 1) + kNumLenSymbols - 1;
23*f6dc9357SAndroid Build Coastguard Worker 
24*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumAlignLevelBits = 3;
25*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumAlignBits = 3;
26*f6dc9357SAndroid Build Coastguard Worker const unsigned kAlignTableSize = 1 << kNumAlignBits;
27*f6dc9357SAndroid Build Coastguard Worker 
28*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumPosSlots = 50;
29*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumPosLenSlots = kNumPosSlots * kNumLenSlots;
30*f6dc9357SAndroid Build Coastguard Worker 
31*f6dc9357SAndroid Build Coastguard Worker const unsigned kMainTableSize = 256 + kNumPosLenSlots;
32*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelTableSize = 20;
33*f6dc9357SAndroid Build Coastguard Worker const unsigned kMaxTableSize = kMainTableSize;
34*f6dc9357SAndroid Build Coastguard Worker 
35*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumLevelBits = 4;
36*f6dc9357SAndroid Build Coastguard Worker 
37*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Zero1 = 17;
38*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Zero2 = 18;
39*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Same = 19;
40*f6dc9357SAndroid Build Coastguard Worker 
41*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Zero1_Start = 4;
42*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Zero1_NumBits = 4;
43*f6dc9357SAndroid Build Coastguard Worker 
44*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Zero2_Start = kLevelSym_Zero1_Start + (1 << kLevelSym_Zero1_NumBits);
45*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Zero2_NumBits = 5;
46*f6dc9357SAndroid Build Coastguard Worker 
47*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Same_NumBits = 1;
48*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Same_Start = 4;
49*f6dc9357SAndroid Build Coastguard Worker 
50*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumDictBits_Min = 15;
51*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumDictBits_Max = 21;
52*f6dc9357SAndroid Build Coastguard Worker const UInt32 kDictSize_Max = (UInt32)1 << kNumDictBits_Max;
53*f6dc9357SAndroid Build Coastguard Worker 
54*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumLinearPosSlotBits = 17;
55*f6dc9357SAndroid Build Coastguard Worker // const unsigned kNumPowerPosSlots = 38;
56*f6dc9357SAndroid Build Coastguard Worker // const unsigned kNumPowerPosSlots = (kNumLinearPosSlotBits + 1) * 2; // non-including two first linear slots.
57*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumPowerPosSlots = (kNumLinearPosSlotBits + 2) * 2; // including two first linear slots.
58*f6dc9357SAndroid Build Coastguard Worker 
59*f6dc9357SAndroid Build Coastguard Worker }}
60*f6dc9357SAndroid Build Coastguard Worker 
61*f6dc9357SAndroid Build Coastguard Worker #endif
62