package jcircus.complementaryenvs;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Set;
import java.util.Stack;
public class StackVarEnv {
private HashMap <String, String> _map;
public StackVarEnv () {
this._map = new LinkedHashMap <String, String> ();
}
private HashMap <String, String> getMap () {
return this._map;
}
public StackVarEnv (StackVarEnv cde) {
this._map = new LinkedHashMap <String, String> (cde.getMap());
}
public void push (String varName) {
String stackpos = this.get(varName);
this._map.remove(varName);
if (stackpos.equals("")) {
this._map.put (varName, "1");
}
else {
this._map.put(varName, (new Integer ((Integer.parseInt(stackpos) + 1))).toString());
}
}
public void pop (String varName) {
String stackpos = this.get(varName);
if (stackpos.equals("1")) {
this._map.remove (varName);
}
else if (stackpos.equals("")) {}
else {
this._map.put(varName, (new Integer ((Integer.parseInt(stackpos) - 1))).toString());
}
}
public String get (String varName) {
if (!this._map.containsKey(varName)) {
return "";
}
return this._map.get(varName);
}
public String getPreviousScope (String varName) {
if (this.get(varName).length() > 0) {
return this.get(varName).substring(0, this.get(varName).length() - 1);
}
else {
return "";
}
}
public String getNextScope (String varName) {
if (this.get(varName).length() > 0) {
return this.get(varName) + "1";
}
else {
return "1";
}
}
public String getNewName (String varName) {
return (varName + this.get(varName));
}
public boolean containsKey (String str) {
return this._map.keySet().contains(str);
}
public Set <String> keySet() {
return this._map.keySet();
}
}