24 #ifndef GAMMARAY_METAPROPERTY_H
25 #define GAMMARAY_METAPROPERTY_H
27 #include "gammaray_core_export.h"
44 virtual QString name()
const = 0;
47 virtual QVariant value(
void *
object)
const = 0;
50 virtual bool isReadOnly()
const = 0;
53 virtual void setValue(
void *
object,
const QVariant &value) = 0;
56 virtual QString typeName()
const = 0;
69 template <
typename Class,
typename ValueType,
typename SetterArgType = ValueType>
75 ValueType (Class::*getter)()
const,
void (Class::*setter)(SetterArgType) = 0)
76 : m_name(name), m_getter(getter), m_setter(setter)
80 inline QString
name()
const
87 return m_setter == 0 ;
90 inline QVariant
value(
void *
object)
const
93 return value(static_cast<Class*>(
object));
98 setValue(static_cast<Class*>(
object), value);
102 inline QVariant
value(Class *
object)
const
105 const ValueType v = (
object->*(m_getter))();
106 return QVariant::fromValue(v);
114 (
object->*(m_setter))(value.value<ValueType>());
117 inline QString typeName()
const
119 return QMetaType::typeName(qMetaTypeId<ValueType>()) ;
124 ValueType (Class::*m_getter)()
const;
125 void (Class::*m_setter)(SetterArgType);