misc/libphysfs/lzma/Java/SevenZip/Compression/LZMA/Base.java
branchui-scaling
changeset 15283 c4fd2813b127
parent 13390 0135e64c6c66
parent 15279 7ab5cf405686
child 15663 d92eeb468dad
equal deleted inserted replaced
13390:0135e64c6c66 15283:c4fd2813b127
     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 }