home *** CD-ROM | disk | FTP | other *** search
/ Tutto per Internet / Internet.iso / soft95 / Java / espints / espinst.exe / classes / espresso / Name.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-02-28  |  2.9 KB  |  162 lines

  1. package espresso;
  2.  
  3. class Name {
  4.    // $FF: renamed from: nc int
  5.    private static int field_0 = 0;
  6.    private static byte[] names = new byte[131072];
  7.    private static Name[] hashtable = new Name['ΦÇÇ'];
  8.    private static final int NAME_SIZE = 131072;
  9.    private static final int HASH_MASK = 32767;
  10.    private static final int HASH_SIZE = 32768;
  11.    Name next;
  12.    int len;
  13.    int index;
  14.  
  15.    public static Name concat(Name[] var0) {
  16.       int var1 = 0;
  17.  
  18.       for(int var2 = 0; var2 < var0.length; ++var2) {
  19.          var1 += var0[var2].len;
  20.       }
  21.  
  22.       byte[] var3 = new byte[var1];
  23.       var1 = 0;
  24.  
  25.       for(int var4 = 0; var4 < var0.length; ++var4) {
  26.          var0[var4].copyAscii(var3, var1);
  27.          var1 += var0[var4].len;
  28.       }
  29.  
  30.       return fromAscii(var3, 0, var1);
  31.    }
  32.  
  33.    public Name append(Name var1) {
  34.       byte[] var2 = new byte[this.len + var1.len];
  35.       this.copyAscii(var2, 0);
  36.       var1.copyAscii(var2, this.len);
  37.       return fromAscii(var2, 0, var2.length);
  38.    }
  39.  
  40.    public Name subName(int var1, int var2) {
  41.       byte[] var3 = new byte[var2 - var1];
  42.       System.arraycopy(names, this.index + var1, var3, 0, var2 - var1);
  43.       return fromAscii(var3, 0, var3.length);
  44.    }
  45.  
  46.    public boolean startsWith(Name var1) {
  47.       int var2;
  48.       for(var2 = 0; var2 < var1.len && var2 < this.len && names[this.index + var2] == names[var1.index + var2]; ++var2) {
  49.       }
  50.  
  51.       return var2 == var1.len;
  52.    }
  53.  
  54.    public int lastPos(byte var1) {
  55.       int var2;
  56.       for(var2 = this.len - 1; var2 >= 0 && names[this.index + var2] != var1; --var2) {
  57.       }
  58.  
  59.       return var2;
  60.    }
  61.  
  62.    public int pos(byte var1) {
  63.       int var2;
  64.       for(var2 = 0; var2 < this.len && names[this.index + var2] != var1; ++var2) {
  65.       }
  66.  
  67.       return var2;
  68.    }
  69.  
  70.    public byte sub(int var1) {
  71.       return names[this.index + var1];
  72.    }
  73.  
  74.    public boolean equals(Object var1) {
  75.       if (var1 instanceof Name) {
  76.          return this.index == ((Name)var1).index;
  77.       } else {
  78.          return false;
  79.       }
  80.    }
  81.  
  82.    public int hashCode() {
  83.       return this.index;
  84.    }
  85.  
  86.    public String toString() {
  87.       return Convert.ascii2string(names, this.index, this.len);
  88.    }
  89.  
  90.    public byte[] toSource() {
  91.       return Convert.string2source(this.toString());
  92.    }
  93.  
  94.    public byte[] toAscii() {
  95.       byte[] var1 = new byte[this.len];
  96.       System.arraycopy(names, this.index, var1, 0, this.len);
  97.       return var1;
  98.    }
  99.  
  100.    public void copyAscii(byte[] var1, int var2) {
  101.       System.arraycopy(names, this.index, var1, var2, this.len);
  102.    }
  103.  
  104.    public static Name fromString(String var0) {
  105.       byte[] var1 = Convert.string2source(var0);
  106.       return fromSource(var1, 0, var1.length);
  107.    }
  108.  
  109.    public static Name fromSource(byte[] var0, int var1, int var2) {
  110.       byte[] var3 = new byte[var2 * 2];
  111.       int var4 = Convert.source2ascii(var0, var1, var2, var3);
  112.       return fromAscii(var3, 0, var4);
  113.    }
  114.  
  115.    public static Name fromAscii(byte[] var0, int var1, int var2) {
  116.       int var3 = hashValue(var0, var1, var2) & 32767;
  117.  
  118.       Name var4;
  119.       for(var4 = hashtable[var3]; var4 != null && (var4.len != var2 || !equals(var4.index, var0, var1, var2)); var4 = var4.next) {
  120.       }
  121.  
  122.       if (var4 == null) {
  123.          var4 = new Name();
  124.          var4.index = field_0;
  125.          var4.len = var2;
  126.          var4.next = hashtable[var3];
  127.          hashtable[var3] = var4;
  128.  
  129.          for(int var5 = 0; var5 < var2; ++var5) {
  130.             if (field_0 == names.length) {
  131.                byte[] var6 = new byte[names.length * 2];
  132.                System.arraycopy(names, 0, var6, 0, names.length);
  133.                names = var6;
  134.             }
  135.  
  136.             names[field_0++] = var0[var1 + var5];
  137.          }
  138.  
  139.          if (var2 == 0) {
  140.             ++field_0;
  141.          }
  142.       }
  143.  
  144.       return var4;
  145.    }
  146.  
  147.    private static boolean equals(int var0, byte[] var1, int var2, int var3) {
  148.       int var4;
  149.       for(var4 = 0; var4 < var3 && names[var0 + var4] == var1[var2 + var4]; ++var4) {
  150.       }
  151.  
  152.       return var4 == var3;
  153.    }
  154.  
  155.    private static int hashValue(byte[] var0, int var1, int var2) {
  156.       return var2 > 0 ? var2 * 68921 + var0[var1] * 1681 + var0[var1 + var2 - 1] * 41 + var0[var1 + (var2 >> 1)] : 0;
  157.    }
  158.  
  159.    public Name() {
  160.    }
  161. }
  162.