1 | // Base.java
|
---|
2 |
|
---|
3 | package SevenZip.Compression.LZMA;
|
---|
4 |
|
---|
5 | public class Base
|
---|
6 | {
|
---|
7 | public static final int kNumRepDistances = 4;
|
---|
8 | public static final int kNumStates = 12;
|
---|
9 |
|
---|
10 | public static final int StateInit()
|
---|
11 | {
|
---|
12 | return 0;
|
---|
13 | }
|
---|
14 |
|
---|
15 | public static final int StateUpdateChar(int index)
|
---|
16 | {
|
---|
17 | if (index < 4)
|
---|
18 | return 0;
|
---|
19 | if (index < 10)
|
---|
20 | return index - 3;
|
---|
21 | return index - 6;
|
---|
22 | }
|
---|
23 |
|
---|
24 | public static final int StateUpdateMatch(int index)
|
---|
25 | {
|
---|
26 | return (index < 7 ? 7 : 10);
|
---|
27 | }
|
---|
28 |
|
---|
29 | public static final int StateUpdateRep(int index)
|
---|
30 | {
|
---|
31 | return (index < 7 ? 8 : 11);
|
---|
32 | }
|
---|
33 |
|
---|
34 | public static final int StateUpdateShortRep(int index)
|
---|
35 | {
|
---|
36 | return (index < 7 ? 9 : 11);
|
---|
37 | }
|
---|
38 |
|
---|
39 | public static final boolean StateIsCharState(int index)
|
---|
40 | {
|
---|
41 | return index < 7;
|
---|
42 | }
|
---|
43 |
|
---|
44 | public static final int kNumPosSlotBits = 6;
|
---|
45 | public static final int kDicLogSizeMin = 0;
|
---|
46 | // public static final int kDicLogSizeMax = 28;
|
---|
47 | // public static final int kDistTableSizeMax = kDicLogSizeMax * 2;
|
---|
48 |
|
---|
49 | public static final int kNumLenToPosStatesBits = 2; // it's for speed optimization
|
---|
50 | public static final int kNumLenToPosStates = 1 << kNumLenToPosStatesBits;
|
---|
51 |
|
---|
52 | public static final int kMatchMinLen = 2;
|
---|
53 |
|
---|
54 | public static final int GetLenToPosState(int len)
|
---|
55 | {
|
---|
56 | len -= kMatchMinLen;
|
---|
57 | if (len < kNumLenToPosStates)
|
---|
58 | return len;
|
---|
59 | return (int)(kNumLenToPosStates - 1);
|
---|
60 | }
|
---|
61 |
|
---|
62 | public static final int kNumAlignBits = 4;
|
---|
63 | public static final int kAlignTableSize = 1 << kNumAlignBits;
|
---|
64 | public static final int kAlignMask = (kAlignTableSize - 1);
|
---|
65 |
|
---|
66 | public static final int kStartPosModelIndex = 4;
|
---|
67 | public static final int kEndPosModelIndex = 14;
|
---|
68 | public static final int kNumPosModels = kEndPosModelIndex - kStartPosModelIndex;
|
---|
69 |
|
---|
70 | public static final int kNumFullDistances = 1 << (kEndPosModelIndex / 2);
|
---|
71 |
|
---|
72 | public static final int kNumLitPosStatesBitsEncodingMax = 4;
|
---|
73 | public static final int kNumLitContextBitsMax = 8;
|
---|
74 |
|
---|
75 | public static final int kNumPosStatesBitsMax = 4;
|
---|
76 | public static final int kNumPosStatesMax = (1 << kNumPosStatesBitsMax);
|
---|
77 | public static final int kNumPosStatesBitsEncodingMax = 4;
|
---|
78 | public static final int kNumPosStatesEncodingMax = (1 << kNumPosStatesBitsEncodingMax);
|
---|
79 |
|
---|
80 | public static final int kNumLowLenBits = 3;
|
---|
81 | public static final int kNumMidLenBits = 3;
|
---|
82 | public static final int kNumHighLenBits = 8;
|
---|
83 | public static final int kNumLowLenSymbols = 1 << kNumLowLenBits;
|
---|
84 | public static final int kNumMidLenSymbols = 1 << kNumMidLenBits;
|
---|
85 | public static final int kNumLenSymbols = kNumLowLenSymbols + kNumMidLenSymbols +
|
---|
86 | (1 << kNumHighLenBits);
|
---|
87 | public static final int kMatchMaxLen = kMatchMinLen + kNumLenSymbols - 1;
|
---|
88 | }
|
---|