Search in sources :

Example 1 with EveryExpr

use of org.sirix.service.xml.xpath.expr.EveryExpr 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);
}
Also used : EveryExpr(org.sirix.service.xml.xpath.expr.EveryExpr) ArrayList(java.util.ArrayList) SomeExpr(org.sirix.service.xml.xpath.expr.SomeExpr) ModOpAxis(org.sirix.service.xml.xpath.operators.ModOpAxis) RangeAxis(org.sirix.service.xml.xpath.expr.RangeAxis) AddOpAxis(org.sirix.service.xml.xpath.operators.AddOpAxis) ExceptAxis(org.sirix.service.xml.xpath.expr.ExceptAxis) Axis(org.sirix.api.Axis) MulOpAxis(org.sirix.service.xml.xpath.operators.MulOpAxis) UnionAxis(org.sirix.service.xml.xpath.expr.UnionAxis) IfAxis(org.sirix.service.xml.xpath.expr.IfAxis) IntersectAxis(org.sirix.service.xml.xpath.expr.IntersectAxis) IDivOpAxis(org.sirix.service.xml.xpath.operators.IDivOpAxis) DupFilterAxis(org.sirix.service.xml.xpath.filter.DupFilterAxis) PredicateFilterAxis(org.sirix.axis.filter.PredicateFilterAxis) VariableAxis(org.sirix.service.xml.xpath.expr.VariableAxis) ForAxis(org.sirix.axis.ForAxis) SequenceAxis(org.sirix.service.xml.xpath.expr.SequenceAxis) FilterAxis(org.sirix.axis.filter.FilterAxis) SubOpAxis(org.sirix.service.xml.xpath.operators.SubOpAxis) DivOpAxis(org.sirix.service.xml.xpath.operators.DivOpAxis)

Aggregations

ArrayList (java.util.ArrayList)1 Axis (org.sirix.api.Axis)1 ForAxis (org.sirix.axis.ForAxis)1 FilterAxis (org.sirix.axis.filter.FilterAxis)1 PredicateFilterAxis (org.sirix.axis.filter.PredicateFilterAxis)1 EveryExpr (org.sirix.service.xml.xpath.expr.EveryExpr)1 ExceptAxis (org.sirix.service.xml.xpath.expr.ExceptAxis)1 IfAxis (org.sirix.service.xml.xpath.expr.IfAxis)1 IntersectAxis (org.sirix.service.xml.xpath.expr.IntersectAxis)1 RangeAxis (org.sirix.service.xml.xpath.expr.RangeAxis)1 SequenceAxis (org.sirix.service.xml.xpath.expr.SequenceAxis)1 SomeExpr (org.sirix.service.xml.xpath.expr.SomeExpr)1 UnionAxis (org.sirix.service.xml.xpath.expr.UnionAxis)1 VariableAxis (org.sirix.service.xml.xpath.expr.VariableAxis)1 DupFilterAxis (org.sirix.service.xml.xpath.filter.DupFilterAxis)1 AddOpAxis (org.sirix.service.xml.xpath.operators.AddOpAxis)1 DivOpAxis (org.sirix.service.xml.xpath.operators.DivOpAxis)1 IDivOpAxis (org.sirix.service.xml.xpath.operators.IDivOpAxis)1 ModOpAxis (org.sirix.service.xml.xpath.operators.ModOpAxis)1 MulOpAxis (org.sirix.service.xml.xpath.operators.MulOpAxis)1