 [%- 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.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 
 /******************************************************
 * [% FILENAME(State.Name) %].h
 * 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.h.tt>
 ******************************************************/
 
#ifndef __[% stateClassName %]__
#define __[% stateClassName %]__

#include "state.h"

namespace mme {

	class [% stateClassName %] : public SM::State
	{
		public:
			/******************************************
			* Instance 
			*    Creates static instance for the state
			*******************************************/
			static [% stateClassName %]* Instance();

			/****************************************
			* [% stateClassName %]
			*    Destructor
			****************************************/
			~[% stateClassName %]();			
			
			/******************************************
			* initialize
			*  Initializes action handlers for the state
			* and next state
			******************************************/
			void initialize();
	
		private:
			/****************************************
			* [% stateClassName %]
			*    Private constructor
			****************************************/
			[% stateClassName %]();  
	};
};
#endif // __[% stateClassName %]__
