Belle II Software  release-05-01-25
CreatorManager.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Andreas Moll, Martin Ritter *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #ifndef CREATORMANAGER_H
12 #define CREATORMANAGER_H
13 
14 #include <string>
15 #include <map>
16 
17 namespace Belle2 {
22  namespace geometry {
23 
24  class CreatorBase;
25 
27  class CreatorManager {
28  public:
30  typedef CreatorBase* CreatorFactory();
31 
38  static void registerCreatorFactory(const std::string& name, CreatorFactory* factory);
39 
54  static CreatorBase* getCreator(const std::string& name, const std::string& library = "");
55 
56  protected:
58  CreatorManager() {}
60  CreatorManager(const CreatorManager&) = delete;
62  void operator=(const CreatorManager&) = delete;
64  static CreatorManager& getInstance();
66  std::map<std::string, CreatorFactory*> m_creatorFactories;
67  };
68 
69  }
71 } //end of namespace Belle2
72 
73 #endif /* CREATORMANAGER_H_ */
Belle2::geometry::CreatorManager
Class to manage all creators and provide factory access.
Definition: CreatorManager.h:35
Belle2::geometry::CreatorManager::CreatorManager
CreatorManager()
singleton, hide constructor
Definition: CreatorManager.h:66
Belle2::geometry::CreatorManager::operator=
void operator=(const CreatorManager &)=delete
singleton, hide assignment operator
Belle2::geometry::CreatorManager::getCreator
static CreatorBase * getCreator(const std::string &name, const std::string &library="")
Return a new instance of a creator with the given name.
Definition: CreatorManager.cc:33
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::geometry::CreatorManager::registerCreatorFactory
static void registerCreatorFactory(const std::string &name, CreatorFactory *factory)
Register a new creator by providing a name and a pointer to a factory for this kind of creator.
Definition: CreatorManager.cc:28
Belle2::geometry::CreatorManager::m_creatorFactories
std::map< std::string, CreatorFactory * > m_creatorFactories
Static map to hold all registered factories.
Definition: CreatorManager.h:74
Belle2::geometry::CreatorManager::getInstance
static CreatorManager & getInstance()
getter for the singleton instance
Definition: CreatorManager.cc:20
Belle2::geometry::CreatorBase
Pure virtual base class for all geometry creators.
Definition: CreatorBase.h:31
Belle2::geometry::CreatorFactory
Very simple class to provide an easy way to register creators with the CreatorManager.
Definition: CreatorFactory.h:42
Belle2::geometry::CreatorManager::CreatorFactory
CreatorBase * CreatorFactory()
Typedef for a factory function.
Definition: CreatorManager.h:38