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 }