Base.java revision baa3858d3f5d128a5c8466b700098109edcad5f2
1// Base.java
2
3package SevenZip.Compression.LZMA;
4
5public 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}
89