package org.basex.query.expr;
import static org.basex.query.QueryText.*;
import org.basex.query.QueryContext;
import org.basex.query.QueryException;
import org.basex.query.item.ANode;
import org.basex.query.item.SeqType;
import org.basex.util.InputInfo;
/**
* Fragment constructor.
*
* @author BaseX Team 2005-12, BSD License
* @author Christian Gruen
*/
public abstract class CFrag extends Arr {
/**
* Constructor.
* @param ii input info
* @param n name
*/
CFrag(final InputInfo ii, final Expr... n) {
super(ii, n);
type = SeqType.NOD;
}
@Override
public abstract ANode item(final QueryContext ctx, final InputInfo ii)
throws QueryException;
@Override
public boolean uses(final Use u) {
return u == Use.CNS || super.uses(u);
}
/**
* Returns a string info for the expression.
* @param pref info prefix
* @return string
*/
static final String info(final String pref) {
return pref + " constructor";
}
@Override
protected String toString(final String pref) {
final StringBuilder sb = new StringBuilder(pref).append(" { ");
sb.append(expr.length == 0 ? "()" : super.toString(SEP));
return sb.append(" }").toString();
}
}