package org.reldb.rel.v0.vm.instructions.core; import org.reldb.rel.v0.vm.Cell; import org.reldb.rel.v0.vm.CellFactory; import org.reldb.rel.v0.vm.Context; import org.reldb.rel.v0.vm.Instruction; public class OpVariableInitialise extends Instruction { private int depth; private int offset; private CellFactory cellFactory; public OpVariableInitialise(int depth, int offset, CellFactory cellFactory) { this.depth = depth; this.offset = offset; this.cellFactory = cellFactory; } // Create a new Cell, using the provided CellFactory. // POP - initial value to be stored in new cell. public final void execute(Context context) { Cell cell = cellFactory.getNewCell(); cell.setValue(context.getGenerator(), context.pop()); context.varSetCell(depth, offset, cell); } public String toString() { return getName() + " " + depth + " " + offset; } }