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...
 
FlashAlgoBase * create (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 FlashAlgoFactory & get ()
 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: