CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Friends
edmplugin::PluginFactory< R *(void)> Class Template Reference

#include <PluginFactory.h>

Inheritance diagram for edmplugin::PluginFactory< R *(void)>:
edmplugin::PluginFactoryBase

Classes

struct  PMaker
 
struct  PMakerBase
 

Public Types

typedef R * TemplateArgType (void)
 
- Public Types inherited from edmplugin::PluginFactoryBase
typedef std::map< std::string,
PMakers
Plugins
 
typedef std::vector< std::pair
< void *, std::string > > 
PMakers
 

Public Member Functions

virtual const std::string & category () const
 returns the name of the category to which this plugin factory belongs More...
 
R * create (const std::string &iName) const
 
void registerPMaker (PMakerBase *iPMaker, const std::string &iName)
 
R * tryToCreate (const std::string &iName) const
 like above but returns 0 if iName is unknown More...
 
- Public Member Functions inherited from edmplugin::PluginFactoryBase
virtual std::vector< PluginInfoavailable () const
 return info about all plugins which are already available in the program More...
 
 PluginFactoryBase ()
 
virtual ~PluginFactoryBase ()
 

Static Public Member Functions

static PluginFactory< R *(void)> * get ()
 

Private Member Functions

const PluginFactoryoperator= (const PluginFactory &)
 
 PluginFactory ()
 
 PluginFactory (const PluginFactory &)
 

Friends

class DummyFriend
 

Additional Inherited Members

- Public Attributes inherited from edmplugin::PluginFactoryBase
sigc::signal< void, const
std::string &, const
PluginInfo & > 
newPluginAdded_
 signal containing plugin category, and plugin info for newly added plugin More...
 
- Protected Member Functions inherited from edmplugin::PluginFactoryBase
void fillAvailable (std::vector< PluginInfo > &iReturn) const
 
void fillInfo (const PMakers &makers, PluginInfo &iInfo, std::vector< PluginInfo > &iReturn) const
 
Plugins::const_iterator findPMaker (const std::string &iName) const
 
void finishedConstruction ()
 
void newPlugin (const std::string &iName)
 
void registerPMaker (void *iPMaker, const std::string &iName)
 
Plugins::const_iterator tryToFindPMaker (const std::string &iName) const
 
- Protected Attributes inherited from edmplugin::PluginFactoryBase
Plugins m_plugins
 

Detailed Description

template<class R>
class edmplugin::PluginFactory< R *(void)>

Definition at line 35 of file PluginFactory.h.

Member Typedef Documentation

template<class R >
typedef R* edmplugin::PluginFactory< R *(void)>::TemplateArgType(void)

Definition at line 39 of file PluginFactory.h.

Constructor & Destructor Documentation

template<class R >
edmplugin::PluginFactory< R *(void)>::PluginFactory ( )
inlineprivate

Definition at line 79 of file PluginFactory.h.

79  {
81  }
template<class R >
edmplugin::PluginFactory< R *(void)>::PluginFactory ( const PluginFactory< R *(void)> &  )
private

Member Function Documentation

template<class R >
virtual const std::string& edmplugin::PluginFactory< R *(void)>::category ( ) const
virtual

returns the name of the category to which this plugin factory belongs

Implements edmplugin::PluginFactoryBase.

template<class R >
R* edmplugin::PluginFactory< R *(void)>::create ( const std::string &  iName) const
inline

Definition at line 58 of file PluginFactory.h.

References SurfaceDeformationFactory::create(), and edmplugin::PluginFactoryBase::findPMaker().

58  {
59  return reinterpret_cast<PMakerBase*>(PluginFactoryBase::findPMaker(iName)->second.front().first)->create();
60  }
R * create(const std::string &iName) const
Definition: PluginFactory.h:58
Plugins::const_iterator findPMaker(const std::string &iName) const
template<class R >
static PluginFactory<R*(void)>* edmplugin::PluginFactory< R *(void)>::get ( )
static
template<class R >
const PluginFactory& edmplugin::PluginFactory< R *(void)>::operator= ( const PluginFactory< R *(void)> &  )
private
template<class R >
void edmplugin::PluginFactory< R *(void)>::registerPMaker ( PMakerBase *  iPMaker,
const std::string &  iName 
)
inline

Definition at line 74 of file PluginFactory.h.

References edmplugin::PluginFactoryBase::registerPMaker().

74  {
75  PluginFactoryBase::registerPMaker(iPMaker, iName);
76  }
void registerPMaker(void *iPMaker, const std::string &iName)
template<class R >
R* edmplugin::PluginFactory< R *(void)>::tryToCreate ( const std::string &  iName) const
inline

like above but returns 0 if iName is unknown

Definition at line 63 of file PluginFactory.h.

References SurfaceDeformationFactory::create(), and edmplugin::PluginFactoryBase::tryToFindPMaker().

63  {
64  typename Plugins::const_iterator itFound = PluginFactoryBase::tryToFindPMaker(iName);
65  if(itFound ==m_plugins.end() ) {
66  return 0;
67  }
68  return reinterpret_cast<PMakerBase*>(itFound->second.front().first)->create();
69  }
R * create(const std::string &iName) const
Definition: PluginFactory.h:58
Plugins::const_iterator tryToFindPMaker(const std::string &iName) const

Friends And Related Function Documentation

template<class R >
friend class DummyFriend
friend

Definition at line 37 of file PluginFactory.h.