home *** CD-ROM | disk | FTP | other *** search
- public class CompressTable {
- private int Table_Used = 0;
- public CompressTableElement[] String_TE = new CompressTableElement[4096];
- private static final int MaxTab = 4095;
- private static final int End_List = -1;
- private static final int Empty = -3;
- private static final int No_Prev = 32767;
-
- public int Get_Hash_Code(int var1, int var2) {
- int var3 = (var1 << 5 ^ var2) & 4095;
- int var5;
- if (!this.String_TE[var3].Used) {
- var5 = var3;
- } else {
- while(this.String_TE[var3].Next != -1) {
- var3 = this.String_TE[var3].Next;
- }
-
- int var4;
- for(var4 = var3 + 101 & 4095; this.String_TE[var4].Used; var4 &= 4095) {
- ++var4;
- }
-
- this.String_TE[var3].Next = var4;
- var5 = var4;
- }
-
- return var5;
- }
-
- public int Lookup_String(int var1, int var2) {
- boolean var4 = false;
- int var3 = (var1 << 5 ^ var2) & 4095;
- int var5 = -1;
-
- do {
- var4 = this.String_TE[var3].PrevChar == var1 && this.String_TE[var3].FollChar == var2;
- if (!var4) {
- var3 = this.String_TE[var3].Next;
- }
- } while(!var4 && var3 != -1);
-
- if (var4) {
- var5 = var3;
- }
-
- return var5;
- }
-
- public CompressTable() {
- int var1 = 4096;
-
- while(true) {
- --var1;
- if (var1 < 0) {
- var1 = 0;
-
- do {
- this.Make_Table_Element(32767, var1);
- ++var1;
- } while(var1 < 256);
-
- return;
- }
-
- this.String_TE[var1] = new CompressTableElement();
- }
- }
-
- public void Make_Table_Element(int var1, int var2) {
- if (this.Table_Used <= 4095) {
- this.String_TE[this.Get_Hash_Code(var1, var2)].Set_Element(var1, var2, -1);
- ++this.Table_Used;
- }
-
- }
- }
-