use of org.sirix.service.xml.xpath.expr.SomeExpr in project sirix by sirixdb.
the class PipelineBuilder method addQuantifierExpr.
/**
* Adds a SomeExpression or an EveryExpression to the pipeline, depending on the parameter isSome.
*
* @param mTransaction Transaction to operate with.
* @param mIsSome defines whether a some- or an EveryExpression is used.
* @param mVarNum number of binding variables
*/
public void addQuantifierExpr(final XdmNodeReadTrx mTransaction, final boolean mIsSome, final int mVarNum) {
assert getPipeStack().size() >= (mVarNum + 1);
final Axis satisfy = getPipeStack().pop().getExpr();
final List<Axis> vars = new ArrayList<Axis>();
int num = mVarNum;
while (num-- > 0) {
// invert current order of variables to get original variable order
vars.add(num, getPipeStack().pop().getExpr());
}
final Axis mAxis = mIsSome ? new SomeExpr(mTransaction, vars, satisfy) : new EveryExpr(mTransaction, vars, satisfy);
if (getPipeStack().empty() || getExpression().getSize() != 0) {
addExpressionSingle();
}
getExpression().add(mAxis);
}
Aggregations