package org.basex.query.ft;
import static org.basex.query.QueryText.*;
import java.io.IOException;
import org.basex.io.serial.Serializer;
import org.basex.query.QueryContext;
import org.basex.query.QueryException;
import org.basex.query.expr.Expr;
import org.basex.query.item.FTNode;
import org.basex.query.iter.FTIter;
import org.basex.util.InputInfo;
/**
* FTExtensionSelection expression.
*
* @author BaseX Team 2005-12, BSD License
* @author Leo Woerteler
*/
public final class FTExtensionSelection extends FTExpr {
/** Pragmas. */
private final Expr[] pragmas;
/**
* Constructor.
* @param ii input info
* @param prag pragmas
* @param e enclosed FTSelection
*/
public FTExtensionSelection(final InputInfo ii, final Expr[] prag,
final FTExpr e) {
super(ii, e);
pragmas = prag;
}
@Override
public FTNode item(final QueryContext ctx, final InputInfo ii)
throws QueryException {
return expr[0].item(ctx, input);
}
@Override
public FTIter iter(final QueryContext ctx) throws QueryException {
return expr[0].iter(ctx);
}
@Override
public void plan(final Serializer ser) throws IOException {
ser.openElement(this);
for(final Expr e : pragmas) e.plan(ser);
expr[0].plan(ser);
ser.closeElement();
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
for(final Expr p : pragmas) sb.append(p).append(' ');
return sb.append(BRACE1 + ' ' + expr[0] + ' ' + BRACE2).toString();
}
}