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 *(Arg)> Class Template Reference

#include <PluginFactory.h>

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

Classes

struct  PMaker
 
struct  PMakerBase
 

Public Types

typedef R * TemplateArgType (Arg)
 
- 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, Arg iArg) const
 
void registerPMaker (PMakerBase *iPMaker, const std::string &iName)
 
R * tryToCreate (const std::string &iName, Arg iArg) 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 *(Arg)> * 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 Arg>
class edmplugin::PluginFactory< R *(Arg)>

Definition at line 89 of file PluginFactory.h.

Member Typedef Documentation

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

Definition at line 93 of file PluginFactory.h.

Constructor & Destructor Documentation

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

Definition at line 131 of file PluginFactory.h.

131  {
133  }
template<class R , class Arg >
edmplugin::PluginFactory< R *(Arg)>::PluginFactory ( const PluginFactory< R *(Arg)> &  )
private

Member Function Documentation

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

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

Implements edmplugin::PluginFactoryBase.

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

Definition at line 111 of file PluginFactory.h.

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

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

Definition at line 126 of file PluginFactory.h.

References edmplugin::PluginFactoryBase::registerPMaker().

126  {
127  PluginFactoryBase::registerPMaker(iPMaker, iName);
128  }
void registerPMaker(void *iPMaker, const std::string &iName)
template<class R , class Arg >
R* edmplugin::PluginFactory< R *(Arg)>::tryToCreate ( const std::string &  iName,
Arg  iArg 
) const
inline

like above but returns 0 if iName is unknown

Definition at line 115 of file PluginFactory.h.

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

115  {
116  typename Plugins::const_iterator itFound = PluginFactoryBase::tryToFindPMaker(iName);
117  if(itFound ==m_plugins.end() ) {
118  return 0;
119  }
120  return reinterpret_cast<PMakerBase *>(itFound->second.front().first)->create(iArg);
121  }
R * create(const std::string &iName, Arg iArg) const
Plugins::const_iterator tryToFindPMaker(const std::string &iName) const

Friends And Related Function Documentation

template<class R , class Arg >
friend class DummyFriend
friend

Definition at line 91 of file PluginFactory.h.