24 constexpr inline QMetaMethod() : mobj(
nullptr), data({
nullptr }) {}
26 QByteArray methodSignature()
const;
27 QByteArray name()
const;
28 QByteArrayView nameView()
const;
29 const char *typeName()
const;
30 int returnType()
const;
31 QMetaType returnMetaType()
const;
32 int parameterCount()
const;
33 int parameterType(
int index)
const;
34 QMetaType parameterMetaType(
int index)
const;
35 void getParameterTypes(
int *types)
const;
36 QList<QByteArray> parameterTypes()
const;
37 QByteArray parameterTypeName(
int index)
const;
38 QList<QByteArray> parameterNames()
const;
39 const char *tag()
const;
40 enum Access { Private, Protected, Public };
41 Access access()
const;
43 Method = QMETHOD_CODE,
44 Signal QT7_ONLY(= QSIGNAL_CODE),
45 Slot QT7_ONLY(= QSLOT_CODE),
48 MethodType methodType()
const;
49 enum Attributes { Compatibility = 0x1, Cloned = 0x2, Scriptable = 0x4 };
50 int attributes()
const;
51 int methodIndex()
const;
52 int relativeMethodIndex()
const;
56 inline const QMetaObject *enclosingMetaObject()
const {
return mobj; }
58#if QT_VERSION <= QT_VERSION_CHECK(7
, 0
, 0
)
59 bool invoke(QObject *object,
60 Qt::ConnectionType connectionType,
61 QGenericReturnArgument returnValue,
62 QGenericArgument val0 = QGenericArgument(
nullptr),
63 QGenericArgument val1 = QGenericArgument(),
64 QGenericArgument val2 = QGenericArgument(),
65 QGenericArgument val3 = QGenericArgument(),
66 QGenericArgument val4 = QGenericArgument(),
67 QGenericArgument val5 = QGenericArgument(),
68 QGenericArgument val6 = QGenericArgument(),
69 QGenericArgument val7 = QGenericArgument(),
70 QGenericArgument val8 = QGenericArgument(),
71 QGenericArgument val9 = QGenericArgument())
const;
72 inline bool invoke(QObject *object,
73 QGenericReturnArgument returnValue,
74 QGenericArgument val0 = QGenericArgument(
nullptr),
75 QGenericArgument val1 = QGenericArgument(),
76 QGenericArgument val2 = QGenericArgument(),
77 QGenericArgument val3 = QGenericArgument(),
78 QGenericArgument val4 = QGenericArgument(),
79 QGenericArgument val5 = QGenericArgument(),
80 QGenericArgument val6 = QGenericArgument(),
81 QGenericArgument val7 = QGenericArgument(),
82 QGenericArgument val8 = QGenericArgument(),
83 QGenericArgument val9 = QGenericArgument())
const
85 return invoke(object, Qt::AutoConnection, returnValue,
86 val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);
88 inline bool invoke(QObject *object,
89 Qt::ConnectionType connectionType,
90 QGenericArgument val0,
91 QGenericArgument val1 = QGenericArgument(),
92 QGenericArgument val2 = QGenericArgument(),
93 QGenericArgument val3 = QGenericArgument(),
94 QGenericArgument val4 = QGenericArgument(),
95 QGenericArgument val5 = QGenericArgument(),
96 QGenericArgument val6 = QGenericArgument(),
97 QGenericArgument val7 = QGenericArgument(),
98 QGenericArgument val8 = QGenericArgument(),
99 QGenericArgument val9 = QGenericArgument())
const
101 return invoke(object, connectionType, QGenericReturnArgument(),
102 val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);
104 inline bool invoke(QObject *object,
105 QGenericArgument val0,
106 QGenericArgument val1 = QGenericArgument(),
107 QGenericArgument val2 = QGenericArgument(),
108 QGenericArgument val3 = QGenericArgument(),
109 QGenericArgument val4 = QGenericArgument(),
110 QGenericArgument val5 = QGenericArgument(),
111 QGenericArgument val6 = QGenericArgument(),
112 QGenericArgument val7 = QGenericArgument(),
113 QGenericArgument val8 = QGenericArgument(),
114 QGenericArgument val9 = QGenericArgument())
const
116 return invoke(object, Qt::AutoConnection, QGenericReturnArgument(),
117 val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);
119 bool invokeOnGadget(
void *gadget,
120 QGenericReturnArgument returnValue,
121 QGenericArgument val0 = QGenericArgument(
nullptr),
122 QGenericArgument val1 = QGenericArgument(),
123 QGenericArgument val2 = QGenericArgument(),
124 QGenericArgument val3 = QGenericArgument(),
125 QGenericArgument val4 = QGenericArgument(),
126 QGenericArgument val5 = QGenericArgument(),
127 QGenericArgument val6 = QGenericArgument(),
128 QGenericArgument val7 = QGenericArgument(),
129 QGenericArgument val8 = QGenericArgument(),
130 QGenericArgument val9 = QGenericArgument())
const;
131 inline bool invokeOnGadget(
void *gadget,
132 QGenericArgument val0,
133 QGenericArgument val1 = QGenericArgument(),
134 QGenericArgument val2 = QGenericArgument(),
135 QGenericArgument val3 = QGenericArgument(),
136 QGenericArgument val4 = QGenericArgument(),
137 QGenericArgument val5 = QGenericArgument(),
138 QGenericArgument val6 = QGenericArgument(),
139 QGenericArgument val7 = QGenericArgument(),
140 QGenericArgument val8 = QGenericArgument(),
141 QGenericArgument val9 = QGenericArgument())
const
143 return invokeOnGadget(gadget, QGenericReturnArgument(),
144 val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);
148 template <
typename ReturnArg,
typename... Args>
152 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
154 invoke(QObject *obj, Qt::ConnectionType c, QTemplatedMetaMethodReturnArgument<ReturnArg> r,
155 Args &&... arguments)
const
157 auto h = QtPrivate::invokeMethodHelper(r, std::forward<Args>(arguments)...);
158 return invokeImpl(*
this, obj, c, h.parameterCount(), h.parameters.data(),
159 h.typeNames.data(), h.metaTypes.data());
162 template <
typename... Args>
166 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
168 invoke(QObject *obj, Qt::ConnectionType c, Args &&... arguments)
const
170 return invoke(obj, c, QTemplatedMetaMethodReturnArgument<
void>{}, std::forward<Args>(arguments)...);
173 template <
typename ReturnArg,
typename... Args>
177 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
179 invoke(QObject *obj, QTemplatedMetaMethodReturnArgument<ReturnArg> r, Args &&... arguments)
const
181 return invoke(obj, Qt::AutoConnection, r, std::forward<Args>(arguments)...);
184 template <
typename... Args>
188 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
190 invoke(QObject *obj, Args &&... arguments)
const
192 return invoke(obj, Qt::AutoConnection, std::forward<Args>(arguments)...);
195 template <
typename ReturnArg,
typename... Args>
199 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
201 invokeOnGadget(
void *gadget, QTemplatedMetaMethodReturnArgument<ReturnArg> r, Args &&... arguments)
const
203 auto h = QtPrivate::invokeMethodHelper(r, std::forward<Args>(arguments)...);
204 return invokeImpl(*
this, gadget, Qt::ConnectionType(-1), h.parameterCount(),
205 h.parameters.data(), h.typeNames.data(), h.metaTypes.data());
208 template <
typename... Args>
212 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
214 invokeOnGadget(
void *gadget, Args &&... arguments)
const
216 return invokeOnGadget(gadget, QTemplatedMetaMethodReturnArgument<
void>{}, std::forward<Args>(arguments)...);
219 inline bool isValid()
const {
return mobj !=
nullptr; }
221 template <
typename PointerToMemberFunction>
222 static inline QMetaMethod fromSignal(PointerToMemberFunction signal)
224 typedef QtPrivate::FunctionPointer<PointerToMemberFunction> SignalType;
225 static_assert(QtPrivate::HasQ_OBJECT_Macro<
typename SignalType::Object>::Value,
226 "No Q_OBJECT in the class with the signal");
227 return fromSignalImpl(&SignalType::Object::staticMetaObject,
228 reinterpret_cast<
void **>(&signal));
232 static bool invokeImpl(QMetaMethod self,
void *target, Qt::ConnectionType, qsizetype paramCount,
233 const void *
const *parameters,
const char *
const *typeNames,
234 const QtPrivate::QMetaTypeInterface *
const *metaTypes);
235 static QMetaMethod fromSignalImpl(
const QMetaObject *,
void **);
236 static QMetaMethod fromRelativeMethodIndex(
const QMetaObject *mobj,
int index);
237 static QMetaMethod fromRelativeConstructorIndex(
const QMetaObject *mobj,
int index);
243 uint name()
const {
return d[0]; }
244 uint argc()
const {
return d[1]; }
245 uint parameters()
const {
return d[2]; }
246 uint tag()
const {
return d[3]; }
247 uint flags()
const {
return d[4]; }
248 uint metaTypeOffset()
const {
return d[5]; }
249 bool operator==(
const Data &other)
const {
return d == other.d; }
254 constexpr QMetaMethod(
const QMetaObject *metaObject,
const Data &data_)
255 : mobj(metaObject), data(data_)
259 const QMetaObject *mobj;
261 friend struct QMetaObject;
262 friend struct QMetaObjectPrivate;
263 friend class QObject;
266 friend bool comparesEqual(
const QMetaMethod &lhs,
const QMetaMethod &rhs)
noexcept
267 {
return lhs.data == rhs.data; }
268 Q_DECLARE_EQUALITY_COMPARABLE(QMetaMethod)
344 constexpr QMetaProperty() : mobj(
nullptr), data({
nullptr }) {}
346 const char *name()
const;
347 const char *typeName()
const;
348#if QT_DEPRECATED_SINCE(6
, 0
)
350 QT_WARNING_DISABLE_DEPRECATED
351 QT_DEPRECATED_VERSION_6_0
352 QVariant::Type type()
const
353 {
int t = userType();
return t >= QMetaType::User ? QVariant::UserType : QVariant::Type(t); }
356 int userType()
const {
return typeId(); }
357 int typeId()
const {
return metaType().rawId(); }
358 QMetaType metaType()
const;
359 int propertyIndex()
const;
360 int relativePropertyIndex()
const;
362 bool isReadable()
const;
363 bool isWritable()
const;
364 bool isResettable()
const;
365 bool isDesignable()
const;
366 bool isScriptable()
const;
367 bool isStored()
const;
369 bool isConstant()
const;
370 bool isFinal()
const;
371 bool isVirtual()
const;
372 bool isOverride()
const;
373 bool isRequired()
const;
374 bool isBindable()
const;
376 bool isFlagType()
const;
377 bool isEnumType()
const;
378 QMetaEnum enumerator()
const;
380 bool hasNotifySignal()
const;
381 QMetaMethod notifySignal()
const;
382 int notifySignalIndex()
const;
384 int revision()
const;
386 QVariant read(
const QObject *obj)
const;
387 bool write(QObject *obj,
const QVariant &value)
const;
388 bool write(QObject *obj, QVariant &&value)
const;
389 bool reset(QObject *obj)
const;
391 QUntypedBindable bindable(QObject *object)
const;
393 QVariant readOnGadget(
const void *gadget)
const;
394 bool writeOnGadget(
void *gadget,
const QVariant &value)
const;
395 bool writeOnGadget(
void *gadget, QVariant &&value)
const;
396 bool resetOnGadget(
void *gadget)
const;
398 bool hasStdCppSet()
const;
399 bool isAlias()
const;
400 inline bool isValid()
const {
return isReadable(); }
401 inline const QMetaObject *enclosingMetaObject()
const {
return mobj; }
404#if QT_DEPRECATED_SINCE(6
, 4
)
405 QT_DEPRECATED_VERSION_X_6_4(
"obsolete, simply returns typeId()")
406 int registerPropertyType()
const;
412 uint name()
const {
return d[0]; }
413 uint type()
const {
return d[1]; }
414 uint flags()
const {
return d[2]; }
415 uint notifyIndex()
const {
return d[3]; }
416 uint revision()
const {
return d[4]; }
418 int index(
const QMetaObject *mobj)
const;
423 QMetaProperty(
const QMetaObject *mobj,
int index);
424 static Data getMetaPropertyData(
const QMetaObject *mobj,
int index);
426 const QMetaObject *mobj;
429 friend struct QMetaObject;
430 friend struct QMetaObjectPrivate;