00001
00005 package edu.mit.csail.sdg.squander.spec.constant;
00006
00007 import edu.mit.csail.sdg.squander.spec.JType;
00008
00009
00010 public enum ConstRel {
00011
00012 IDEN (JType.Factory.instance.newJType(Object.class, Object.class)),
00013 UNIV (JType.Factory.instance.newJType(Object.class)),
00014 NONE (JType.Factory.instance.newJType(Object.class)),
00015 INC (JType.Factory.instance.newJType(int.class, int.class)),
00016 DEC (JType.Factory.instance.newJType(int.class, int.class));
00017
00018 private final JType type;
00019
00020 private ConstRel(JType type) {
00021 this.type = type;
00022 }
00023
00024 public JType type() { return type; }
00025
00026 public <E> E accept(ConstRelVisitor<E> visitor) {
00027 switch (this) {
00028 case IDEN: return visitor.visitIdent();
00029 case UNIV: return visitor.visitUniv();
00030 case NONE: return visitor.visitNone();
00031 case INC: return visitor.visitInc();
00032 case DEC: return visitor.visitDec();
00033 }
00034 throw new RuntimeException("Unknown ConstRel type: " + this.name());
00035 }
00036
00037
00038 }