package jcircus.complementaryenvs; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Set; import java.util.Stack; public class StackVarEnv { private HashMap _map; public StackVarEnv () { this._map = new LinkedHashMap (); } private HashMap getMap () { return this._map; } public StackVarEnv (StackVarEnv cde) { this._map = new LinkedHashMap (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 keySet() { return this._map.keySet(); } }