public virtual void VisitTransitionStatement(TransitionStatement transition) { if (transition.command == null) { if( !transition.Allow && !transition.Deny) PrintFunc("bool", ClassName + "::test" + GetState() + "To" + transition.targetstate, "()", "\treturn false;"); if( !transition.NoExec) PrintFunc("void", ClassName + "::exec" + GetState() + "To" + transition.targetstate, "()"); } else { if (!transition.Allow && !transition.Deny) PrintFunc("InterfaceResult::Enum", ClassName + "::test" + GetState() + "To" + transition.targetstate + "On" + transition.command, "(InterfaceParam* param)", "\treturn InterfaceResult::Unhandled;", "\t(void)param;"); if (!transition.NoExec) PrintFunc("void", ClassName + "::exec" + GetState() + "To" + transition.targetstate + "On" + transition.command, "(InterfaceParam* param)", "\t(void)param;"); } }
public virtual void VisitTransitionStatement(TransitionStatement transition) { string state = GetState(); if (state == null) throw new MalformedFSMException("Interface Command found outside of state block", transition.line); if (transition.command != null) { string transName = state + "To" + transition.targetstate + "On" + transition.command; stream.WriteLine("\tFSM::InterfaceTransition<" + ClassName + "> " + transName + ";"); if(transition.Allow) stream.WriteLine("\tFSM::InterfaceResult::Enum test" + transName + "(FSM::InterfaceParam* param) { (void)param; return FSM::InterfaceResult::Success; }"); else if(transition.Deny) stream.WriteLine("\tFSM::InterfaceResult::Enum test" + transName + "(FSM::InterfaceParam* param) { (void)param; return FSM::InterfaceResult::Failed; }"); else stream.WriteLine("\tFSM::InterfaceResult::Enum test" + transName + "(FSM::InterfaceParam* param);"); if(!transition.NoExec) stream.WriteLine("\tvoid exec" + state + "To" + transition.targetstate + "On" + transition.command + "(FSM::InterfaceParam* param);"); } else { string transName = state + "To" + transition.targetstate; stream.WriteLine("\tFSM::Transition<" + ClassName + "> " + transName + ";"); if(transition.Allow) stream.WriteLine("\tbool test" + transName + "() { return true; }"); else if(transition.Deny) stream.WriteLine("\tbool test" + transName + "() { return false }"); else stream.WriteLine("\tbool test" + transName + "();"); if (!transition.NoExec) stream.WriteLine("\tvoid exec" + transName + "();"); } stream.WriteLine(); }
public virtual void VisitTransitionStatement(TransitionStatement transition) { string state = GetState(); if (transition.command == null) { if (state == null) throw new MalformedFSMException("Interface Transition found outside of state block", transition.line); if(transition.NoExec) stream.WriteLine("\t\tFSM_INIT_TRANSITION_NOEXEC(" + ClassName + ", " + GetState() + ", " + transition.targetstate + ");"); else stream.WriteLine("\t\tFSM_INIT_TRANSITION(" + ClassName + ", " + GetState() + ", " + transition.targetstate + ");"); } else { if (state == null) throw new MalformedFSMException("Interface Command found outside of state block", transition.line); if(transition.NoExec) stream.WriteLine("\t\tFSM_INIT_INTERFACETRANSITION_NOEXEC(" + ClassName + ", " + GetState() + ", " + transition.command + ", " + transition.targetstate + ");"); else stream.WriteLine("\t\tFSM_INIT_INTERFACETRANSITION(" + ClassName + ", " + GetState() + ", " + transition.command + ", " + transition.targetstate + ");"); } stream.WriteLine(); }