8 #ifndef ATLAS_OBJECTS_OBJECTFACTORY_H
9 #define ATLAS_OBJECTS_OBJECTFACTORY_H
11 #include <Atlas/Objects/Root.h>
12 #include <Atlas/Objects/SmartPtr.h>
18 namespace Atlas {
namespace Objects {
28 const std::string & getName() {
40 SmartPtr<RootData> generic_factory(
const std::string & name,
int no);
41 SmartPtr<RootData> anonymous_factory(
const std::string & name,
int no);
43 typedef Root (*FactoryMethod)(
const std::string &, int);
44 typedef std::map<const std::string, std::pair<FactoryMethod, int> > FactoryMap;
49 friend class AddFactories;
54 bool hasFactory(
const std::string& name);
55 Root createObject(
const std::string& name);
56 Root createObject(
const Atlas::Message::MapType & msg);
57 std::list<std::string> getKeys();
58 int addFactory(
const std::string& name, FactoryMethod method);
62 FactoryMap m_factories;
65 void addFactory(
const std::string& name, FactoryMethod method,
int classno);
68 extern std::map<const std::string, Root> objectDefinitions;
72 #endif // ATLAS_OBJECTS_OBJECTFACTORY_H