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

  1. package espresso;
  2.  
  3. class Typ implements Constants {
  4.    static Obj errObj;
  5.    static Typ anyTyp = newTyp(16, "<anything>");
  6.    static Typ errTyp = newTyp(0, "<any>");
  7.    static Typ nullTyp = newTyp(15, "null");
  8.    static Typ funTyp = newTyp(14, "()");
  9.    static Typ arrayTyp = newTyp(13, "Array");
  10.    static Typ voidTyp = newTyp(12, "void");
  11.    static Typ booleanTyp = newTyp(10, "boolean");
  12.    static Typ doubleTyp = newTyp(9, "double");
  13.    static Typ floatTyp = newTyp(8, "float");
  14.    static Typ longTyp = newTyp(7, "long");
  15.    static Typ intTyp = newTyp(6, "int");
  16.    static Typ charTyp = newTyp(4, "char");
  17.    static Typ shortTyp = newTyp(5, "short");
  18.    static Typ byteTyp = newTyp(2, "byte");
  19.    static Typ[] typOfTag = new Typ[18];
  20.    ClassObj obj;
  21.    int tag;
  22.  
  23.    static {
  24.       errObj = new Obj(9, Name.fromString("<error>"), errTyp);
  25.    }
  26.  
  27.    private static Typ newTyp(int var0, String var1) {
  28.       Typ var2 = new Typ(var0, Name.fromString(var1));
  29.       typOfTag[var0] = var2;
  30.       return var2;
  31.    }
  32.  
  33.    static boolean sametypes(Typ[] var0, Typ[] var1) {
  34.       if (var0.length != var1.length) {
  35.          return false;
  36.       } else {
  37.          for(int var2 = 0; var2 < var0.length; ++var2) {
  38.             if (!var0[var2].sametype(var1[var2])) {
  39.                return false;
  40.             }
  41.          }
  42.  
  43.          return true;
  44.       }
  45.    }
  46.  
  47.    boolean sametype(Typ var1) {
  48.       return this == var1;
  49.    }
  50.  
  51.    static boolean subtypes(Typ[] var0, Typ[] var1) {
  52.       if (var0.length != var1.length) {
  53.          return false;
  54.       } else {
  55.          for(int var2 = 0; var2 < var0.length; ++var2) {
  56.             if (!var0[var2].subtype(var1[var2])) {
  57.                return false;
  58.             }
  59.          }
  60.  
  61.          return true;
  62.       }
  63.    }
  64.  
  65.    boolean subtype(Typ var1) {
  66.       if (var1.tag != 0 && var1.tag != 16) {
  67.          switch (this.tag) {
  68.             case 0:
  69.                return true;
  70.             case 1:
  71.             case 3:
  72.             case 14:
  73.             default:
  74.                throw new CompilerError(String.valueOf(String.valueOf("subtype ").concat(String.valueOf(this.obj.name))).concat(String.valueOf(this.tag)));
  75.             case 2:
  76.                return var1.tag == 2 || 5 <= var1.tag && var1.tag <= 9;
  77.             case 4:
  78.                return var1.tag == 4 || 6 <= var1.tag && var1.tag <= 9;
  79.             case 5:
  80.             case 6:
  81.             case 7:
  82.             case 8:
  83.             case 9:
  84.                return this.tag <= var1.tag && var1.tag <= 9;
  85.             case 10:
  86.                return var1.tag == 10;
  87.             case 11:
  88.             case 13:
  89.                return var1.tag == 11 && this.obj.subclass(var1.obj);
  90.             case 12:
  91.                return var1.tag == 12;
  92.             case 15:
  93.                return var1.tag == 11 || var1.tag == 13 || var1.tag == 15 || var1.tag == 14;
  94.             case 16:
  95.                return false;
  96.          }
  97.       } else {
  98.          return true;
  99.       }
  100.    }
  101.  
  102.    public String toString() {
  103.       return this.obj.name.toString();
  104.    }
  105.  
  106.    Typ(int var1, ClassObj var2) {
  107.       this.tag = var1;
  108.       this.obj = var2;
  109.    }
  110.  
  111.    Typ(int var1, Name var2) {
  112.       this.tag = var1;
  113.       this.obj = new ClassObj(1, var2, this);
  114.    }
  115. }
  116.