package org.reldb.rel.v0.vm; import java.util.*; public class Operator { private List<Instruction> executableCode = new LinkedList<Instruction>(); private transient Instruction[] executableCodeCache = null; private int depth; private int varCount; private int parmCount; public Operator(int depth) { this.depth = depth; } public Operator(int depth, int varCount) { this(depth); this.varCount = varCount; } public void compile(Instruction op) { executableCode.add(op); executableCodeCache = null; } public void compileAt(int address, Instruction op) { executableCode.set(address, op); executableCodeCache = null; } public int getDepth() { return depth; } public void setVariableCount(int n) { varCount = n; } public int getVariableCount() { return varCount; } public void setParameterCount(int n) { parmCount = n; } public int getParameterCount() { return parmCount; } public Instruction[] getExecutableCode() { if (executableCodeCache == null) executableCodeCache = executableCode.toArray(new Instruction[0]); return executableCodeCache; } /** Get code size. */ public int size() { return executableCode.size(); } public String toString() { return "\"OPERATOR\""; } }