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