CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
LogicFactory< Ilogic, Identifier, LogicCreator > Class Template Reference

#include <LogicFactory.h>

Public Member Functions

Ilogic * CreateObject (const Identifier &id)
 
bool Register (const Identifier &id, LogicCreator creator)
 
bool Unregister (const Identifier &id)
 

Private Attributes

std::map< Identifier,
LogicCreator > 
m_associations
 

Detailed Description

template<class Ilogic, typename Identifier, typename LogicCreator = Ilogic * (*)()>
class LogicFactory< Ilogic, Identifier, LogicCreator >

Author
Andres Osorio

email: aosor.nosp@m.io@u.nosp@m.niand.nosp@m.es.e.nosp@m.du.co

Date
2008-10-11

Definition at line 20 of file LogicFactory.h.

Member Function Documentation

template<class Ilogic, typename Identifier, typename LogicCreator = Ilogic * (*)()>
Ilogic* LogicFactory< Ilogic, Identifier, LogicCreator >::CreateObject ( const Identifier &  id)
inline

Definition at line 38 of file LogicFactory.h.

Referenced by LogicTool< RBCLogic >::retrieve().

39  {
40  typename std::map<Identifier, LogicCreator>::const_iterator itr;
41  itr = m_associations.find( id );
42 
43  if ( itr != m_associations.end() ) {
44  return ( itr->second )();
45  } else return NULL; // handle error
46  }
std::map< Identifier, LogicCreator > m_associations
Definition: LogicFactory.h:52
#define NULL
Definition: scimark2.h:8
template<class Ilogic, typename Identifier, typename LogicCreator = Ilogic * (*)()>
bool LogicFactory< Ilogic, Identifier, LogicCreator >::Register ( const Identifier &  id,
LogicCreator  creator 
)
inline

Definition at line 23 of file LogicFactory.h.

Referenced by LogicTool< RBCLogic >::initialise().

24  {
25  return m_associations.insert(typename std::map<Identifier, LogicCreator>::value_type(id,creator)).second;
26  }
std::map< Identifier, LogicCreator > m_associations
Definition: LogicFactory.h:52
template<class Ilogic, typename Identifier, typename LogicCreator = Ilogic * (*)()>
bool LogicFactory< Ilogic, Identifier, LogicCreator >::Unregister ( const Identifier &  id)
inline

Definition at line 28 of file LogicFactory.h.

Referenced by LogicTool< RBCLogic >::endjob().

29  {
30  typename std::map<Identifier, LogicCreator>::const_iterator itr;
31  itr = m_associations.find(id);
32  if( itr != m_associations.end() ) {
33  delete ( itr->second )() ;
34  }
35  return m_associations.erase(id) == 1;
36  }
std::map< Identifier, LogicCreator > m_associations
Definition: LogicFactory.h:52

Member Data Documentation

template<class Ilogic, typename Identifier, typename LogicCreator = Ilogic * (*)()>
std::map<Identifier, LogicCreator> LogicFactory< Ilogic, Identifier, LogicCreator >::m_associations
private