package uva.qls.interpreter.gui.table; import java.util.ArrayDeque; import java.util.Deque; import java.util.HashMap; import java.util.Map; import uva.qls.ast.type.PrimitiveType; import uva.qls.interpreter.typecheck.table.Table; public class DefaultTable extends Table<String, Deque<DefaultTableValue>>{ private Map<String, Deque<DefaultTableValue>> stacks; public DefaultTable(){ this.initializeStacks(); } public Map<String, Deque<DefaultTableValue>> getStacks(){ return this.stacks; } public void clearStacks(){ this.initializeStacks(); } private void initializeStacks(){ this.stacks = new HashMap<String, Deque<DefaultTableValue>>(); for (String s : PrimitiveType.getAllTypes()){ this.stacks.put(s, new ArrayDeque<DefaultTableValue>()); } } @Override public void putValue(String identifier, Deque<DefaultTableValue> value) { this.stacks.put(identifier, value); } public void push(String identifier, DefaultTableValue value){ Deque<DefaultTableValue> stack = this.retrieveValue(identifier); stack.push(value); this.putValue(identifier, stack); } public void pop(String identifier){ Deque<DefaultTableValue> stack = this.retrieveValue(identifier); stack.pop(); this.putValue(identifier, stack); } @Override public Deque<DefaultTableValue> retrieveValue(String identifier) { return this.stacks.get(identifier); } @Override public String toString() { // TODO Auto-generated method stub return null; } }