#include <ObjectFactory.h>
Main class used to register and dynamically create objects. More...
Main class used to register and dynamically create objects.
It uses the Factory design pattern, where each class is registered in a map and dynamically retrieved given the type name.
It also stores metainformation on each class, such as description, authors, license, and available template types.
Classes | |
| class | BaseObjectCreator |
| class | ClassEntry |
| Record storing information about a class. More... | |
Protected Attributes | |
| ClassEntryMap | registry |
| Main registry of all classes. More... | |
| OnCreateCallback | m_callbackOnCreate |
| RegisteredPluginSet | m_registeredPluginSet |
Public Member Functions | |
| ~ObjectFactory () | |
| ClassEntry & | getEntry (std::string classname) |
| Get an entry given a class name (or alias) More... | |
| bool | hasCreator (std::string classname) |
| Test if a creator exists for a given classname. More... | |
| std::string | shortName (std::string classname) |
| void | getAllEntries (std::vector< ClassEntry::SPtr > &result, bool filterUnloadedPlugins=true) |
| Fill the given vector with all the registered classes. More... | |
| void | getEntriesFromTarget (std::vector< ClassEntry::SPtr > &result, std::string target) |
| Fill the given vector with the registered classes from a given target. More... | |
| std::string | listClassesFromTarget (std::string target, std::string separator=", ") |
| Return the list of classes from a given target. More... | |
| template<class BaseClass > | |
| void | getEntriesDerivedFrom (std::vector< ClassEntry::SPtr > &result) const |
| Fill the given vector with all the registered classes derived from BaseClass. More... | |
| template<class BaseClass > | |
| std::string | listClassesDerivedFrom (const std::string &separator=", ") const |
| Return the list of classes derived from BaseClass as a string. More... | |
| bool | addAlias (std::string name, std::string target, bool force=false, ClassEntry::SPtr *previous=nullptr) |
| void | resetAlias (std::string name, ClassEntry::SPtr previous) |
| objectmodel::BaseObject::SPtr | createObject (objectmodel::BaseContext *context, objectmodel::BaseObjectDescription *arg) |
| Create an object given a context and a description. More... | |
| void | dump (std::ostream &out=std::cout) |
| Dump the content of the factory to a text stream. More... | |
| void | dumpXML (std::ostream &out=std::cout) |
| Dump the content of the factory to a XML stream. More... | |
| void | dumpHTML (std::ostream &out=std::cout) |
| Dump the content of the factory to a HTML stream. More... | |
| void | setCallback (OnCreateCallback cb) |
| bool | registerObjectsFromPlugin (const std::string &pluginName) |
| bool | registerObjects (ObjectRegistrationData &ro) |
Static Public Member Functions | |
| static ObjectFactory * | getInstance () |
| Get the ObjectFactory singleton instance. More... | |
| static objectmodel::BaseObject::SPtr | CreateObject (objectmodel::BaseContext *context, objectmodel::BaseObjectDescription *arg) |
| Create an object given a context and a description. More... | |
| static bool | AddAlias (std::string name, std::string result, bool force=false, ClassEntry::SPtr *previous=nullptr) |
| static void | ResetAlias (std::string name, ClassEntry::SPtr previous) |
| static bool | HasCreator (std::string classname) |
| Test if a creator exists for a given classname. More... | |
| static std::string | ShortName (std::string classname) |
|
protected |
|
protected |
|
protected |
Main registry of all classes.
| sofa::core::ObjectFactory::~ObjectFactory | ( | ) |
|
inlinestatic |
Add an alias name for an already registered class
| name | name of the new alias |
| target | class pointed to by the new alias |
| force | set to true if this method should override any entry already registered for this name |
| previous | (output) previous ClassEntry registered for this name |
| bool sofa::core::ObjectFactory::addAlias | ( | std::string | name, |
| std::string | target, | ||
| bool | force = false, |
||
| ClassEntry::SPtr * | previous = nullptr |
||
| ) |
Add an alias name for an already registered class
| name | name of the new alias |
| target | class pointed to by the new alias |
| force | set to true if this method should override any entry already registered for this name |
| previous | (output) previous ClassEntry registered for this name |
| objectmodel::BaseObject::SPtr sofa::core::ObjectFactory::createObject | ( | objectmodel::BaseContext * | context, |
| objectmodel::BaseObjectDescription * | arg | ||
| ) |
Create an object given a context and a description.
|
inlinestatic |
Create an object given a context and a description.
| void sofa::core::ObjectFactory::dump | ( | std::ostream & | out = std::cout | ) |
Dump the content of the factory to a text stream.
| void sofa::core::ObjectFactory::dumpHTML | ( | std::ostream & | out = std::cout | ) |
Dump the content of the factory to a HTML stream.
| void sofa::core::ObjectFactory::dumpXML | ( | std::ostream & | out = std::cout | ) |
Dump the content of the factory to a XML stream.
| void sofa::core::ObjectFactory::getAllEntries | ( | std::vector< ClassEntry::SPtr > & | result, |
| bool | filterUnloadedPlugins = true |
||
| ) |
Fill the given vector with all the registered classes.
| void sofa::core::ObjectFactory::getEntriesDerivedFrom | ( | std::vector< ClassEntry::SPtr > & | result | ) | const |
Fill the given vector with all the registered classes derived from BaseClass.
| void sofa::core::ObjectFactory::getEntriesFromTarget | ( | std::vector< ClassEntry::SPtr > & | result, |
| std::string | target | ||
| ) |
Fill the given vector with the registered classes from a given target.
| ObjectFactory::ClassEntry & sofa::core::ObjectFactory::getEntry | ( | std::string | classname | ) |
Get an entry given a class name (or alias)
|
static |
Get the ObjectFactory singleton instance.
| bool sofa::core::ObjectFactory::hasCreator | ( | std::string | classname | ) |
Test if a creator exists for a given classname.
|
inlinestatic |
Test if a creator exists for a given classname.
| std::string sofa::core::ObjectFactory::listClassesDerivedFrom | ( | const std::string & | separator = ", " | ) | const |
Return the list of classes derived from BaseClass as a string.
| std::string sofa::core::ObjectFactory::listClassesFromTarget | ( | std::string | target, |
| std::string | separator = ", " |
||
| ) |
Return the list of classes from a given target.
| bool sofa::core::ObjectFactory::registerObjects | ( | ObjectRegistrationData & | ro | ) |
| bool sofa::core::ObjectFactory::registerObjectsFromPlugin | ( | const std::string & | pluginName | ) |
| void sofa::core::ObjectFactory::resetAlias | ( | std::string | name, |
| ClassEntry::SPtr | previous | ||
| ) |
Reset an alias to a previous state
| name | name of the new alias |
| previous | previous ClassEntry that need to be registered back for this name |
|
inlinestatic |
Reset an alias to a previous state
| name | name of the new alias |
| previous | previous ClassEntry that need to be registered back for this name |
|
inline |
| std::string sofa::core::ObjectFactory::shortName | ( | std::string | classname | ) |
Return the shortname for this classname. Empty string if no creator exists for this classname.
|
inlinestatic |