 [%- DataBlock = TemplateInputVar %]
 [%- USE String %]
 [%- MACRO CLASSNAME(str) BLOCK %]
 [%- className =  String.new %]
 [%- strList =  String.new(str).split("_") %]
 [%- FOREACH str = strList %]
 [%-    token = className.append(String.new(str).capital.text()) %]
 [%- END %]
 [%- className = className.append("Manager") %]
 [%- 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 %] 
 [%- poolMgrClassName = CLASSNAME(DataBlock.BlockName) -%]
/*
 * Copyright 2019-present Infosys Limited  
 *   
 * SPDX-License-Identifier: Apache-2.0    
 */ 
/******************************************************************************
 * [% FILENAME(DataBlock.BlockName) %].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/ctxtManagerTmpls/blockPoolManager.cpp.tt>
 ******************************************************************************/

#include "memPoolManager.h"
#include "contextManager/dataBlocks.h"
#include "contextManager/[% FILENAME(DataBlock.BlockName) %].h"

using namespace cmn::memPool;

namespace mme
{
	/******************************************************************************
	* Constructor
	******************************************************************************/
	[%poolMgrClassName%]::[%poolMgrClassName%](int numOfBlocks):poolManager_m(numOfBlocks)
	{
	}
	
	/******************************************************************************
	* Destructor
	******************************************************************************/
	[%poolMgrClassName%]::~[%poolMgrClassName%]()
	{
	}
	
	/******************************************************************************
	* Allocate [% DataBlock.BlockName %] data block
	******************************************************************************/
	[% DataBlock.BlockName %]* [%poolMgrClassName%]::allocate[% DataBlock.BlockName %]()
	{
		[% DataBlock.BlockName %]* [% DataBlock.BlockName %]_p = poolManager_m.allocate();
		return [% DataBlock.BlockName %]_p;
	}
	
	/******************************************************************************
	* Deallocate a [% DataBlock.BlockName %] data block
	******************************************************************************/
	void [%poolMgrClassName%]::deallocate[% DataBlock.BlockName %]([% DataBlock.BlockName %]* [% DataBlock.BlockName %]p)
	{
		poolManager_m.free( [% DataBlock.BlockName %]p );
	}
}