コード例 #1
0
ファイル: XPathPatternBuilder.cs プロジェクト: zeroyou/corefx
 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);
 }
コード例 #2
0
        //  ----------------------------------------------------------------------------

        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: XPathPatternBuilder.cs プロジェクト: zeroyou/corefx
        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);
        }
コード例 #5
0
            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);
            }
コード例 #6
0
            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);
            }
コード例 #7
0
 public KeyMatchBuilder(IXPathEnvironment env) : base(env)
 {
     convertor = new PathConvertor(env.Factory);
 }
コード例 #8
0
 //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);
 }
コード例 #9
0
 public KeyMatchBuilder(IXPathEnvironment env) : base(env) {
     convertor = new PathConvertor(env.Factory);
 }
コード例 #10
0
 public XPathPredicateEnvironment(IXPathEnvironment baseEnvironment) {
     this.baseEnvironment = baseEnvironment;
     this.f = baseEnvironment.Factory;
     cloner = new Cloner(f.BaseFactory);
 }
コード例 #11
0
 public XPathPredicateEnvironment(IXPathEnvironment baseEnvironment)
 {
     this.baseEnvironment = baseEnvironment;
     this.f = baseEnvironment.Factory;
     cloner = new Cloner(f.BaseFactory);
 }