* Try to find stored object identified by its unique class identifier.
*
* @param classId
* @return reference to object in memory or throw an exception
*/
Integrator*get(unsignedintclassId)const;
/**
* Try to find stored object identified by its class name.
*
* @param className
* @return reference to object in memory or throw an exception
*/
Integrator*get(conststd::string&className)const;
private:
/**
* Because NumA++ can be use in a multi-threading program we must ensure that only one object manipulates the registry at the same time to avoid memory access violation.
* It's performed by a mechanism called mutex or semaphore.
*/
mutablesf::Mutexm_mutex;
/**
* Private pointer of this class for a unique instance
*/
staticIntegratorRegistry*m_pInstance;
/**
* Private default constructor for a unique instance
*/
IntegratorRegistry();
std::map<unsignedint,Integrator*>m_baseObjectList;///< list of registered objects identified by their unique integer identifier
std::map<std::string,Integrator*>m_translateList;///< list of registered objects identified by their class name.