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 }