![]() |
Diana Software
|
This class take care of plugin registration and creation. More...
Public Member Functions | |
| virtual | ~QGeneralFactory () |
| void | LoadPlugin (const std::string &name) |
| void | Register (QModFactory< QModule > *MF) |
| QModule * | CreateModule (const std::string &name, QSequence *s) |
| void | Register (QModFactory< QReader > *MF) |
| QReader * | CreateReader (const std::string &name, QSequence *s) |
| void | Register (QModFactory< QWriter > *MF) |
| QWriter * | CreateWriter (const std::string &name, QSequence *s) |
| void | Register (QModFactory< QFilter > *MF) |
| QFilter * | CreateFilter (const std::string &name, QSequence *s) |
| void | Register (QModFactory< QDriver > *MF) |
| QDriver * | CreateDriver (const std::string &name, QSequence *s) |
Public Member Functions inherited from QNamed | |
| QNamed () | |
| QNamed (const std::string &Name) | |
| virtual | ~QNamed () |
| const std::string & | GetName () const |
| void | SetName (const std::string &name) |
Static Public Member Functions | |
| static QGeneralFactory & | GetInstance () |
Private Member Functions | |
| QGeneralFactory () | |
Private Attributes | |
| QDLLLoader * | fDLLLoader |
| std::map< std::string, QModFactory< QModule > * > | fModules |
| std::map< std::string, QModFactory< QFilter > * > | fFilters |
| std::map< std::string, QModFactory< QReader > * > | fReaders |
| std::map< std::string, QModFactory< QWriter > * > | fWriters |
| std::map< std::string, QModFactory< QDriver > * > | fDrivers |
This class take care of plugin registration and creation.
Each plugin (MyPlugin) must implement a function like this:
void registerInFactoryMyPlugin()
this function creates a MyPluginFactory and register it in the QGeneralFactory.
When at run time an application ask to LoadPlugin("MyPlugin") the QDll system
open the library that contains registerMyPlugin and executes it so that the MyPluginFactory
is automatically created and registered into the QGeneralFactory.
Once a plugin is registered other applications can call the CreatePluginType("MyPlugin") that
in turns call the MyPluginFactory and return a pointer to the newly created MyPlugin instance.
Reference: http://www.nuclex.org/articles/building-a-better-plugin-architecture (Option 1)
Definition at line 43 of file QGeneralFactory.hh.
|
virtual |
|
private |
Definition at line 13 of file QGeneralFactory.cc.
References QMessageHandler::Debug(), err, fDLLLoader, QDLLLoader::GetInstance(), QNamed::GetName(), QDLLLoader::Init(), QMessageHandler::Panic(), Q_PLUGIN_PREFIX_STR, and QERR_SUCCESS.
Definition at line 184 of file QGeneralFactory.cc.
References fDrivers, and LoadPlugin().
Referenced by QModuleFactory::CreateDriver().
Definition at line 157 of file QGeneralFactory.cc.
References fFilters, and LoadPlugin().
Referenced by QModuleFactory::CreateFilter().
Definition at line 72 of file QGeneralFactory.cc.
References fModules, and LoadPlugin().
Referenced by QModuleFactory::CreateModule().
Definition at line 129 of file QGeneralFactory.cc.
References fReaders, and LoadPlugin().
Referenced by QModuleFactory::CreateReader().
Definition at line 101 of file QGeneralFactory.cc.
References fWriters, and LoadPlugin().
Referenced by QModuleFactory::CreateWriter().
|
static |
Definition at line 7 of file QGeneralFactory.cc.
Referenced by QModuleFactory::CreateDriver(), QModuleFactory::CreateFilter(), QModuleFactory::CreateModule(), QModuleFactory::CreateReader(), and QModuleFactory::CreateWriter().
| void QGeneralFactory::LoadPlugin | ( | const std::string & | name | ) |
Definition at line 52 of file QGeneralFactory.cc.
References err, QMessageHandler::Error(), fDLLLoader, QNamed::GetName(), QDLLLoader::LoadPlugin(), and QERR_SUCCESS.
Referenced by CreateDriver(), CreateFilter(), CreateModule(), CreateReader(), and CreateWriter().
| void QGeneralFactory::Register | ( | QModFactory< QDriver > * | MF | ) |
Definition at line 171 of file QGeneralFactory.cc.
References QMessageHandler::Debug(), fDrivers, QNamed::GetName(), and QModFactory< T >::GetName().
| void QGeneralFactory::Register | ( | QModFactory< QFilter > * | MF | ) |
Definition at line 144 of file QGeneralFactory.cc.
References QMessageHandler::Debug(), fFilters, QNamed::GetName(), and QModFactory< T >::GetName().
| void QGeneralFactory::Register | ( | QModFactory< QModule > * | MF | ) |
Definition at line 59 of file QGeneralFactory.cc.
References QMessageHandler::Debug(), fModules, QNamed::GetName(), and QModFactory< T >::GetName().
| void QGeneralFactory::Register | ( | QModFactory< QReader > * | MF | ) |
Definition at line 116 of file QGeneralFactory.cc.
References QMessageHandler::Debug(), fReaders, QNamed::GetName(), and QModFactory< T >::GetName().
| void QGeneralFactory::Register | ( | QModFactory< QWriter > * | MF | ) |
Definition at line 88 of file QGeneralFactory.cc.
References QMessageHandler::Debug(), fWriters, QNamed::GetName(), and QModFactory< T >::GetName().
|
private |
Definition at line 68 of file QGeneralFactory.hh.
Referenced by LoadPlugin(), and QGeneralFactory().
|
private |
Definition at line 74 of file QGeneralFactory.hh.
Referenced by CreateDriver(), Register(), and ~QGeneralFactory().
|
private |
Definition at line 71 of file QGeneralFactory.hh.
Referenced by CreateFilter(), Register(), and ~QGeneralFactory().
|
private |
Definition at line 70 of file QGeneralFactory.hh.
Referenced by CreateModule(), Register(), and ~QGeneralFactory().
|
private |
Definition at line 72 of file QGeneralFactory.hh.
Referenced by CreateReader(), Register(), and ~QGeneralFactory().
|
private |
Definition at line 73 of file QGeneralFactory.hh.
Referenced by CreateWriter(), Register(), and ~QGeneralFactory().