29 #ifndef GAMMARAY_METAOBJECT_H
30 #define GAMMARAY_METAOBJECT_H
32 #include "gammaray_core_export.h"
34 #include "metaproperty.h"
50 int propertyCount()
const;
64 QString className()
const;
70 void *castForPropertyAt(
void *
object,
int index)
const;
72 void setClassName(
const QString &className);
75 bool inherits(
const QString &className)
const;
81 virtual void *castToBaseClass(
void *
object,
int baseClassIndex)
const = 0;
84 QVector<MetaObject*> m_baseClasses;
87 QVector<MetaProperty*> m_properties;
92 template <
typename T,
typename Base1 =
void,
typename Base2 =
void,
typename Base3 =
void>
98 Q_ASSERT(baseClassIndex >= 0 && baseClassIndex < m_baseClasses.size());
99 switch (baseClassIndex) {
101 return static_cast<Base1*
>(
static_cast<T*
>(object));
103 return static_cast<Base2*
>(
static_cast<T*
>(object));
105 return static_cast<Base3*
>(
static_cast<T*
>(object));
114 #endif // GAMMARAY_METAOBJECT_H
Definition: endpoint.h:42