00001 00005 package edu.mit.csail.sdg.squander.spec; 00006 00007 import forge.program.ForgeDomain; 00008 import forge.program.ForgeExpression; 00009 import forge.program.ForgeType; 00010 import forge.program.GlobalVariable; 00011 import forge.program.LocalDecls; 00012 import forge.program.LocalVariable; 00013 00014 public interface ForgeEnv { 00015 00016 public static enum State { PRE, POST }; 00017 00018 public ForgeEnv setPreStateMode(); 00019 public ForgeEnv addLocal(LocalVariable var); 00020 00021 public ForgeType integerType(); 00022 public ForgeType booleanType(); 00023 public ForgeType stringType(); 00024 public ForgeType nullType(); 00025 00026 public ForgeExpression intExpr(int i); 00027 public ForgeExpression stringExpr(String text); 00028 public ForgeExpression trueExpr(); 00029 public ForgeExpression falseExpr(); 00030 public ForgeExpression returnVar(); 00031 public ForgeExpression throwVar(); 00032 public LocalVariable thisVar(); 00033 public ForgeExpression arg(int i); 00034 public ForgeExpression arrayLength(JType jtype); 00035 public ForgeExpression arrayElems(JType jtype); 00036 public ForgeExpression globalVar(GlobalVariable var); 00037 public JType.Unary classForDomain(ForgeDomain domain); 00038 00039 public LocalDecls emptyDecls(); 00040 public LocalVariable newLocalVar(String name, ForgeType type); 00041 public LocalVariable findLocal(String name); 00042 public GlobalVariable ensureGlobal(JField field); 00043 public GlobalVariable ensureConst(String name); 00044 public ForgeDomain.Unary ensureDomain(JType.Unary clz); 00045 public ForgeDomain.Unary typeForCls(JType.Unary clz, boolean includeNull); 00046 00047 public void ensureNum(ForgeType type); 00048 public void ensureInt(int i); 00049 public void ensureAllInts(); 00050 }