dc29bb23af
- aggiunta possibilità di avere lista nomi dei gestori di ObjUser.
59 lines
1.8 KiB
C++
59 lines
1.8 KiB
C++
//----------------------------------------------------------------------------
|
|
// EgalTech 2015-2015
|
|
//----------------------------------------------------------------------------
|
|
// File : ObjUserFactory.h Data : 22.05.15 Versione : 1.6e3
|
|
// Contenuto : Factory della classe IObjUser.
|
|
//
|
|
//
|
|
//
|
|
// Modifiche : 22.05.15 DS Creazione modulo.
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
//--------------------------- Include ----------------------------------------
|
|
#include "stdafx.h"
|
|
#include "/EgtDev/Include/EGkObjUserFactory.h"
|
|
|
|
using namespace std ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
bool
|
|
ObjUserFactory::Register( const string& sName, ObjUserCreator Creator)
|
|
{
|
|
return GetCreatorMap().emplace( sName, Creator).second ;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
IObjUser*
|
|
ObjUserFactory::Create( const string& sName)
|
|
{
|
|
auto Iter = GetCreatorMap().find( sName) ;
|
|
if ( Iter != GetCreatorMap().end()) {
|
|
if ( Iter->second != nullptr)
|
|
return Iter->second() ;
|
|
}
|
|
return nullptr ;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
bool
|
|
ObjUserFactory::GetList( STRVECTOR& vsList)
|
|
{
|
|
// verifico parametro di ritorno
|
|
if ( &vsList == nullptr)
|
|
return false ;
|
|
// ciclo sugli oggetti registrati
|
|
for ( auto Iter = GetCreatorMap().cbegin() ; Iter != GetCreatorMap().cend() ; ++ Iter)
|
|
vsList.emplace_back( Iter->first) ;
|
|
return true ;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
ObjUserFactory::CreatorMap&
|
|
ObjUserFactory::GetCreatorMap( void)
|
|
{
|
|
static CreatorMap s_CreatorMap ;
|
|
return s_CreatorMap ;
|
|
}
|