33 #ifndef GAMMARAY_METAOBJECTREPOSITORY_H
34 #define GAMMARAY_METAOBJECTREPOSITORY_H
36 #include "gammaray_core_export.h"
67 MetaObject *metaObject(
const QString& typeName)
const;
72 bool hasMetaObject(
const QString &typeName)
const;
78 void initBuiltInTypes();
79 void initQObjectTypes();
81 void initNetworkTypes();
83 void initOpenGLTypes();
86 QHash<QString, MetaObject*> m_metaObjects;
92 #define MO_ADD_BASECLASS(Base) \
93 Q_ASSERT(GammaRay::MetaObjectRepository::instance()->hasMetaObject(QLatin1String(#Base))); \
94 mo->addBaseClass(GammaRay::MetaObjectRepository::instance()->metaObject(QLatin1String(#Base)));
100 #define MO_ADD_METAOBJECT0(Class) \
101 mo = new GammaRay::MetaObjectImpl<Class>; \
102 mo->setClassName(QLatin1String(#Class)); \
103 GammaRay::MetaObjectRepository::instance()->addMetaObject(mo);
108 #define MO_ADD_METAOBJECT1(Class, Base1) \
109 mo = new GammaRay::MetaObjectImpl<Class, Base1>; \
110 mo->setClassName(QLatin1String(#Class)); \
111 MO_ADD_BASECLASS(Base1) \
112 GammaRay::MetaObjectRepository::instance()->addMetaObject(mo);
117 #define MO_ADD_METAOBJECT2(Class, Base1, Base2) \
118 mo = new GammaRay::MetaObjectImpl<Class, Base1, Base2>; \
119 mo->setClassName(QLatin1String(#Class)); \
120 MO_ADD_BASECLASS(Base1) \
121 MO_ADD_BASECLASS(Base2) \
122 GammaRay::MetaObjectRepository::instance()->addMetaObject(mo);
125 #define MO_ADD_PROPERTY(Class, Type, Getter, Setter) \
126 mo->addProperty(new GammaRay::MetaPropertyImpl<Class, Type>( \
127 QLatin1String(#Getter), \
129 static_cast<void (Class::*)(Type)>(&Class::Setter)) \
133 #define MO_ADD_PROPERTY_CR(Class, Type, Getter, Setter) \
134 mo->addProperty(new GammaRay::MetaPropertyImpl<Class, Type, const Type&>( \
135 QLatin1String(#Getter), \
137 static_cast<void (Class::*)(const Type&)>(&Class::Setter)) \
141 #define MO_ADD_PROPERTY_RO(Class, Type, Getter) \
142 mo->addProperty(new GammaRay::MetaPropertyImpl<Class, Type>( \
143 QLatin1String(#Getter), \
147 #define MO_ADD_PROPERTY_ST(Class, Type, Getter) \
148 mo->addProperty(new GammaRay::MetaStaticPropertyImpl<Class, Type>( \
149 QLatin1String(#Getter), \
152 #endif // GAMMARAY_METAOBJECTREPOSITORY_H
Definition: endpoint.h:41