home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / FREI / TOC42.EXE / CompressTable.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-08-29  |  1014 b   |  78 lines

  1. public class CompressTable {
  2.    private int Table_Used = 0;
  3.    public CompressTableElement[] String_TE = new CompressTableElement[4096];
  4.    private static final int MaxTab = 4095;
  5.    private static final int End_List = -1;
  6.    private static final int Empty = -3;
  7.    private static final int No_Prev = 32767;
  8.  
  9.    public int Get_Hash_Code(int var1, int var2) {
  10.       int var3 = (var1 << 5 ^ var2) & 4095;
  11.       int var5;
  12.       if (!this.String_TE[var3].Used) {
  13.          var5 = var3;
  14.       } else {
  15.          while(this.String_TE[var3].Next != -1) {
  16.             var3 = this.String_TE[var3].Next;
  17.          }
  18.  
  19.          int var4;
  20.          for(var4 = var3 + 101 & 4095; this.String_TE[var4].Used; var4 &= 4095) {
  21.             ++var4;
  22.          }
  23.  
  24.          this.String_TE[var3].Next = var4;
  25.          var5 = var4;
  26.       }
  27.  
  28.       return var5;
  29.    }
  30.  
  31.    public int Lookup_String(int var1, int var2) {
  32.       boolean var4 = false;
  33.       int var3 = (var1 << 5 ^ var2) & 4095;
  34.       int var5 = -1;
  35.  
  36.       do {
  37.          var4 = this.String_TE[var3].PrevChar == var1 && this.String_TE[var3].FollChar == var2;
  38.          if (!var4) {
  39.             var3 = this.String_TE[var3].Next;
  40.          }
  41.       } while(!var4 && var3 != -1);
  42.  
  43.       if (var4) {
  44.          var5 = var3;
  45.       }
  46.  
  47.       return var5;
  48.    }
  49.  
  50.    public CompressTable() {
  51.       int var1 = 4096;
  52.  
  53.       while(true) {
  54.          --var1;
  55.          if (var1 < 0) {
  56.             var1 = 0;
  57.  
  58.             do {
  59.                this.Make_Table_Element(32767, var1);
  60.                ++var1;
  61.             } while(var1 < 256);
  62.  
  63.             return;
  64.          }
  65.  
  66.          this.String_TE[var1] = new CompressTableElement();
  67.       }
  68.    }
  69.  
  70.    public void Make_Table_Element(int var1, int var2) {
  71.       if (this.Table_Used <= 4095) {
  72.          this.String_TE[this.Get_Hash_Code(var1, var2)].Set_Element(var1, var2, -1);
  73.          ++this.Table_Used;
  74.       }
  75.  
  76.    }
  77. }
  78.