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); }
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); }
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); }
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); }