Diana Software
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
QGeneralFactory Class Reference

This class take care of plugin registration and creation. More...

Inheritance diagram for QGeneralFactory:
QNamed

Public Member Functions

virtual ~QGeneralFactory ()
 
void LoadPlugin (const std::string &name)
 
void Register (QModFactory< QModule > *MF)
 
QModuleCreateModule (const std::string &name, QSequence *s)
 
void Register (QModFactory< QReader > *MF)
 
QReaderCreateReader (const std::string &name, QSequence *s)
 
void Register (QModFactory< QWriter > *MF)
 
QWriterCreateWriter (const std::string &name, QSequence *s)
 
void Register (QModFactory< QFilter > *MF)
 
QFilterCreateFilter (const std::string &name, QSequence *s)
 
void Register (QModFactory< QDriver > *MF)
 
QDriverCreateDriver (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 QGeneralFactoryGetInstance ()
 

Private Member Functions

 QGeneralFactory ()
 

Private Attributes

QDLLLoaderfDLLLoader
 
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
 

Detailed Description

This class take care of plugin registration and creation.

Author
Marco Vignati

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.

Constructor & Destructor Documentation

◆ ~QGeneralFactory()

QGeneralFactory::~QGeneralFactory ( )
virtual

Definition at line 26 of file QGeneralFactory.cc.

References fDrivers, fFilters, fModules, fReaders, and fWriters.

◆ QGeneralFactory()

QGeneralFactory::QGeneralFactory ( )
private

Member Function Documentation

◆ CreateDriver()

QDriver * QGeneralFactory::CreateDriver ( const std::string &  name,
QSequence s 
)

Definition at line 184 of file QGeneralFactory.cc.

References fDrivers, and LoadPlugin().

Referenced by QModuleFactory::CreateDriver().

◆ CreateFilter()

QFilter * QGeneralFactory::CreateFilter ( const std::string &  name,
QSequence s 
)

Definition at line 157 of file QGeneralFactory.cc.

References fFilters, and LoadPlugin().

Referenced by QModuleFactory::CreateFilter().

◆ CreateModule()

QModule * QGeneralFactory::CreateModule ( const std::string &  name,
QSequence s 
)

Definition at line 72 of file QGeneralFactory.cc.

References fModules, and LoadPlugin().

Referenced by QModuleFactory::CreateModule().

◆ CreateReader()

QReader * QGeneralFactory::CreateReader ( const std::string &  name,
QSequence s 
)

Definition at line 129 of file QGeneralFactory.cc.

References fReaders, and LoadPlugin().

Referenced by QModuleFactory::CreateReader().

◆ CreateWriter()

QWriter * QGeneralFactory::CreateWriter ( const std::string &  name,
QSequence s 
)

Definition at line 101 of file QGeneralFactory.cc.

References fWriters, and LoadPlugin().

Referenced by QModuleFactory::CreateWriter().

◆ GetInstance()

Q_BEGIN_NAMESPACE QGeneralFactory & QGeneralFactory::GetInstance ( )
static

◆ LoadPlugin()

void QGeneralFactory::LoadPlugin ( const std::string &  name)

◆ Register() [1/5]

void QGeneralFactory::Register ( QModFactory< QDriver > *  MF)

◆ Register() [2/5]

void QGeneralFactory::Register ( QModFactory< QFilter > *  MF)

◆ Register() [3/5]

void QGeneralFactory::Register ( QModFactory< QModule > *  MF)

◆ Register() [4/5]

void QGeneralFactory::Register ( QModFactory< QReader > *  MF)

◆ Register() [5/5]

void QGeneralFactory::Register ( QModFactory< QWriter > *  MF)

Member Data Documentation

◆ fDLLLoader

QDLLLoader* QGeneralFactory::fDLLLoader
private

Definition at line 68 of file QGeneralFactory.hh.

Referenced by LoadPlugin(), and QGeneralFactory().

◆ fDrivers

std::map<std::string, QModFactory<QDriver>* > QGeneralFactory::fDrivers
private

Definition at line 74 of file QGeneralFactory.hh.

Referenced by CreateDriver(), Register(), and ~QGeneralFactory().

◆ fFilters

std::map<std::string, QModFactory<QFilter>* > QGeneralFactory::fFilters
private

Definition at line 71 of file QGeneralFactory.hh.

Referenced by CreateFilter(), Register(), and ~QGeneralFactory().

◆ fModules

std::map<std::string, QModFactory<QModule>* > QGeneralFactory::fModules
private

Definition at line 70 of file QGeneralFactory.hh.

Referenced by CreateModule(), Register(), and ~QGeneralFactory().

◆ fReaders

std::map<std::string, QModFactory<QReader>* > QGeneralFactory::fReaders
private

Definition at line 72 of file QGeneralFactory.hh.

Referenced by CreateReader(), Register(), and ~QGeneralFactory().

◆ fWriters

std::map<std::string, QModFactory<QWriter>* > QGeneralFactory::fWriters
private

Definition at line 73 of file QGeneralFactory.hh.

Referenced by CreateWriter(), Register(), and ~QGeneralFactory().


The documentation for this class was generated from the following files: