System.Xml.Xsl.Xslt.XPathPatternBuilder.Predicate C# (CSharp) Method

Predicate() public method

public Predicate ( QilNode node, QilNode condition, bool isReverseStep ) : QilNode
node QilNode
condition QilNode
isReverseStep bool
return QilNode
        public QilNode Predicate(QilNode node, QilNode condition, bool isReverseStep) {
            Debug.Assert(isReverseStep == false, "patterns can't have reverse axe");
            QilLoop nodeFilter = (QilLoop) node;
            if (condition.XmlType.TypeCode == XmlTypeCode.Double) {
                predicateEnvironment.SetContext(nodeFilter);
                condition = f.Eq(condition, predicateEnvironment.GetPosition());
            } else {
                condition = f.ConvertToBoolean(condition);
            }

            nodeFilter.Body = f.And(nodeFilter.Body, condition);
            SetPriority(node, 0.5);
            return node;
        }