All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
pmtana::FlashAlgoFactory Class Reference

Factory class for instantiating flash algorithm instance. More...

#include <FlashAlgoFactory.h>

Public Member Functions

 ~FlashAlgoFactory ()
 Default dtor. More...
 
void add_factory (const std::string name, pmtana::FlashAlgoFactoryBase *factory)
 Factory registration method (should be called by global factory instance in algorithm header) More...
 
FlashAlgoBasecreate (const std::string name, const std::string instance_name)
 Factory creation method (should be called by clients, possibly you!) More...
 

Static Public Member Functions

static FlashAlgoFactoryget ()
 Static sharable instance getter. More...
 

Private Member Functions

 FlashAlgoFactory ()
 Default ctor, shouldn't be used. More...
 

Private Attributes

std::map< std::string,
pmtana::FlashAlgoFactoryBase * > 
_factory_map
 Static factory container. More...
 

Static Private Attributes

static FlashAlgoFactory_me = nullptr
 Static self. More...
 

Detailed Description

Factory class for instantiating flash algorithm instance.

Definition at line 40 of file icaruscode/icaruscode/PMT/OpReco/FlashFinder/FlashAlgoFactory.h.

Constructor & Destructor Documentation

pmtana::FlashAlgoFactory::FlashAlgoFactory ( )
inlineprivate

Default ctor, shouldn't be used.

Definition at line 43 of file icaruscode/icaruscode/PMT/OpReco/FlashFinder/FlashAlgoFactory.h.

43 {}
pmtana::FlashAlgoFactory::~FlashAlgoFactory ( )
inline

Default dtor.

Definition at line 46 of file icaruscode/icaruscode/PMT/OpReco/FlashFinder/FlashAlgoFactory.h.

46 {_factory_map.clear();}
std::map< std::string, pmtana::FlashAlgoFactoryBase * > _factory_map
Static factory container.

Member Function Documentation

void pmtana::FlashAlgoFactory::add_factory ( const std::string  name,
pmtana::FlashAlgoFactoryBase factory 
)
inline

Factory registration method (should be called by global factory instance in algorithm header)

Definition at line 51 of file icaruscode/icaruscode/PMT/OpReco/FlashFinder/FlashAlgoFactory.h.

52  { _factory_map[name] = factory; }
std::map< std::string, pmtana::FlashAlgoFactoryBase * > _factory_map
Static factory container.
then echo fcl name
FlashAlgoBase* pmtana::FlashAlgoFactory::create ( const std::string  name,
const std::string  instance_name 
)
inline

Factory creation method (should be called by clients, possibly you!)

Definition at line 54 of file icaruscode/icaruscode/PMT/OpReco/FlashFinder/FlashAlgoFactory.h.

54  {
55  auto iter = _factory_map.find(name);
56  if(iter == _factory_map.end() || !((*iter).second)) {
57  std::cerr << "Found no registered class " << name << std::endl;
58  return nullptr;
59  }
60  auto ptr = (*iter).second->create(instance_name);
61  return ptr;
62  }
BEGIN_PROLOG could also be cerr
std::map< std::string, pmtana::FlashAlgoFactoryBase * > _factory_map
Static factory container.
then echo fcl name
static FlashAlgoFactory& pmtana::FlashAlgoFactory::get ( )
inlinestatic

Static sharable instance getter.

Definition at line 48 of file icaruscode/icaruscode/PMT/OpReco/FlashFinder/FlashAlgoFactory.h.

49  { if(!_me) _me = new FlashAlgoFactory; return *_me; }

Member Data Documentation

std::map<std::string,pmtana::FlashAlgoFactoryBase*> pmtana::FlashAlgoFactory::_factory_map
private

Static factory container.

Definition at line 66 of file icaruscode/icaruscode/PMT/OpReco/FlashFinder/FlashAlgoFactory.h.

pmtana::FlashAlgoFactory * pmtana::FlashAlgoFactory::_me = nullptr
staticprivate

Static self.

Definition at line 68 of file icaruscode/icaruscode/PMT/OpReco/FlashFinder/FlashAlgoFactory.h.


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