package de.fuberlin.projectF.CodeGenerator.model; import java.util.HashMap; import java.util.Map.Entry; public class Record extends Reference { HashMap<String, Reference> variableList; StackAddress address; public Record(String name) { super(name, "record"); variableList = new HashMap<String,Reference>(); } public void add(Reference reference) { variableList.put(reference.name, reference); computeSize(); } public void remove(Reference reference) { variableList.remove(reference.name); computeSize(); } public Reference get(String name) { return variableList.get(name); } public int getVariableCount() { return variableList.size(); } public void computeSize() { int size = 0; for(Entry<String, Reference> v : variableList.entrySet()) size += v.getValue().getSize(); this.size = size; } @Override public String getAddress() { return address.getFullName(); } @Override public String getAddress(int var) { return variableList.get(String.valueOf(var)).getAddress(); } public String getAddress(int var, int offset) { return variableList.get(String.valueOf(var)).getAddress(offset); } public void setAddress(int stackAddress) { address = new StackAddress(stackAddress - size); } }