package org.jmlspecs.openjml;
import java.util.LinkedHashMap;
import java.util.Stack;
import com.sun.tools.javac.tree.JCTree.JCAnnotation;
import com.sun.tools.javac.tree.JCTree.JCAssign;
import com.sun.tools.javac.tree.JCTree.JCExpression;
import com.sun.tools.javac.tree.JCTree.JCLiteral;
import com.sun.tools.javac.tree.JCTree.JCModifiers;
import com.sun.tools.javac.tree.JCTree.JCNewArray;
import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.List;
import com.sun.tools.javac.util.Name;
import com.sun.tools.javac.util.Names;
import com.sun.tools.javac.util.Options;
public class JmlOptions extends Options {
protected Context context;
protected Stack<LinkedHashMap<String,String>> stack = new Stack<>();
protected JmlOptions(Context context) {
super(context);
this.context = context;
defaults();
}
public static void preRegister(Context context) {
context.put(Options.optionsKey, new JmlOptions(context));
}
public void defaults() {
//System.out.println("SETTING DEFAULTS");
for (JmlOption opt : JmlOption.values()) {
Object d = opt.defaultValue();
String s = d == null ? null : d.toString();
put(opt.optionName(),s);
}
}
public void pushOptions() {
stack.push(values);
LinkedHashMap<String,String> newvalues = new LinkedHashMap<String,String>();
newvalues.putAll(values);
values = newvalues;
}
public void popOptions() {
values = stack.pop();
}
}