28 #ifndef GAMMARAY_METAOBJECTREPOSITORY_H
29 #define GAMMARAY_METAOBJECTREPOSITORY_H
31 #include "gammaray_core_export.h"
62 MetaObject *metaObject(
const QString &typeName)
const;
67 bool hasMetaObject(
const QString &typeName)
const;
73 void initBuiltInTypes();
74 void initQObjectTypes();
76 void initNetworkTypes();
78 void initOpenGLTypes();
81 QHash<QString, MetaObject*> m_metaObjects;
87 #define MO_ADD_BASECLASS(Base) \
88 Q_ASSERT(MetaObjectRepository::instance()->hasMetaObject(QLatin1String(#Base))); \
89 mo->addBaseClass(MetaObjectRepository::instance()->metaObject(QLatin1String(#Base)));
95 #define MO_ADD_METAOBJECT0(Class) \
96 mo = new MetaObjectImpl<Class>; \
97 mo->setClassName(QLatin1String(#Class)); \
98 MetaObjectRepository::instance()->addMetaObject(mo);
103 #define MO_ADD_METAOBJECT1(Class, Base1) \
104 mo = new MetaObjectImpl<Class, Base1>; \
105 mo->setClassName(QLatin1String(#Class)); \
106 MO_ADD_BASECLASS(Base1) \
107 MetaObjectRepository::instance()->addMetaObject(mo);
112 #define MO_ADD_METAOBJECT2(Class, Base1, Base2) \
113 mo = new MetaObjectImpl<Class, Base1, Base2>; \
114 mo->setClassName(QLatin1String(#Class)); \
115 MO_ADD_BASECLASS(Base1) \
116 MO_ADD_BASECLASS(Base2) \
117 MetaObjectRepository::instance()->addMetaObject(mo);
120 #define MO_ADD_PROPERTY(Class, Type, Getter, Setter) \
121 mo->addProperty(new MetaPropertyImpl<Class, Type>( \
122 QLatin1String(#Getter), \
124 static_cast<void (Class::*)(Type)>(&Class::Setter)) \
128 #define MO_ADD_PROPERTY_CR(Class, Type, Getter, Setter) \
129 mo->addProperty(new MetaPropertyImpl<Class, Type, const Type&>( \
130 QLatin1String(#Getter), \
132 static_cast<void (Class::*)(const Type&)>(&Class::Setter)) \
136 #define MO_ADD_PROPERTY_RO(Class, Type, Getter) \
137 mo->addProperty(new MetaPropertyImpl<Class, Type>( \
138 QLatin1String(#Getter), \
141 #endif // GAMMARAY_METAOBJECTREPOSITORY_H