home *** CD-ROM | disk | FTP | other *** search
- package espresso;
-
- class TypSet {
- TypSet next;
- Typ typ;
-
- static Typ[] elems(TypSet var0) {
- Typ[] var1 = new Typ[size(var0)];
-
- for(int var2 = 0; var2 < var1.length; ++var2) {
- var1[var2] = var0.typ;
- var0 = var0.next;
- }
-
- return var1;
- }
-
- static int size(TypSet var0) {
- return var0 == null ? 0 : 1 + size(var0.next);
- }
-
- static boolean subset(TypSet var0, TypSet var1) {
- if (var0 == null) {
- return true;
- } else {
- return elem(var1, var0.typ) && subset(var0.next, var1);
- }
- }
-
- static boolean elem(TypSet var0, Typ var1) {
- if (var0 == null) {
- return false;
- } else {
- return var1.subtype(var0.typ) || elem(var0.next, var1);
- }
- }
-
- static TypSet excl(TypSet var0, Typ var1) {
- if (var0 == null) {
- return null;
- } else {
- TypSet var2 = excl(var0.next, var1);
- if (var0.typ.subtype(var1)) {
- return var2;
- } else {
- return var2 == var0.next ? var0 : new TypSet(var0.typ, var2);
- }
- }
- }
-
- static TypSet incl(TypSet var0, Typ var1) {
- TypSet var2;
- for(var2 = var0; var2 != null && !var1.subtype(var2.typ); var2 = var2.next) {
- }
-
- return var2 != null ? var0 : new TypSet(var1, excl(var0, var1));
- }
-
- TypSet(Typ var1, TypSet var2) {
- this.typ = var1;
- this.next = var2;
- }
- }
-