29 #ifndef GAMMARAY_METAPROPERTY_H
30 #define GAMMARAY_METAPROPERTY_H
32 #include "gammaray_core_export.h"
48 const char* name()
const;
51 virtual QVariant value(
void *
object)
const = 0;
54 virtual bool isReadOnly()
const = 0;
57 virtual void setValue(
void *
object,
const QVariant &value);
60 virtual const char* typeName()
const = 0;
77 struct strip_const_ref {
typedef T type; };
80 struct strip_const_ref<const T&> {
typedef T type; };
86 template <
typename Class,
typename GetterReturnType,
typename SetterArgType = GetterReturnType>
90 typedef typename detail::strip_const_ref<GetterReturnType>::type ValueType;
95 GetterReturnType (Class::*getter)()
const,
void (Class::*setter)(SetterArgType) = 0)
102 return m_setter == 0 ;
105 QVariant
value(
void *
object)
const Q_DECL_OVERRIDE
109 const ValueType v = (
static_cast<Class*
>(object)->*(m_getter))();
110 return QVariant::fromValue(v);
119 (
static_cast<Class*
>(object)->*(m_setter))(
value.value<ValueType>());
124 return QMetaType::typeName(qMetaTypeId<ValueType>()) ;
128 GetterReturnType (Class::*m_getter)()
const;
129 void (Class::*m_setter)(SetterArgType);
134 template <
typename Class,
typename GetterReturnType>
138 typedef typename detail::strip_const_ref<GetterReturnType>::type ValueType;
151 QVariant
value(
void *
object)
const Q_DECL_OVERRIDE
155 const ValueType v = m_getter();
156 return QVariant::fromValue(v);
161 return QMetaType::typeName(qMetaTypeId<ValueType>()) ;
165 GetterReturnType (*m_getter)();
Definition: endpoint.h:42