func (self *S0State) Handle(sm hsm.HSM, event hsm.Event) hsm.State { Logln(self.ID(), "- Handle e =", PrintEvent(event.Type())) switch event.Type() { case EventE: sm.QTran(StateS211ID) return nil } return self.Super() }
func (self *CommentState) Handle(sm hsm.HSM, event hsm.Event) hsm.State { Logln(self.ID(), "- Handle") switch event.Type() { case EventChar: fallthrough case EventSlash: sm.QTran(StateCommentID) return nil case EventStar: sm.QTran(StateStarID) return nil } return self.Super() }
func (self *S11State) Handle(sm hsm.HSM, event hsm.Event) hsm.State { Logln(self.ID(), "- Handle e =", PrintEvent(event.Type())) switch event.Type() { case EventG: sm.QTran(StateS211ID) return nil case EventH: annotatedHSM, ok := sm.(*AnnotatedHSM) hsm.AssertTrue(ok) if annotatedHSM.GetFoo() { annotatedHSM.SetFoo(false) return nil } } return self.Super() }
func (self *SlashState) Handle(sm hsm.HSM, event hsm.Event) hsm.State { Logln(self.ID(), "- Handle") switch event.Type() { case EventChar: fallthrough case EventSlash: e, ok := event.(CCommentEvent) hsm.AssertTrue(ok) commentHSM, ok := sm.(*CCommentHSM) hsm.AssertTrue(ok) // Record a slash char and e.Char() before calling QTran() to // trigger a state transfer, since both Entry and Exit of this state // are not good places for these codes. commentHSM.ProcessCodeChar('/') commentHSM.ProcessCodeChar(e.Char()) sm.QTran(StateCodeID) return nil case EventStar: sm.QTran(StateCommentID) return nil } return self.Super() }