1370b324cSopenharmony_ci// Base.java
2370b324cSopenharmony_ci
3370b324cSopenharmony_cipackage SevenZip.Compression.LZMA;
4370b324cSopenharmony_ci
5370b324cSopenharmony_cipublic class Base
6370b324cSopenharmony_ci{
7370b324cSopenharmony_ci	public static final int kNumRepDistances = 4;
8370b324cSopenharmony_ci	public static final int kNumStates = 12;
9370b324cSopenharmony_ci
10370b324cSopenharmony_ci	public static final int StateInit()
11370b324cSopenharmony_ci	{
12370b324cSopenharmony_ci		return 0;
13370b324cSopenharmony_ci	}
14370b324cSopenharmony_ci
15370b324cSopenharmony_ci	public static final int StateUpdateChar(int index)
16370b324cSopenharmony_ci	{
17370b324cSopenharmony_ci		if (index < 4)
18370b324cSopenharmony_ci			return 0;
19370b324cSopenharmony_ci		if (index < 10)
20370b324cSopenharmony_ci			return index - 3;
21370b324cSopenharmony_ci		return index - 6;
22370b324cSopenharmony_ci	}
23370b324cSopenharmony_ci
24370b324cSopenharmony_ci	public static final int StateUpdateMatch(int index)
25370b324cSopenharmony_ci	{
26370b324cSopenharmony_ci		return (index < 7 ? 7 : 10);
27370b324cSopenharmony_ci	}
28370b324cSopenharmony_ci
29370b324cSopenharmony_ci	public static final int StateUpdateRep(int index)
30370b324cSopenharmony_ci	{
31370b324cSopenharmony_ci		return (index < 7 ? 8 : 11);
32370b324cSopenharmony_ci	}
33370b324cSopenharmony_ci
34370b324cSopenharmony_ci	public static final int StateUpdateShortRep(int index)
35370b324cSopenharmony_ci	{
36370b324cSopenharmony_ci		return (index < 7 ? 9 : 11);
37370b324cSopenharmony_ci	}
38370b324cSopenharmony_ci
39370b324cSopenharmony_ci	public static final boolean StateIsCharState(int index)
40370b324cSopenharmony_ci	{
41370b324cSopenharmony_ci		return index < 7;
42370b324cSopenharmony_ci	}
43370b324cSopenharmony_ci
44370b324cSopenharmony_ci	public static final int kNumPosSlotBits = 6;
45370b324cSopenharmony_ci	public static final int kDicLogSizeMin = 0;
46370b324cSopenharmony_ci	// public static final int kDicLogSizeMax = 28;
47370b324cSopenharmony_ci	// public static final int kDistTableSizeMax = kDicLogSizeMax * 2;
48370b324cSopenharmony_ci
49370b324cSopenharmony_ci	public static final int kNumLenToPosStatesBits = 2; // it's for speed optimization
50370b324cSopenharmony_ci	public static final int kNumLenToPosStates = 1 << kNumLenToPosStatesBits;
51370b324cSopenharmony_ci
52370b324cSopenharmony_ci	public static final int kMatchMinLen = 2;
53370b324cSopenharmony_ci
54370b324cSopenharmony_ci	public static final int GetLenToPosState(int len)
55370b324cSopenharmony_ci	{
56370b324cSopenharmony_ci		len -= kMatchMinLen;
57370b324cSopenharmony_ci		if (len < kNumLenToPosStates)
58370b324cSopenharmony_ci			return len;
59370b324cSopenharmony_ci		return (int)(kNumLenToPosStates - 1);
60370b324cSopenharmony_ci	}
61370b324cSopenharmony_ci
62370b324cSopenharmony_ci	public static final int kNumAlignBits = 4;
63370b324cSopenharmony_ci	public static final int kAlignTableSize = 1 << kNumAlignBits;
64370b324cSopenharmony_ci	public static final int kAlignMask = (kAlignTableSize - 1);
65370b324cSopenharmony_ci
66370b324cSopenharmony_ci	public static final int kStartPosModelIndex = 4;
67370b324cSopenharmony_ci	public static final int kEndPosModelIndex = 14;
68370b324cSopenharmony_ci	public static final int kNumPosModels = kEndPosModelIndex - kStartPosModelIndex;
69370b324cSopenharmony_ci
70370b324cSopenharmony_ci	public static final  int kNumFullDistances = 1 << (kEndPosModelIndex / 2);
71370b324cSopenharmony_ci
72370b324cSopenharmony_ci	public static final  int kNumLitPosStatesBitsEncodingMax = 4;
73370b324cSopenharmony_ci	public static final  int kNumLitContextBitsMax = 8;
74370b324cSopenharmony_ci
75370b324cSopenharmony_ci	public static final  int kNumPosStatesBitsMax = 4;
76370b324cSopenharmony_ci	public static final  int kNumPosStatesMax = (1 << kNumPosStatesBitsMax);
77370b324cSopenharmony_ci	public static final  int kNumPosStatesBitsEncodingMax = 4;
78370b324cSopenharmony_ci	public static final  int kNumPosStatesEncodingMax = (1 << kNumPosStatesBitsEncodingMax);
79370b324cSopenharmony_ci
80370b324cSopenharmony_ci	public static final  int kNumLowLenBits = 3;
81370b324cSopenharmony_ci	public static final  int kNumMidLenBits = 3;
82370b324cSopenharmony_ci	public static final  int kNumHighLenBits = 8;
83370b324cSopenharmony_ci	public static final  int kNumLowLenSymbols = 1 << kNumLowLenBits;
84370b324cSopenharmony_ci	public static final  int kNumMidLenSymbols = 1 << kNumMidLenBits;
85370b324cSopenharmony_ci	public static final  int kNumLenSymbols = kNumLowLenSymbols + kNumMidLenSymbols +
86370b324cSopenharmony_ci			(1 << kNumHighLenBits);
87370b324cSopenharmony_ci	public static final  int kMatchMaxLen = kMatchMinLen + kNumLenSymbols - 1;
88370b324cSopenharmony_ci}
89