29 #ifndef GAMMARAY_METAPROPERTY_H
30 #define GAMMARAY_METAPROPERTY_H
32 #include "gammaray_core_export.h"
52 virtual QVariant value(
void *
object)
const = 0;
55 virtual bool isReadOnly()
const = 0;
58 virtual void setValue(
void *
object,
const QVariant &value);
61 virtual QString typeName()
const = 0;
78 struct strip_const_ref {
typedef T type; };
81 struct strip_const_ref<const T&> {
typedef T type; };
87 template <
typename Class,
typename GetterReturnType,
typename SetterArgType = GetterReturnType>
91 typedef typename detail::strip_const_ref<GetterReturnType>::type ValueType;
96 GetterReturnType (Class::*getter)()
const,
void (Class::*setter)(SetterArgType) = 0)
103 return m_setter == 0 ;
106 inline QVariant
value(
void *
object)
const
110 const ValueType v = (
static_cast<Class*
>(object)->*(m_getter))();
111 return QVariant::fromValue(v);
120 (
static_cast<Class*
>(object)->*(m_setter))(value.value<ValueType>());
125 return QMetaType::typeName(qMetaTypeId<ValueType>()) ;
129 GetterReturnType (Class::*m_getter)()
const;
130 void (Class::*m_setter)(SetterArgType);
135 template <
typename Class,
typename GetterReturnType>
139 typedef typename detail::strip_const_ref<GetterReturnType>::type ValueType;
152 inline QVariant
value(
void *
object)
const
156 const ValueType v = m_getter();
157 return QVariant::fromValue(v);
162 return QMetaType::typeName(qMetaTypeId<ValueType>()) ;
166 GetterReturnType (*m_getter)();
Definition: endpoint.h:41