public XPathPredicateEnvironment(IXPathEnvironment baseEnvironment) { _baseEnvironment = baseEnvironment; _f = baseEnvironment.Factory; _fixupCurrent = _f.Unknown(T.NodeNotRtf); _fixupPosition = _f.Unknown(T.DoubleX); _fixupLast = _f.Unknown(T.DoubleX); this.fixupVisitor = new XPathBuilder.FixupVisitor(_f, _fixupCurrent, _fixupPosition, _fixupLast); }
// ---------------------------------------------------------------------------- public XPathBuilder(IXPathEnvironment environment) { _environment = environment; _f = _environment.Factory; this.fixupCurrent = _f.Unknown(T.NodeNotRtf); this.fixupPosition = _f.Unknown(T.DoubleX); this.fixupLast = _f.Unknown(T.DoubleX); _fixupVisitor = new FixupVisitor(_f, fixupCurrent, fixupPosition, fixupLast); }
public XPathPatternBuilder(IXPathEnvironment environment) { Debug.Assert(environment != null); this.environment = environment; this.f = environment.Factory; this.predicateEnvironment = new XPathPredicateEnvironment(environment); this.predicateBuilder = new XPathBuilder(predicateEnvironment); this.fixupNode = f.Unknown(T.NodeNotRtfS); }
public XPathPatternBuilder(IXPathEnvironment environment) { Debug.Assert(environment != null); _environment = environment; _f = environment.Factory; _predicateEnvironment = new XPathPredicateEnvironment(environment); _predicateBuilder = new XPathBuilder(_predicateEnvironment); _fixupNode = _f.Unknown(T.NodeNotRtfS); }
public QilNode Fixup(QilNode inExpr, IXPathEnvironment environment) { Debug.Assert(environment != null); this.justCount = false; this.current = null; this.environment = environment; numCurrent = numPosition = numLast = 0; inExpr = VisitAssumeReference(inExpr); #if StopMaskOptimisation // Don't need //SetStopVisitMark(inExpr, /*stop*/true); #endif return(inExpr); }
public QilNode Fixup(QilNode inExpr, QilIterator current, QilNode last) { this.current = current; this.last = last; Debug.Assert(current != null); this.justCount = false; this.environment = null; numCurrent = numPosition = numLast = 0; inExpr = VisitAssumeReference(inExpr); #if StopMaskOptimisation SetStopVisitMark(inExpr, /*stop*/ true); #endif return(inExpr); }
public KeyMatchBuilder(IXPathEnvironment env) : base(env) { convertor = new PathConvertor(env.Factory); }
//also used by XPathPatternBuilder public static QilNode PredicateToBoolean(QilNode predicate, XPathQilFactory f, IXPathEnvironment env) { // Prepocess predicate: if (predicate is number) then predicate := (position() == predicate) if (!f.IsAnyType(predicate)) { if (predicate.XmlType.TypeCode == XmlTypeCode.Double) { predicate = f.Eq(env.GetPosition(), predicate); } else { predicate = f.ConvertToBoolean(predicate); } } else { QilIterator i; predicate = f.Loop(i = f.Let(predicate), f.Conditional(f.IsType(i, T.Double), f.Eq(env.GetPosition(), f.TypeAssert(i, T.DoubleX)), f.ConvertToBoolean(i) ) ); } return(predicate); }
public XPathPredicateEnvironment(IXPathEnvironment baseEnvironment) { this.baseEnvironment = baseEnvironment; this.f = baseEnvironment.Factory; cloner = new Cloner(f.BaseFactory); }