コード例 #1
0
ファイル: PathStep.cs プロジェクト: jzabroski/XPath2.Net
        public static PathStep CreateFilter(XPath2Context context, object node, List <Object> predicateList)
        {
            if (predicateList.Count == 1)
            {
                AbstractNode predicate = AbstractNode.Create(context, predicateList[0]);
                ValueNode    numexpr   = predicate as ValueNode;
                if (numexpr != null && numexpr.Content is Integer)
                {
                    PathStep res = Create(context, node);
                    res.AddLast(new PathStep(numexpr.Content, XPath2ExprType.PositionFilter));
                    return(res);
                }
            }
            AbstractNode filterExpr = new FilterExprNode(context, node, predicateList);

            return(new PathStep(filterExpr));
        }
コード例 #2
0
 public FollowingNodeIterator(XPath2Context context, object nodeTest, XPath2NodeIterator iter)
     : base(context, nodeTest, false, iter)
 {
     if (typeTest == null)
     {
         if (nameTest == null)
         {
             kind = XPathNodeType.All;
         }
         else
         {
             kind = XPathNodeType.Element;
         }
     }
     else
     {
         kind = typeTest.GetNodeKind();
     }
 }
コード例 #3
0
 public FollowingSiblingNodeIterator(XPath2Context context, object nodeTest, XPath2NodeIterator iter)
     : base(context, nodeTest, false, iter)
 {
 }
コード例 #4
0
 public ContextItemNode(XPath2Context context)
     : base(context)
 {
 }
コード例 #5
0
 public ArithmeticBinaryOperatorNode(XPath2Context context, BinaryOperator action,
                                     object node1, object node2, GetReturnTypeDelegate returnTypeDelegate)
     : base(context, action, node1, node2, XPath2ResultType.Number)
 {
     _returnTypeDelegate = returnTypeDelegate;
 }
コード例 #6
0
 public ExprNode(XPath2Context context, object node)
     : base(context)
 {
     Add(node);
 }
コード例 #7
0
 public ValueNode(XPath2Context context, object value)
     : base(context)
 {
     _value = value;
 }
コード例 #8
0
 public OrderedBinaryOperatorNode(XPath2Context context, BinaryOperator action, object node1, object node2,
                                  XPath2ResultType resultType)
     : base(context, action, node1, node2, resultType)
 {
 }
コード例 #9
0
 public ParentNodeIterator(XPath2Context context, object nodeTest, XPath2NodeIterator iter)
     : base(context, nodeTest, false, iter)
 {
 }
コード例 #10
0
ファイル: ForNode.cs プロジェクト: jzabroski/XPath2.Net
 public ForNode(XPath2Context context, Tokenizer.VarName varName, object expr)
     : base(context)
 {
     _varName = varName;
     Add(expr);
 }
コード例 #11
0
 public NamespaceNodeIterator(XPath2Context context, object nodeTest, XPath2NodeIterator iter)
     : base(context, nodeTest, false, iter)
 {
 }
コード例 #12
0
 public AttributeNodeIterator(XPath2Context context, object nodeTest, XPath2NodeIterator iter)
     : base(context, nodeTest, false, iter)
 {
 }
コード例 #13
0
 public VarRefNode(XPath2Context context, Tokenizer.VarName varRef)
     : base(context)
 {
     _varName = varRef;
 }
コード例 #14
0
 public ArithmeticUnaryOperatorNode(XPath2Context context, UnaryOperator action, object node)
     : base(context, action, node, XPath2ResultType.Number)
 {
 }
コード例 #15
0
        public XPath2NodeIterator Create(XPath2Context context, object[] dataPool, XPath2NodeIterator baseIter, bool special)
        {
            switch (type)
            {
            case XPath2ExprType.Attribute:
                return(new AttributeNodeIterator(context, nodeTest, baseIter));

            case XPath2ExprType.Child:
            {
                if (special && nodeTest != SequenceType.Node)
                {
                    return(new SpecialChildNodeIterator(context, nodeTest, baseIter));
                }
                return(new ChildNodeIterator(context, nodeTest, baseIter));
            }

            case XPath2ExprType.Descendant:
            {
                if (special && nodeTest != SequenceType.Node)
                {
                    return(new SpecialDescendantNodeIterator(context, nodeTest, false, baseIter));
                }
                return(new DescendantNodeIterator(context, nodeTest, false, baseIter));
            }

            case XPath2ExprType.DescendantOrSelf:
            {
                if (special && nodeTest != SequenceType.Node)
                {
                    return(new SpecialDescendantNodeIterator(context, nodeTest, true, baseIter));
                }
                return(new DescendantNodeIterator(context, nodeTest, true, baseIter));
            }

            case XPath2ExprType.Ancestor:
                return(new AncestorNodeIterator(context, nodeTest, false, baseIter));

            case XPath2ExprType.AncestorOrSelf:
                return(new AncestorNodeIterator(context, nodeTest, true, baseIter));

            case XPath2ExprType.Following:
                return(new FollowingNodeIterator(context, nodeTest, baseIter));

            case XPath2ExprType.FollowingSibling:
                return(new FollowingSiblingNodeIterator(context, nodeTest, baseIter));

            case XPath2ExprType.Parent:
                return(new ParentNodeIterator(context, nodeTest, baseIter));

            case XPath2ExprType.Preceding:
                return(new PrecedingNodeIterator(context, nodeTest, baseIter));

            case XPath2ExprType.PrecedingSibling:
                return(new PrecedingSiblingNodeIterator(context, nodeTest, baseIter));

            case XPath2ExprType.Namespace:
                return(new NamespaceNodeIterator(context, nodeTest, baseIter));

            case XPath2ExprType.Self:
                return(new SelfNodeIterator(context, nodeTest, baseIter));

            case XPath2ExprType.Expr:
                return(new ExprNodeIterator(context, node, dataPool, baseIter));

            case XPath2ExprType.PositionFilter:
                return(new PositionFilterNodeIterator(Convert.ToInt32(nodeTest), baseIter));

            case XPath2ExprType.ChildOverDescendants:
                return(new ChildOverDescendantsNodeIterator(context,
                                                            (ChildOverDescendantsNodeIterator.NodeTest[])nodeTest, baseIter));

            default:
                return(null);
            }
        }
コード例 #16
0
 public FilterExprNode(XPath2Context context, object src, List <Object> nodes)
     : base(context)
 {
     Add(src);
     AddRange(nodes);
 }
コード例 #17
0
 public RangeNode(XPath2Context context, object node1, object node2)
     : base(context)
 {
     Add(node1);
     Add(node2);
 }
コード例 #18
0
 public AncestorNodeIterator(XPath2Context context, object nodeTest, bool matchSelf, XPath2NodeIterator iter)
     : base(context, nodeTest, matchSelf, iter)
 {
 }
コード例 #19
0
 public SequentialAxisNodeIterator(XPath2Context context, object nodeTest, bool matchSelf, XPath2NodeIterator iter)
     : base(context, nodeTest, matchSelf, iter)
 {
 }
コード例 #20
0
 public AbstractNode(XPath2Context context)
 {
     _context = context;
 }
コード例 #21
0
 public AtomizedUnaryOperatorNode(XPath2Context context, UnaryOperator action, object node, XPath2ResultType resultType)
     : base(context, action, node, resultType)
 {
 }
コード例 #22
0
 public AndExprNode(XPath2Context context, object node1, object node2)
     : base(context)
 {
     Add(node1);
     Add(node2);
 }
コード例 #23
0
 public ExprNode(XPath2Context context, AbstractNode node)
     : base(context)
 {
     Add(node);
 }