示例#1
0
        public override RASTElement Next()
        {
            //Event Triggering
            // Prepare event information
            RASTVisitorEventArgs args_prev = new RASTVisitorEventArgs();

            // Raise the Node Leave event
            m_event.OnNodeLeave(m_item, args_prev);

            // Raise the Node Leave event
            if (m_endOfContext)
            {
                m_event.OnContextLeave(m_item, args_prev);
                m_endOfContext = false;
            }

            // Increase iterator
            PrepareNext();

            // Update item
            m_item = m_node.GetChild(m_contextIndex, m_elementIndex);

            //Event Triggering
            if (m_item != null)
            {
                // Prepare event information
                RASTVisitorEventArgs args_next = new RASTVisitorEventArgs();

                // Raise OnContextEnter and OnNodeEnter events
                m_event.OnNodeEnter(m_item, args_next);
            }
            return(m_item);
        }
示例#2
0
    public override RASTElement Begin()
    {
        // Initialize Iterator
        PrepareFirst();

        // Update item
        m_item = m_node.GetChild(m_contextIndex, m_elementIndex);

        //Event Triggering
        if (m_item != null)
        {
            // Prepare event information
            RASTVisitorEventArgs args = new RASTVisitorEventArgs();

            // Raise OnContextEnter and OnNodeEnter events
            m_Event.OnContextEnter(m_item, args);
            m_Event.OnNodeEnter(m_item, args);
        }

        return(m_item);
    }
示例#3
0
    public override RASTElement Begin(object param = null)
    {
        int context = 0;

        // Initialize context from method parameter
        if (param != null)
        {
            if (param is int)
            {
                context = (int)param;
            }
            else if (param is ContextType)
            {
                context = m_node.MapContextToIndex((ContextType)param);
            }
            else
            {
                Console.WriteLine("WARNING!!! Iterator initialization didn't work as expected");
            }
        }

        // Initialize Iterator
        PrepareFirst(context);

        // Update item
        m_item = m_node.GetChild(m_contextIndex, m_elementIndex);

        //Event Triggering
        if (m_item != null)
        {
            // Prepare event information
            RASTVisitorEventArgs args = new RASTVisitorEventArgs();

            // Raise OnContextEnter and OnNodeEnter events
            m_Event.OnContextEnter(m_item, args);
            m_Event.OnNodeEnter(m_item, args);
        }

        return(m_item);
    }
示例#4
0
    public override bool End()
    {
        if (m_item == null)
        {
            return(true);
        }

        //Event Triggering
        // Prepare event information
        RASTVisitorEventArgs args = new RASTVisitorEventArgs();

        // Raise the Node Leave event
        m_Event.OnNodeLeave(m_item, args);

        // Raise the Node Leave event
        if (m_endOfContext)
        {
            m_Event.OnContextLeave(m_item, args);
            m_endOfContext = false;
        }
        return(false);
    }
 public virtual void OnContextLeave(RASTElement node, RASTVisitorEventArgs args)
 {
     m_OnContextLeave?.Invoke(node, args);
 }
 public virtual void OnNodeEnter(RASTElement node, RASTVisitorEventArgs args)
 {
     m_OnNodeEnter?.Invoke(node, args);
 }