24 #ifndef GAMMARAY_METAOBJECT_H
25 #define GAMMARAY_METAOBJECT_H
27 #include "gammaray_core_export.h"
29 #include "metaproperty.h"
45 int propertyCount()
const;
50 MetaProperty *propertyAt(
int index)
const;
56 void addProperty(MetaProperty *property);
59 QString className()
const;
65 void *castForPropertyAt(
void *
object,
int index)
const;
67 void setClassName(
const QString &className);
73 virtual void *castToBaseClass(
void *
object,
int baseClassIndex)
const = 0;
76 QVector<MetaObject*> m_baseClasses;
79 QVector<MetaProperty*> m_properties;
84 template <
typename T,
typename Base1 =
void,
typename Base2 =
void,
typename Base3 =
void>
90 Q_ASSERT(baseClassIndex >= 0 && baseClassIndex < m_baseClasses.size());
91 switch (baseClassIndex) {
93 return static_cast<Base1*
>(
static_cast<T*
>(object));
95 return static_cast<Base2*
>(
static_cast<T*
>(object));
97 return static_cast<Base3*
>(
static_cast<T*
>(object));
106 #endif // GAMMARAY_METAOBJECT_H