18 #ifndef CLASSREGISTRY_H 19 #define CLASSREGISTRY_H 35 #define REGISTER_CLASS(BASE, TYPE, KEY, REGISTRY) \ 36 static ClassRegistration<BASE> _class_registration_ ## TYPE(REGISTRY, &ClassRegistry<BASE>::factory<TYPE>, KEY); 49 typedef T* (*Factory)(void);
55 template<
class Sub
class>
78 if (!m_items.contains(key))
81 return m_items[key]();
106 registry->
add(factory, key);
110 #endif // CLASSREGISTRY_H T * create(const QString &key)
Definition: classregistry.h:76
ClassRegistration(ClassRegistry< T > *registry, typename ClassRegistry< T >::Factory factory, const QString &key)
Definition: classregistry.h:102
A class for creating objects based on the class' runtime name or key (a string).
Definition: classregistry.h:45
const QMap< QString, Factory > & items() const
Definition: classregistry.h:62
void add(Factory f, const QString &key)
Definition: classregistry.h:67
A class for registering a new subclass of the templated class.
Definition: classregistry.h:90
T *(* Factory)(void)
Definition: classregistry.h:49
static T * factory()
Definition: classregistry.h:56