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