package eu.wietsevenema.lang.oberon.interpreter.values; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; import eu.wietsevenema.lang.oberon.ast.expressions.Identifier; import eu.wietsevenema.lang.oberon.exceptions.NotImplementedException; import eu.wietsevenema.lang.oberon.interpreter.ValueReference; public class RecordValue extends Value { private Map<Identifier, ValueReference> values; public RecordValue(Map<Identifier, ValueReference> values) { this.values = values; } @Override public boolean equals(Object o) { throw new NotImplementedException(); } @Override public Object clone() { TreeMap<Identifier, ValueReference> clone = new TreeMap<Identifier, ValueReference>(); for (Map.Entry<Identifier, ValueReference> entry : values.entrySet()) { clone.put(entry.getKey(), new ValueReference((Value) entry.getValue().getValue().clone())); } return new RecordValue(clone); } public ValueReference getReference( Identifier id){ return this.values.get(id); } public Set<Entry<Identifier,ValueReference>> entrySet() { return values.entrySet(); } @Override public void init() { //This value is initialised by design. } }