blob: 29328ffe91b33aa9cff1f167a64266e592bc52d6 [file] [log] [blame]
package edu.uci.ics.hyracks.algebricks.runtime.evaluators;
import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluator;
import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
import edu.uci.ics.hyracks.data.std.api.IPointable;
import edu.uci.ics.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
public class TupleFieldEvaluatorFactory implements IScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
private final int fieldIndex;
public TupleFieldEvaluatorFactory(int fieldIndex) {
this.fieldIndex = fieldIndex;
}
@Override
public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
return new IScalarEvaluator() {
@Override
public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
result.set(tuple.getFieldData(fieldIndex), tuple.getFieldStart(fieldIndex),
tuple.getFieldLength(fieldIndex));
}
};
}
}