22 constexpr inline QMetaMethod() : mobj(
nullptr), data({
nullptr }) {}
24 QByteArray methodSignature()
const;
25 QByteArray name()
const;
26 QByteArrayView nameView()
const;
27 const char *typeName()
const;
28 int returnType()
const;
29 QMetaType returnMetaType()
const;
30 int parameterCount()
const;
31 int parameterType(
int index)
const;
32 QMetaType parameterMetaType(
int index)
const;
33 void getParameterTypes(
int *types)
const;
34 QList<QByteArray> parameterTypes()
const;
35 QByteArray parameterTypeName(
int index)
const;
36 QList<QByteArray> parameterNames()
const;
37 const char *tag()
const;
38 enum Access { Private, Protected, Public };
39 Access access()
const;
41 Method = QMETHOD_CODE,
42 Signal QT7_ONLY(= QSIGNAL_CODE),
43 Slot QT7_ONLY(= QSLOT_CODE),
46 MethodType methodType()
const;
47 enum Attributes { Compatibility = 0x1, Cloned = 0x2, Scriptable = 0x4 };
48 int attributes()
const;
49 int methodIndex()
const;
50 int relativeMethodIndex()
const;
54 inline const QMetaObject *enclosingMetaObject()
const {
return mobj; }
56#if QT_VERSION <= QT_VERSION_CHECK(7
, 0
, 0
)
57 bool invoke(QObject *object,
58 Qt::ConnectionType connectionType,
59 QGenericReturnArgument returnValue,
60 QGenericArgument val0 = QGenericArgument(
nullptr),
61 QGenericArgument val1 = QGenericArgument(),
62 QGenericArgument val2 = QGenericArgument(),
63 QGenericArgument val3 = QGenericArgument(),
64 QGenericArgument val4 = QGenericArgument(),
65 QGenericArgument val5 = QGenericArgument(),
66 QGenericArgument val6 = QGenericArgument(),
67 QGenericArgument val7 = QGenericArgument(),
68 QGenericArgument val8 = QGenericArgument(),
69 QGenericArgument val9 = QGenericArgument())
const;
70 inline bool invoke(QObject *object,
71 QGenericReturnArgument returnValue,
72 QGenericArgument val0 = QGenericArgument(
nullptr),
73 QGenericArgument val1 = QGenericArgument(),
74 QGenericArgument val2 = QGenericArgument(),
75 QGenericArgument val3 = QGenericArgument(),
76 QGenericArgument val4 = QGenericArgument(),
77 QGenericArgument val5 = QGenericArgument(),
78 QGenericArgument val6 = QGenericArgument(),
79 QGenericArgument val7 = QGenericArgument(),
80 QGenericArgument val8 = QGenericArgument(),
81 QGenericArgument val9 = QGenericArgument())
const
83 return invoke(object, Qt::AutoConnection, returnValue,
84 val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);
86 inline bool invoke(QObject *object,
87 Qt::ConnectionType connectionType,
88 QGenericArgument val0,
89 QGenericArgument val1 = QGenericArgument(),
90 QGenericArgument val2 = QGenericArgument(),
91 QGenericArgument val3 = QGenericArgument(),
92 QGenericArgument val4 = QGenericArgument(),
93 QGenericArgument val5 = QGenericArgument(),
94 QGenericArgument val6 = QGenericArgument(),
95 QGenericArgument val7 = QGenericArgument(),
96 QGenericArgument val8 = QGenericArgument(),
97 QGenericArgument val9 = QGenericArgument())
const
99 return invoke(object, connectionType, QGenericReturnArgument(),
100 val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);
102 inline bool invoke(QObject *object,
103 QGenericArgument val0,
104 QGenericArgument val1 = QGenericArgument(),
105 QGenericArgument val2 = QGenericArgument(),
106 QGenericArgument val3 = QGenericArgument(),
107 QGenericArgument val4 = QGenericArgument(),
108 QGenericArgument val5 = QGenericArgument(),
109 QGenericArgument val6 = QGenericArgument(),
110 QGenericArgument val7 = QGenericArgument(),
111 QGenericArgument val8 = QGenericArgument(),
112 QGenericArgument val9 = QGenericArgument())
const
114 return invoke(object, Qt::AutoConnection, QGenericReturnArgument(),
115 val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);
117 bool invokeOnGadget(
void *gadget,
118 QGenericReturnArgument returnValue,
119 QGenericArgument val0 = QGenericArgument(
nullptr),
120 QGenericArgument val1 = QGenericArgument(),
121 QGenericArgument val2 = QGenericArgument(),
122 QGenericArgument val3 = QGenericArgument(),
123 QGenericArgument val4 = QGenericArgument(),
124 QGenericArgument val5 = QGenericArgument(),
125 QGenericArgument val6 = QGenericArgument(),
126 QGenericArgument val7 = QGenericArgument(),
127 QGenericArgument val8 = QGenericArgument(),
128 QGenericArgument val9 = QGenericArgument())
const;
129 inline bool invokeOnGadget(
void *gadget,
130 QGenericArgument val0,
131 QGenericArgument val1 = QGenericArgument(),
132 QGenericArgument val2 = QGenericArgument(),
133 QGenericArgument val3 = QGenericArgument(),
134 QGenericArgument val4 = QGenericArgument(),
135 QGenericArgument val5 = QGenericArgument(),
136 QGenericArgument val6 = QGenericArgument(),
137 QGenericArgument val7 = QGenericArgument(),
138 QGenericArgument val8 = QGenericArgument(),
139 QGenericArgument val9 = QGenericArgument())
const
141 return invokeOnGadget(gadget, QGenericReturnArgument(),
142 val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);
146 template <
typename ReturnArg,
typename... Args>
150 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
152 invoke(QObject *obj, Qt::ConnectionType c, QTemplatedMetaMethodReturnArgument<ReturnArg> r,
153 Args &&... arguments)
const
155 auto h = QtPrivate::invokeMethodHelper(r, std::forward<Args>(arguments)...);
156 return invokeImpl(*
this, obj, c, h.parameterCount(), h.parameters.data(),
157 h.typeNames.data(), h.metaTypes.data());
160 template <
typename... Args>
164 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
166 invoke(QObject *obj, Qt::ConnectionType c, Args &&... arguments)
const
168 return invoke(obj, c, QTemplatedMetaMethodReturnArgument<
void>{}, std::forward<Args>(arguments)...);
171 template <
typename ReturnArg,
typename... Args>
175 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
177 invoke(QObject *obj, QTemplatedMetaMethodReturnArgument<ReturnArg> r, Args &&... arguments)
const
179 return invoke(obj, Qt::AutoConnection, r, std::forward<Args>(arguments)...);
182 template <
typename... Args>
186 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
188 invoke(QObject *obj, Args &&... arguments)
const
190 return invoke(obj, Qt::AutoConnection, std::forward<Args>(arguments)...);
193 template <
typename ReturnArg,
typename... Args>
197 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
199 invokeOnGadget(
void *gadget, QTemplatedMetaMethodReturnArgument<ReturnArg> r, Args &&... arguments)
const
201 auto h = QtPrivate::invokeMethodHelper(r, std::forward<Args>(arguments)...);
202 return invokeImpl(*
this, gadget, Qt::ConnectionType(-1), h.parameterCount(),
203 h.parameters.data(), h.typeNames.data(), h.metaTypes.data());
206 template <
typename... Args>
210 QtPrivate::Invoke::IfNotOldStyleArgs<
bool, Args...>
212 invokeOnGadget(
void *gadget, Args &&... arguments)
const
214 return invokeOnGadget(gadget, QTemplatedMetaMethodReturnArgument<
void>{}, std::forward<Args>(arguments)...);
217 inline bool isValid()
const {
return mobj !=
nullptr; }
219 template <
typename PointerToMemberFunction>
220 static inline QMetaMethod fromSignal(PointerToMemberFunction signal)
222 typedef QtPrivate::FunctionPointer<PointerToMemberFunction> SignalType;
223 static_assert(QtPrivate::HasQ_OBJECT_Macro<
typename SignalType::Object>::Value,
224 "No Q_OBJECT in the class with the signal");
225 return fromSignalImpl(&SignalType::Object::staticMetaObject,
226 reinterpret_cast<
void **>(&signal));
230 static bool invokeImpl(QMetaMethod self,
void *target, Qt::ConnectionType, qsizetype paramCount,
231 const void *
const *parameters,
const char *
const *typeNames,
232 const QtPrivate::QMetaTypeInterface *
const *metaTypes);
233 static QMetaMethod fromSignalImpl(
const QMetaObject *,
void **);
234 static QMetaMethod fromRelativeMethodIndex(
const QMetaObject *mobj,
int index);
235 static QMetaMethod fromRelativeConstructorIndex(
const QMetaObject *mobj,
int index);
241 uint name()
const {
return d[0]; }
242 uint argc()
const {
return d[1]; }
243 uint parameters()
const {
return d[2]; }
244 uint tag()
const {
return d[3]; }
245 uint flags()
const {
return d[4]; }
246 uint metaTypeOffset()
const {
return d[5]; }
247 bool operator==(
const Data &other)
const {
return d == other.d; }
252 constexpr QMetaMethod(
const QMetaObject *metaObject,
const Data &data_)
253 : mobj(metaObject), data(data_)
257 const QMetaObject *mobj;
259 friend struct QMetaObject;
260 friend struct QMetaObjectPrivate;
261 friend class QObject;
264 friend bool comparesEqual(
const QMetaMethod &lhs,
const QMetaMethod &rhs)
noexcept
265 {
return lhs.data == rhs.data; }
266 Q_DECLARE_EQUALITY_COMPARABLE(QMetaMethod)
342 constexpr QMetaProperty() : mobj(
nullptr), data({
nullptr }) {}
344 const char *name()
const;
345 const char *typeName()
const;
346#if QT_DEPRECATED_SINCE(6
, 0
)
348 QT_WARNING_DISABLE_DEPRECATED
349 QT_DEPRECATED_VERSION_6_0
350 QVariant::Type type()
const
351 {
int t = userType();
return t >= QMetaType::User ? QVariant::UserType : QVariant::Type(t); }
354 int userType()
const {
return typeId(); }
355 int typeId()
const {
return metaType().rawId(); }
356 QMetaType metaType()
const;
357 int propertyIndex()
const;
358 int relativePropertyIndex()
const;
360 bool isReadable()
const;
361 bool isWritable()
const;
362 bool isResettable()
const;
363 bool isDesignable()
const;
364 bool isScriptable()
const;
365 bool isStored()
const;
367 bool isConstant()
const;
368 bool isFinal()
const;
369 bool isVirtual()
const;
370 bool isOverride()
const;
371 bool isRequired()
const;
372 bool isBindable()
const;
374 bool isFlagType()
const;
375 bool isEnumType()
const;
376 QMetaEnum enumerator()
const;
378 bool hasNotifySignal()
const;
379 QMetaMethod notifySignal()
const;
380 int notifySignalIndex()
const;
382 int revision()
const;
384 QVariant read(
const QObject *obj)
const;
385 bool write(QObject *obj,
const QVariant &value)
const;
386 bool write(QObject *obj, QVariant &&value)
const;
387 bool reset(QObject *obj)
const;
389 QUntypedBindable bindable(QObject *object)
const;
391 QVariant readOnGadget(
const void *gadget)
const;
392 bool writeOnGadget(
void *gadget,
const QVariant &value)
const;
393 bool writeOnGadget(
void *gadget, QVariant &&value)
const;
394 bool resetOnGadget(
void *gadget)
const;
396 bool hasStdCppSet()
const;
397 bool isAlias()
const;
398 inline bool isValid()
const {
return isReadable(); }
399 inline const QMetaObject *enclosingMetaObject()
const {
return mobj; }
402#if QT_DEPRECATED_SINCE(6
, 4
)
403 QT_DEPRECATED_VERSION_X_6_4(
"obsolete, simply returns typeId()")
404 int registerPropertyType()
const;
410 uint name()
const {
return d[0]; }
411 uint type()
const {
return d[1]; }
412 uint flags()
const {
return d[2]; }
413 uint notifyIndex()
const {
return d[3]; }
414 uint revision()
const {
return d[4]; }
416 int index(
const QMetaObject *mobj)
const;
421 QMetaProperty(
const QMetaObject *mobj,
int index);
422 static Data getMetaPropertyData(
const QMetaObject *mobj,
int index);
424 const QMetaObject *mobj;
427 friend struct QMetaObject;
428 friend struct QMetaObjectPrivate;