/** * */ package org.reldb.rel.v0.vm.instructions.tupleIteratable; import org.reldb.rel.v0.values.*; import org.reldb.rel.v0.vm.Context; import org.reldb.rel.v0.vm.Instruction; import org.reldb.rel.v0.vm.Operator; public final class OpTupleIteratableMap extends Instruction { private Operator tupleOperator; // ValueOperator of the form OPERATOR(TUPLE x) RETURNS TUPLE public OpTupleIteratableMap(Operator tupleOperator) { this.tupleOperator = tupleOperator; } public final void execute(Context context) { // TupleIteratable MAP. // // Applies an operator to each tuple in a relation to produce a new relation. // POP - ValueRelation // PUSH - ValueRelation // context.push(((TupleIteratable)context.pop()).map(new RelTupleMap(context, tupleOperator))); } }