home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / tools / java / Identifier.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  3.2 KB  |  130 lines

  1. package sun.tools.java;
  2.  
  3. import java.util.Hashtable;
  4.  
  5. public final class Identifier implements Constants {
  6.    static Hashtable hash = new Hashtable(3001, 0.5F);
  7.    String name;
  8.    Object value;
  9.    private int ipos;
  10.    public static final char INNERCLASS_PREFIX = ' ';
  11.  
  12.    private Identifier(String var1) {
  13.       this.name = var1;
  14.       this.ipos = var1.indexOf(32);
  15.    }
  16.  
  17.    int getType() {
  18.       return this.value != null && this.value instanceof Integer ? (Integer)this.value : 60;
  19.    }
  20.  
  21.    void setType(int var1) {
  22.       this.value = new Integer(var1);
  23.    }
  24.  
  25.    public static synchronized Identifier lookup(String var0) {
  26.       Identifier var1 = (Identifier)hash.get(var0);
  27.       if (var1 == null) {
  28.          hash.put(var0, var1 = new Identifier(var0));
  29.       }
  30.  
  31.       return var1;
  32.    }
  33.  
  34.    public static Identifier lookup(Identifier var0, Identifier var1) {
  35.       if (var0 == Constants.idNull) {
  36.          return var1;
  37.       } else if (var0.name.charAt(var0.name.length() - 1) == ' ') {
  38.          return lookup(var0.name + var1.name);
  39.       } else {
  40.          Identifier var2 = lookup(var0 + "." + var1);
  41.          if (!var1.isQualified() && !var0.isInner()) {
  42.             var2.value = var0;
  43.          }
  44.  
  45.          return var2;
  46.       }
  47.    }
  48.  
  49.    public static Identifier lookupInner(Identifier var0, Identifier var1) {
  50.       Identifier var2;
  51.       if (var0.isInner()) {
  52.          if (var0.name.charAt(var0.name.length() - 1) == ' ') {
  53.             var2 = lookup(var0.name + var1);
  54.          } else {
  55.             var2 = lookup(var0, var1);
  56.          }
  57.       } else {
  58.          var2 = lookup(var0 + "." + ' ' + var1);
  59.       }
  60.  
  61.       var2.value = var0.value;
  62.       return var2;
  63.    }
  64.  
  65.    public String toString() {
  66.       return this.name;
  67.    }
  68.  
  69.    public boolean isQualified() {
  70.       if (this.value == null) {
  71.          int var1 = this.ipos;
  72.          if (var1 <= 0) {
  73.             var1 = this.name.length();
  74.          } else {
  75.             --var1;
  76.          }
  77.  
  78.          int var2 = this.name.lastIndexOf(46, var1 - 1);
  79.          this.value = var2 < 0 ? Constants.idNull : lookup(this.name.substring(0, var2));
  80.       }
  81.  
  82.       return this.value instanceof Identifier && this.value != Constants.idNull;
  83.    }
  84.  
  85.    public Identifier getQualifier() {
  86.       return this.isQualified() ? (Identifier)this.value : Constants.idNull;
  87.    }
  88.  
  89.    public Identifier getName() {
  90.       return this.isQualified() ? lookup(this.name.substring(((Identifier)this.value).name.length() + 1)) : this;
  91.    }
  92.  
  93.    public boolean isInner() {
  94.       return this.ipos > 0;
  95.    }
  96.  
  97.    public Identifier getFlatName() {
  98.       if (this.isQualified()) {
  99.          return this.getName().getFlatName();
  100.       } else if (this.ipos > 0 && this.name.charAt(this.ipos - 1) == '.') {
  101.          if (this.ipos + 1 == this.name.length()) {
  102.             return lookup(this.name.substring(0, this.ipos - 1));
  103.          } else {
  104.             String var1 = this.name.substring(this.ipos + 1);
  105.             String var2 = this.name.substring(0, this.ipos);
  106.             return lookup(var2 + var1);
  107.          }
  108.       } else {
  109.          return this;
  110.       }
  111.    }
  112.  
  113.    public Identifier getTopName() {
  114.       return !this.isInner() ? this : lookup(this.getQualifier(), this.getFlatName().getHead());
  115.    }
  116.  
  117.    public Identifier getHead() {
  118.       Identifier var1;
  119.       for(var1 = this; var1.isQualified(); var1 = var1.getQualifier()) {
  120.       }
  121.  
  122.       return var1;
  123.    }
  124.  
  125.    public Identifier getTail() {
  126.       Identifier var1 = this.getHead();
  127.       return var1 == this ? Constants.idNull : lookup(this.name.substring(var1.name.length() + 1));
  128.    }
  129. }
  130.