8 #ifndef ATLAS_OBJECTS_OBJECTFACTORY_H 9 #define ATLAS_OBJECTS_OBJECTFACTORY_H 11 #include <Atlas/Objects/Root.h> 12 #include <Atlas/Objects/SmartPtr.h> 19 namespace Atlas {
namespace Objects {
28 name(std::move(factoryName)) { }
31 const std::string & getName() {
45 return T::allocator.getDefaultObjectInstance();
52 typedef Root (*FactoryMethod)(
const std::string &, int);
53 typedef Root (*DefaultInstanceMethod)(
const std::string &, int);
76 typedef std::map<const std::string, Factory > FactoryMap;
81 friend class AddFactories;
86 bool hasFactory(
const std::string& name);
87 Root createObject(
const std::string& name);
88 Root createObject(
const Atlas::Message::MapType & msg);
89 Root getDefaultInstance(
const std::string& name);
90 std::list<std::string> getKeys();
91 int addFactory(
const std::string& name, FactoryMethod method, DefaultInstanceMethod defaultInstanceMethod);
95 FactoryMap m_factories;
105 void addFactory(
const std::string& name, FactoryMethod method, DefaultInstanceMethod defaultInstanceMethod,
int classno);
116 template <
typename T>
117 void addFactory(
const std::string& name,
int classno);
120 extern std::map<const std::string, Root> objectDefinitions;
123 template <
typename T>
124 void Factories::addFactory(
const std::string& name,
int classno)
126 addFactory(name, &factory<T>, &defaultInstance<T>, classno);
131 #endif // ATLAS_OBJECTS_OBJECTFACTORY_H DefaultInstanceMethod default_instance_method
Method for accessing the default instance.
Definition: objectFactory.h:69
Definition: objectFactory.h:78
The Atlas namespace.
Definition: Bridge.h:20
Holds methods for creating new instances and accessing the default instance.
Definition: objectFactory.h:58
Definition: objectFactory.h:21
FactoryMethod factory_method
Method for creating a new instance.
Definition: objectFactory.h:64
int classno
The class number for the objects created by this factory.
Definition: objectFactory.h:74
Base class for all exceptions thrown by Atlas-C++.
Definition: Exception.h:17