package de.bse.prgm.cmd; import de.bse.prgm.err.runtime.NullBytesVariableRuntimeError; import de.bse.run.app.IConsole; import de.bse.vm.Machine; import de.bse.vm.var.DynamicVariable; import de.bse.vm.var.IVariable; import de.bse.vm.var.Reference; /** * Reference on a given or new variable * * @author Elias Groll * @version 2.15 */ public class Symbol implements ICommand { public Symbol(String name, String referencedObject) { this.name = name; this.referencedObject = referencedObject; } public Symbol(String name, int newObject) { this.name = name; this.newObject = newObject; } private String name; private String referencedObject; private int newObject = 0; public void execute(Machine machine, IConsole console) { IVariable referenced; if (referencedObject == null) { // referencedObject is the String referenced = new DynamicVariable(newObject); } else { referenced = machine.parseIVariable(referencedObject); } IVariable reference = new Reference(referenced); machine.addIVariable(name, reference); if (newObject == 0 && referencedObject == null) { machine.getProgram().addError(new NullBytesVariableRuntimeError()); } } public String infoMsg() { return "[Info]Referencing " + referencedObject + " with " + name; } public String toString() { return "SYMBOL"; } }