
/*
 * Copyright 2019-present Infosys Limited  
 *   
 * SPDX-License-Identifier: Apache-2.0    
 */
 
/**************************************
 * tauStart.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/stateFactory.cpp.tt>
 **************************************/

#include "mmeStates/stateFactory.h"
#include "mmeStates/attachStart.h"
#include "mmeStates/attachWfAia.h"
#include "mmeStates/attachWfAttCmp.h"
#include "mmeStates/attachWfAuthResp.h"
#include "mmeStates/attachWfAuthRespValidate.h"
#include "mmeStates/attachWfCsResp.h"
#include "mmeStates/attachWfEsmInfoCheck.h"
#include "mmeStates/attachWfEsmInfoResp.h"
#include "mmeStates/attachWfIdentityResponse.h"
#include "mmeStates/attachWfImsiValidateAction.h"
#include "mmeStates/attachWfInitCtxtResp.h"
#include "mmeStates/attachWfInitCtxtRespAttCmp.h"
#include "mmeStates/attachWfMbResp.h"
#include "mmeStates/attachWfSecCmp.h"
#include "mmeStates/attachWfUla.h"
#include "mmeStates/defaultMmeState.h"
#include "mmeStates/detachStart.h"
#include "mmeStates/detachWfDelSessionResp.h"
#include "mmeStates/niDetachStart.h"
#include "mmeStates/niDetachWfDelSessResp.h"
#include "mmeStates/niDetachWfDetAccptDelSessResp.h"
#include "mmeStates/niDetachWfDetachAccept.h"
#include "mmeStates/niDetachWfS1RelComp.h"
#include "mmeStates/pagingStart.h"
#include "mmeStates/pagingWfServiceReq.h"
#include "mmeStates/s1ReleaseStart.h"
#include "mmeStates/s1ReleaseWfReleaseAccessBearerResp.h"
#include "mmeStates/s1ReleaseWfUeCtxtReleaseComp.h"
#include "mmeStates/serviceRequestStart.h"
#include "mmeStates/serviceRequestWfAuthAndSecCheckCmp.h"
#include "mmeStates/serviceRequestWfInitCtxtResp.h"
#include "mmeStates/serviceRequestWfMbResp.h"
#include "mmeStates/tauStart.h"    

using namespace mme;

/**********************************************
* Constructor
***********************************************/
StateFactory::StateFactory()
{
}

/**********************************************
* Destructor
***********************************************/
StateFactory::~StateFactory()
{
}

/**********************************************
* creates and returns static instance
***********************************************/

StateFactory* StateFactory::Instance()
{
	static StateFactory instance;
	return &instance;
}

void StateFactory::initialize()
{
	AttachStart::Instance()->initialize();
	AttachWfAia::Instance()->initialize();
	AttachWfAttCmp::Instance()->initialize();
	AttachWfAuthResp::Instance()->initialize();
	AttachWfAuthRespValidate::Instance()->initialize();
	AttachWfCsResp::Instance()->initialize();
	AttachWfEsmInfoCheck::Instance()->initialize();
	AttachWfEsmInfoResp::Instance()->initialize();
	AttachWfIdentityResponse::Instance()->initialize();
	AttachWfImsiValidateAction::Instance()->initialize();
	AttachWfInitCtxtResp::Instance()->initialize();
	AttachWfInitCtxtRespAttCmp::Instance()->initialize();
	AttachWfMbResp::Instance()->initialize();
	AttachWfSecCmp::Instance()->initialize();
	AttachWfUla::Instance()->initialize();
	DefaultMmeState::Instance()->initialize();
	DetachStart::Instance()->initialize();
	DetachWfDelSessionResp::Instance()->initialize();
	NiDetachStart::Instance()->initialize();
	NiDetachWfDelSessResp::Instance()->initialize();
	NiDetachWfDetAccptDelSessResp::Instance()->initialize();
	NiDetachWfDetachAccept::Instance()->initialize();
	NiDetachWfS1RelComp::Instance()->initialize();
	PagingStart::Instance()->initialize();
	PagingWfServiceReq::Instance()->initialize();
	S1ReleaseStart::Instance()->initialize();
	S1ReleaseWfReleaseAccessBearerResp::Instance()->initialize();
	S1ReleaseWfUeCtxtReleaseComp::Instance()->initialize();
	ServiceRequestStart::Instance()->initialize();
	ServiceRequestWfAuthAndSecCheckCmp::Instance()->initialize();
	ServiceRequestWfInitCtxtResp::Instance()->initialize();
	ServiceRequestWfMbResp::Instance()->initialize();
	TauStart::Instance()->initialize();
}
