From bbb390ba525fc68ab1e1270b4b59a5b0994a64aa Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Sun, 16 May 2021 10:57:44 +0100 Subject: [PATCH] Fixed FSM generation for non-default numbers message types. --- include/etl/fsm.h | 16 +++---- include/etl/generators/fsm_generator.h | 62 +++++++++++--------------- 2 files changed, 35 insertions(+), 43 deletions(-) diff --git a/include/etl/fsm.h b/include/etl/fsm.h index 2f71d587..cf1216eb 100644 --- a/include/etl/fsm.h +++ b/include/etl/fsm.h @@ -81,10 +81,10 @@ namespace etl typedef typename etl::larger_type::type fsm_internal_id_t; template + typename T1 = void, typename T2 = void, typename T3 = void, typename T4 = void, + typename T5 = void, typename T6 = void, typename T7 = void, typename T8 = void, + typename T9 = void, typename T10 = void, typename T11 = void, typename T12 = void, + typename T13 = void, typename T14 = void, typename T15 = void, typename T16 = void> class fsm_state; //*************************************************************************** @@ -179,10 +179,10 @@ namespace etl friend class etl::fsm; friend class etl::hfsm; template + typename, typename, typename, typename, + typename, typename, typename, typename, + typename, typename, typename, typename, + typename, typename, typename, typename> friend class etl::fsm_state; //******************************************* diff --git a/include/etl/generators/fsm_generator.h b/include/etl/generators/fsm_generator.h index 34fc133f..8bd67bb8 100644 --- a/include/etl/generators/fsm_generator.h +++ b/include/etl/generators/fsm_generator.h @@ -92,12 +92,19 @@ namespace etl // For internal FSM use. typedef typename etl::larger_type::type fsm_internal_id_t; - template - class fsm_state; + /*[[[cog + import cog + cog.outl("template " % int(Handlers)) + cog.outl("class fsm_state;") + ]]]*/ + /*[[[end]]]*/ //*************************************************************************** /// Base exception class for FSM. @@ -190,11 +197,18 @@ namespace etl /// Allows ifsm_state functions to be private. friend class etl::fsm; friend class etl::hfsm; - template + /*[[[cog + import cog + cog.outl(" template ") + ]]]*/ + /*[[[end]]]*/ friend class etl::fsm_state; //******************************************* @@ -207,6 +221,7 @@ namespace etl //******************************************* /// Adds a child to this state. + /// Only of use when part of an HFSM. //******************************************* void add_child_state(etl::ifsm_state& state) { @@ -222,6 +237,7 @@ namespace etl //******************************************* /// Adds a list of child states. + /// Only of use when part of an HFSM. //******************************************* template void set_child_states(etl::ifsm_state** state_list, TSize size) @@ -236,30 +252,6 @@ namespace etl } } - //******************************************* - /// Get the parent state for this state. - //******************************************* - etl::ifsm_state* get_parent_state() const - { - return p_parent; - } - - //******************************************* - /// Get the active child state for this state. - //******************************************* - etl::ifsm_state* get_active_child_state() const - { - return p_active_child; - } - - //******************************************* - /// Get the default child state for this state. - //******************************************* - etl::ifsm_state* get_default_child_state() const - { - return p_default_child; - } - protected: //*******************************************