| [%- State = TemplateInputVar %] |
| [%- USE String %] |
| [%- MACRO CLASSNAME(str) BLOCK %] |
| [%- className = String.new %] |
| [%- strList = String.new(str).lower.split("_") %] |
| [%- FOREACH str = strList %] |
| [%- token = className.append(String.new(str).capital.text()) %] |
| [%- END %] |
| [%- className %] |
| [%- END %] |
| [%- MACRO FILENAME(str) BLOCK %] |
| [%- fileName = String.new %] |
| [%- str = CLASSNAME(str) %] |
| [%- fileName = fileName.append(str.substr(0,1)).lower %] |
| [%- fileName = fileName.append(str.substr(1)) %] |
| [%- fileName %] |
| [%- END %] |
| [%- stateClassName = CLASSNAME(State.Name) %] |
| /* |
| * Copyright 2019-present Infosys Limited |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /************************************** |
| * [% FILENAME(State.Name) %].cpp |
| * This is an auto generated file. |
| * Please do not edit this file. |
| * All edits to be made through template source file |
| * <TOP-DIR/scripts/SMCodeGen/templates/stateMachineTmpls/state.cpp.tt> |
| **************************************/ |
| |
| #include "smEnumTypes.h" |
| #include "actionTable.h" |
| #include "actionHandlers/actionHandlers.h" |
| |
| #include "mmeStates/[% FILENAME(State.Name) %].h" |
| [%- FOREACH Event = State.Events %] |
| [%- IF Event.NextState != "end_state" %] |
| #include "mmeStates/[% FILENAME(Event.NextState) %].h" |
| [%- END %] |
| [%- END %] |
| |
| using namespace mme; |
| using namespace SM; |
| |
| /****************************************************************************** |
| * Constructor |
| ******************************************************************************/ |
| [% stateClassName %]::[% stateClassName %]():State(State_e::[% State.Name %]) |
| { |
| } |
| |
| /****************************************************************************** |
| * Destructor |
| ******************************************************************************/ |
| [% stateClassName %]::~[% stateClassName %]() |
| { |
| } |
| |
| /****************************************************************************** |
| * creates and returns static instance |
| ******************************************************************************/ |
| [% stateClassName %]* [% stateClassName %]::Instance() |
| { |
| static [% stateClassName %] state; |
| return &state; |
| } |
| |
| /****************************************************************************** |
| * initializes eventToActionsMap |
| ******************************************************************************/ |
| void [% stateClassName %]::initialize() |
| { |
| [%- FOREACH Event = State.Events %] |
| { |
| ActionTable actionTable; |
| [%- FOREACH Action = Event.Actions %] |
| actionTable.addAction(&ActionHandlers::[% String.new(Action).lower %]); |
| [%- END %] |
| [%- IF Event.NextState != "end_state" %] |
| actionTable.setNextState([% CLASSNAME(Event.NextState) %]::Instance()); |
| [%- END %] |
| eventToActionsMap.insert(pair<Event_e, ActionTable>(Event_e::[% Event.Name %], actionTable)); |
| } |
| [%- END %] |
| } |