/** * */ package org.reldb.rel.v0.generator; import org.reldb.rel.v0.types.Type; /** Contains information about a variable, parameter, or other Value-holder. */ public interface Slot { public Type getType(); /** Compile setter, which is invoked by assignment operation. Value to be assigned is on stack. */ public abstract void compileSet(Generator generator); /** Compile getter, which is invoked by identifier dereference. Value will be pushed onto stack. */ public abstract void compileGet(Generator generator); /** Compile initialiser, which is invoked by the code that initialises a variable Cell that holds this slot at run-time. */ public abstract void compileInitialise(Generator generator); /** Return true if this slot is an operator parameter. */ public abstract boolean isParameter(); }