Exemplo n.º 1
0
            //-------------------------------------------------
            public void VisitNodes(INodeVisitor Visitor_in, VisitationType VisitationType_in)
            {
                if (!Visitor_in.Reset(VisitationType_in))
                {
                    throw new ApplicationException("Unable to reset this visitor; possibly invalid visitation type for this visitor.");
                }
                if ((VisitationType_in == VisitationType.None))
                {
                }
                else if ((VisitationType_in == VisitationType.PreviousNodes))
                {
                    GenericNode <T> nodePrev = this.ParentNode;
                    while (true)
                    {
                        if ((nodePrev == null))
                        {
                            break;
                        }

                        if (!Visitor_in.VisitNode(nodePrev))
                        {
                            break;
                        }

                        nodePrev = nodePrev.ParentNode;
                    }
                }
                else if ((VisitationType_in == VisitationType.NextNodes))
                {
                    GenericNode <T> nodeNext = _NextNode;
                    while (true)
                    {
                        if ((nodeNext == null))
                        {
                            break;
                        }

                        if (!Visitor_in.VisitNode(nodeNext))
                        {
                            break;
                        }

                        nodeNext = nodeNext._NextNode;
                    }
                }
                else if ((VisitationType_in == VisitationType.Parents))
                {
                    GenericNode <T> nodePrev = this.ParentNode;
                    while (true)
                    {
                        if ((nodePrev == null))
                        {
                            break;
                        }

                        if (!Visitor_in.VisitNode(nodePrev))
                        {
                            break;
                        }

                        nodePrev = nodePrev.ParentNode;
                    }
                }
                else if ((VisitationType_in == VisitationType.PreviousSiblings))
                {
                    GenericNode <T> nodePrev = this.ParentNode;
                    while (true)
                    {
                        if ((nodePrev == null))
                        {
                            break;
                        }

                        if ((nodePrev._Indent < _Indent))
                        {
                            break;
                        }

                        if ((nodePrev._Indent == _Indent))
                        {
                            if (!Visitor_in.VisitNode(nodePrev))
                            {
                                break;
                            }
                        }
                        nodePrev = nodePrev.ParentNode;
                    }
                }
                else if ((VisitationType_in == VisitationType.NextSiblings))
                {
                    GenericNode <T> nodeNext = _NextNode;
                    while (true)
                    {
                        if ((nodeNext == null))
                        {
                            break;
                        }

                        if ((nodeNext._Indent < _Indent))
                        {
                            break;
                        }

                        if ((nodeNext._Indent == _Indent))
                        {
                            if (!Visitor_in.VisitNode(nodeNext))
                            {
                                break;
                            }
                        }
                        nodeNext = nodeNext._NextNode;
                    }
                }
                else if ((VisitationType_in == VisitationType.Children))
                {
                    GenericNode <T> nodeNext = _NextNode;
                    while (true)
                    {
                        if ((nodeNext == null))
                        {
                            break;
                        }

                        if ((nodeNext._Indent <= _Indent))
                        {
                            break;
                        }

                        if ((nodeNext._Indent == (_Indent + 1)))
                        {
                            if (!Visitor_in.VisitNode(nodeNext))
                            {
                                break;
                            }
                        }
                        nodeNext = nodeNext._NextNode;
                    }
                }
                else if ((VisitationType_in == VisitationType.DecendentsDepthFirst))
                {
                    GenericNode <T> nodeNext = _NextNode;
                    while (true)
                    {
                        if ((nodeNext == null))
                        {
                            break;
                        }

                        if ((nodeNext._Indent <= _Indent))
                        {
                            break;
                        }

                        if (!Visitor_in.VisitNode(nodeNext))
                        {
                            break;
                        }

                        nodeNext = nodeNext._NextNode;
                    }
                }
                else if ((VisitationType_in == VisitationType.DecendentsBreadthFirst))
                {
                    throw new NotImplementedException();
                }
                else
                {
                    throw new NotSupportedException();
                }
                return;
            }
Exemplo n.º 2
0
 public override void Accept(INodeVisitor visitor)
 {
     visitor.VisitNode(this);
 }