Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QMetaObjectPrivate Struct Reference

#include <qmetaobject_p.h>

+ Inheritance diagram for QMetaObjectPrivate:
+ Collaboration diagram for QMetaObjectPrivate:

Public Types

enum  { OutputRevision = 12 }
 
enum  { IntsPerMethod = QMetaMethod::Data::Size }
 
enum  { IntsPerEnum = QMetaEnum::Data::Size }
 
enum  { IntsPerProperty = QMetaProperty::Data::Size }
 
enum class  Which { Name , Alias }
 
enum  DisconnectType { DisconnectAll , DisconnectOne }
 

Static Public Member Functions

static const QMetaObjectPrivateget (const QMetaObject *metaobject)
 
static int originalClone (const QMetaObject *obj, int local_method_index)
 
static QByteArray decodeMethodSignature (const char *signature, QArgumentTypeArray &types)
 
static int indexOfSignalRelative (const QMetaObject **baseObject, const QByteArray &name, int argc, const QArgumentType *types)
 
static int indexOfSlotRelative (const QMetaObject **m, const QByteArray &name, int argc, const QArgumentType *types)
 
static int indexOfSignal (const QMetaObject *m, const QByteArray &name, int argc, const QArgumentType *types)
 
static int indexOfSlot (const QMetaObject *m, const QByteArray &name, int argc, const QArgumentType *types)
 
static int indexOfMethod (const QMetaObject *m, const QByteArray &name, int argc, const QArgumentType *types)
 
static int indexOfConstructor (const QMetaObject *m, const QByteArray &name, int argc, const QArgumentType *types)
 
static int indexOfEnumerator (const QMetaObject *m, QByteArrayView name, Which which)
 
static int indexOfEnumerator (const QMetaObject *m, QByteArrayView name)
 
static Q_CORE_EXPORT QMetaMethod signal (const QMetaObject *m, int signal_index)
 
static int signalOffset (const QMetaObject *m)
 
static Q_CORE_EXPORT int absoluteSignalCount (const QMetaObject *m)
 
static Q_CORE_EXPORT int signalIndex (const QMetaMethod &m)
 
static bool checkConnectArgs (int signalArgc, const QArgumentType *signalTypes, int methodArgc, const QArgumentType *methodTypes)
 
static bool checkConnectArgs (const QMetaMethodPrivate *signal, const QMetaMethodPrivate *method)
 
static QList< QByteArrayparameterTypeNamesFromSignature (const char *signature)
 
static void memberIndexes (const QObject *obj, const QMetaMethod &member, int *signalIndex, int *methodIndex)
 
static QObjectPrivate::Connectionconnect (const QObject *sender, int signal_index, const QMetaObject *smeta, const QObject *receiver, int method_index_relative, const QMetaObject *rmeta=nullptr, int type=0, int *types=nullptr)
 
static bool disconnect (const QObject *sender, int signal_index, const QMetaObject *smeta, const QObject *receiver, int method_index, void **slot, DisconnectType=DisconnectAll)
 
static bool disconnectHelper (QObjectPrivate::ConnectionData *connections, int signalIndex, const QObject *receiver, int method_index, void **slot, QBasicMutex *senderMutex, DisconnectType=DisconnectAll)
 
template<int MethodType>
static int indexOfMethodRelative (const QMetaObject **baseObject, const QByteArray &name, int argc, const QArgumentType *types)
 
static bool methodMatch (const QMetaObject *m, const QMetaMethod &method, const QByteArray &name, int argc, const QArgumentType *types)
 
static Q_CORE_EXPORT QMetaMethod firstMethod (const QMetaObject *baseObject, QByteArrayView name)
 

Public Attributes

int revision
 
int className
 
int classInfoCount
 
int classInfoData
 
int methodCount
 
int methodData
 
int propertyCount
 
int propertyData
 
int enumeratorCount
 
int enumeratorData
 
int constructorCount
 
int constructorData
 
int flags
 
int signalCount
 

Detailed Description

Definition at line 170 of file qmetaobject_p.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
OutputRevision 

Definition at line 179 of file qmetaobject_p.h.

◆ anonymous enum

anonymous enum
Enumerator
IntsPerMethod 

Definition at line 180 of file qmetaobject_p.h.

◆ anonymous enum

anonymous enum
Enumerator
IntsPerEnum 

Definition at line 181 of file qmetaobject_p.h.

◆ anonymous enum

anonymous enum
Enumerator
IntsPerProperty 

Definition at line 182 of file qmetaobject_p.h.

◆ DisconnectType

Enumerator
DisconnectAll 
DisconnectOne 

Definition at line 240 of file qmetaobject_p.h.

◆ Which

enum class QMetaObjectPrivate::Which
strong
Enumerator
Name 
Alias 

Definition at line 216 of file qmetaobject_p.h.

Member Function Documentation

◆ absoluteSignalCount()

int QMetaObjectPrivate::absoluteSignalCount ( const QMetaObject * m)
static
Since
5.0

Returns the number of signals for the class m, including the signals for the base class.

Similar to QMetaObject::methodCount(), but non-signal methods are excluded.

Definition at line 932 of file qmetaobject.cpp.

References priv(), and Q_ASSERT.

Referenced by QMetaObject::connectSlotsByName(), and QQmlContext::setContextProperty().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkConnectArgs() [1/2]

bool QMetaObjectPrivate::checkConnectArgs ( const QMetaMethodPrivate * signal,
const QMetaMethodPrivate * method )
static

Returns true if the signal and method arguments are compatible; otherwise returns false.

Definition at line 1007 of file qmetaobject.cpp.

References i, IsUnresolvedType, method, QMetaMethod::Signal, signal, typeFromTypeInfo(), and typeNameFromTypeInfo().

+ Here is the call graph for this function:

◆ checkConnectArgs() [2/2]

bool QMetaObjectPrivate::checkConnectArgs ( int signalArgc,
const QArgumentType * signalTypes,
int methodArgc,
const QArgumentType * methodTypes )
static

Returns true if the signalTypes and methodTypes are compatible; otherwise returns false.

Definition at line 989 of file qmetaobject.cpp.

References i.

Referenced by QMetaObject::checkConnectArgs(), and QObject::connect().

+ Here is the caller graph for this function:

◆ connect()

QObjectPrivate::Connection * QMetaObjectPrivate::connect ( const QObject * sender,
int signal_index,
const QMetaObject * smeta,
const QObject * receiver,
int method_index,
const QMetaObject * rmeta = nullptr,
int type = 0,
int * types = nullptr )
static

Same as the QMetaObject::connect, but signal_index must be the result of QObjectPrivate::signalIndex

method_index is relative to the rmeta metaobject, if rmeta is \nullptr, then it is absolute index

the QObjectPrivate::Connection* has a refcount of 2, so it must be passed to a QMetaObject::Connection

Definition at line 3576 of file qobject.cpp.

References c2, get(), QObjectPrivate::get(), Q_ASSERT, QThreadData::ref(), QObjectPrivate::Connection::sender, signal(), signalSlotLock(), Qt::SingleShotConnection, Qt::UniqueConnection, and QOrderedMutexLocker::unlock().

Referenced by QObject::connect(), QObject::connect(), QMetaObject::connect(), and QMetaObject::connectSlotsByName().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ decodeMethodSignature()

QByteArray QMetaObjectPrivate::decodeMethodSignature ( const char * signature,
QArgumentTypeArray & types )
static

Definition at line 778 of file qmetaobject.cpp.

References argumentTypesFromString(), QByteArray::fromRawData(), Q_ASSERT, and QByteArray().

Referenced by QObject::connect(), QObject::disconnect(), QMetaObject::indexOfConstructor(), QMetaObject::indexOfMethod(), QMetaObject::indexOfSignal(), QMetaObject::indexOfSlot(), and QObjectPrivate::signalIndex().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ disconnect()

bool QMetaObjectPrivate::disconnect ( const QObject * sender,
int signal_index,
const QMetaObject * smeta,
const QObject * receiver,
int method_index,
void ** slot,
DisconnectType disconnectType = DisconnectAll )
static

Same as the QMetaObject::disconnect, but signal_index must be the result of QObjectPrivate::signalIndex

Definition at line 3711 of file qobject.cpp.

References QObjectPrivate::connections, QObjectPrivate::get(), signal(), signalSlotLock(), and QMutexLocker< Mutex >::unlock().

Referenced by QObject::disconnect(), QObject::disconnect(), QMetaObject::disconnect(), QObjectPrivate::disconnect(), and QMetaObject::disconnectOne().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ disconnectHelper()

bool QMetaObjectPrivate::disconnectHelper ( QObjectPrivate::ConnectionData * connections,
int signalIndex,
const QObject * receiver,
int method_index,
void ** slot,
QBasicMutex * senderMutex,
DisconnectType disconnectType = DisconnectAll )
inlinestatic

Helper function to remove the connection from the senders list and set the receivers to \nullptr

Definition at line 3671 of file qobject.cpp.

References QObjectPrivate::connections, QOrderedMutexLocker::relock(), signalIndex, and signalSlotLock().

+ Here is the call graph for this function:

◆ firstMethod()

QMetaMethod QMetaObjectPrivate::firstMethod ( const QMetaObject * baseObject,
QByteArrayView name )
static

Returns the first method with name name found in baseObject

Definition at line 669 of file qmetaobject.cpp.

References i, priv(), and QMetaObject::superClass().

Referenced by QV4::QQmlValueTypeWrapper::dataForPropertyKey().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get()

static const QMetaObjectPrivate * QMetaObjectPrivate::get ( const QMetaObject * metaobject)
inlinestatic

Definition at line 194 of file qmetaobject_p.h.

Referenced by computeOffsets(), QObject::connect(), connect(), QQmlPropertyCache::copyAndAppend(), QObject::disconnect(), QQmlBindingInstantiationContext::instantiatingPropertyCache(), QMetaMethod::invokeOnGadget(), QMetaMethod::isConst(), metaObjectSignalCount(), originalClone(), and QObjectPrivate::signalIndex().

+ Here is the caller graph for this function:

◆ indexOfConstructor()

int QMetaObjectPrivate::indexOfConstructor ( const QMetaObject * m,
const QByteArray & name,
int argc,
const QArgumentType * types )
static

Definition at line 899 of file qmetaobject.cpp.

References i, method, methodMatch(), and priv().

Referenced by QMetaObject::indexOfConstructor().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ indexOfEnumerator() [1/2]

int QMetaObjectPrivate::indexOfEnumerator ( const QMetaObject * m,
QByteArrayView name )
static

Definition at line 1067 of file qmetaobject.cpp.

References indexOfEnumerator().

+ Here is the call graph for this function:

◆ indexOfEnumerator() [2/2]

int QMetaObjectPrivate::indexOfEnumerator ( const QMetaObject * m,
QByteArrayView name,
Which which )
static

Definition at line 1077 of file qmetaobject.cpp.

References d, i, Name, priv(), and stringDataView().

Referenced by QMetaObject::indexOfEnumerator(), and indexOfEnumerator().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ indexOfMethod()

int QMetaObjectPrivate::indexOfMethod ( const QMetaObject * m,
const QByteArray & name,
int argc,
const QArgumentType * types )
static

Definition at line 890 of file qmetaobject.cpp.

References i.

Referenced by QObject::disconnect(), and indexOfSignalRelative().

+ Here is the caller graph for this function:

◆ indexOfMethodRelative()

template<int MethodType>
int QMetaObjectPrivate::indexOfMethodRelative ( const QMetaObject ** baseObject,
const QByteArray & name,
int argc,
const QArgumentType * types )
inlinestatic

helper function for indexOf{Method,Slot,Signal}, returns the relative index of the method within the baseObject MethodType might be MethodSignal or MethodSlot, or \nullptr to match everything.

Definition at line 690 of file qmetaobject.cpp.

References QMetaObject::d, i, methodMatch(), MethodSignal, MethodSlot, priv(), and Q_ASSERT.

+ Here is the call graph for this function:

◆ indexOfSignal()

int QMetaObjectPrivate::indexOfSignal ( const QMetaObject * m,
const QByteArray & name,
int argc,
const QArgumentType * types )
static

Definition at line 872 of file qmetaobject.cpp.

References i, and indexOfSignalRelative().

+ Here is the call graph for this function:

◆ indexOfSignalRelative()

int QMetaObjectPrivate::indexOfSignalRelative ( const QMetaObject ** baseObject,
const QByteArray & name,
int argc,
const QArgumentType * types )
static

Same as QMetaObject::indexOfSignal, but the result is the local offset to the base object.

baseObject will be adjusted to the enclosing QMetaObject, or \nullptr if the signal is not found

Definition at line 823 of file qmetaobject.cpp.

References i, indexOfMethod(), and qWarning.

Referenced by QObject::connect(), QObject::disconnect(), QMetaObject::indexOfSignal(), indexOfSignal(), and QObjectPrivate::signalIndex().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ indexOfSlot()

int QMetaObjectPrivate::indexOfSlot ( const QMetaObject * m,
const QByteArray & name,
int argc,
const QArgumentType * types )
static

Definition at line 881 of file qmetaobject.cpp.

References i, and indexOfSlotRelative().

+ Here is the call graph for this function:

◆ indexOfSlotRelative()

int QMetaObjectPrivate::indexOfSlotRelative ( const QMetaObject ** m,
const QByteArray & name,
int argc,
const QArgumentType * types )
static

Definition at line 865 of file qmetaobject.cpp.

Referenced by QObject::connect(), QMetaObject::indexOfSlot(), and indexOfSlot().

+ Here is the caller graph for this function:

◆ memberIndexes()

void QMetaObjectPrivate::memberIndexes ( const QObject * obj,
const QMetaMethod & member,
int * signalIndex,
int * methodIndex )
static

This helper function calculates signal and method index for the given member in the specified class.

\list

  • If member.mobj is \nullptr then both signalIndex and methodIndex are set to -1.
  • If specified member is not a member of obj instance class (or one of its parent classes) then both signalIndex and methodIndex are set to -1. \endlist

This function is used by QObject::connect and QObject::disconnect which are working with QMetaMethod.

signalIndex is set to the signal index of member. If the member specified is not signal this variable is set to -1.

methodIndex is set to the method index of the member. If the member is not a method of the object specified by the obj argument this variable is set to -1.

Definition at line 2843 of file qobject.cpp.

References computeOffsets(), QMetaObject::d, QMetaMethod::methodType(), QMetaMethod::mobj, QMetaMethod::relativeMethodIndex(), QMetaMethod::Signal, and signalIndex.

Referenced by QObject::connect(), and QObject::disconnect().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ methodMatch()

bool QMetaObjectPrivate::methodMatch ( const QMetaObject * m,
const QMetaMethod & method,
const QByteArray & name,
int argc,
const QArgumentType * types )
static

Definition at line 633 of file qmetaobject.cpp.

References i, method, priv(), stringData(), typeFromTypeInfo(), and typeNameFromTypeInfo().

Referenced by indexOfConstructor(), and indexOfMethodRelative().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ originalClone()

int QMetaObjectPrivate::originalClone ( const QMetaObject * mobj,
int local_method_index )
static

If the local_method_index is a cloned method, return the index of the original.

Example: if the index of "destroyed()" is passed, the index of "destroyed(QObject*)" is returned

Definition at line 4289 of file qmetaobject.cpp.

References get(), MethodCloned, methodCount, and Q_ASSERT.

Referenced by QObject::connect(), QObject::disconnect(), QObject::isSignalConnected(), methodIndexToSignalIndex(), and QObjectPrivate::signalIndex().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parameterTypeNamesFromSignature()

QList< QByteArray > QMetaObjectPrivate::parameterTypeNamesFromSignature ( const char * signature)
static

Returns the parameter type names extracted from the given signature.

Definition at line 4304 of file qmetaobject.cpp.

References begin(), list, and QByteArray().

Referenced by QMetaMethodBuilderPrivate::parameterTypes().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ signal()

QMetaMethod QMetaObjectPrivate::signal ( const QMetaObject * m,
int signal_index )
static
Since
5.0

Returns the signal for the given meta-object m at signal_index.

It it different from QMetaObject::method(); the index should not include non-signal methods.

Definition at line 966 of file qmetaobject.cpp.

References d, i, priv(), Q_ASSERT, signal, and signalOffset().

Referenced by QSingleShotTimer::QSingleShotTimer(), QObject::~QObject(), QObject::connect(), connect(), QQmlNotifierEndpoint::connect(), QObjectPrivate::connectImpl(), QMetaObject::connectSlotsByName(), QQmlBinding::dependencies(), QQmlNotifierEndpoint::disconnect(), disconnect(), QObject::dumpObjectInfo(), QQmlBoundSignalExpression::evaluate(), QQmlPropertyCache::originalClone(), Q_TRACE_POINT(), QQmlBoundSignal_callback(), QTest::qSignalDumperCallback(), queued_activate(), QObjectPrivate::removeConnection(), QObject::senderSignalIndex(), QQmlData::signalEmitted(), and QQmlPropertyCache::signalParameterNames().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ signalIndex()

int QMetaObjectPrivate::signalIndex ( const QMetaMethod & m)
static
Since
5.0

Returns the index of the signal method m.

Similar to QMetaMethod::methodIndex(), but non-signal methods are excluded.

Definition at line 950 of file qmetaobject.cpp.

References signalOffset().

Referenced by QQmlEngine::captureProperty(), QQmlPrivate::initObjectLookup(), QQmlPropertyData::load(), QQmlThreadNotifierProxyObject::qt_metacall(), QQmlPropertyPrivate::signalIndex(), and QQmlPropertyToPropertyBinding::update().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ signalOffset()

int QMetaObjectPrivate::signalOffset ( const QMetaObject * m)
inlinestatic
Since
5.0

Returns the signal offset for the class m; i.e., the index position of the class's first signal.

Similar to QMetaObject::methodOffset(), but non-signal methods are excluded.

Definition at line 221 of file qmetaobject_p.h.

References Q_ASSERT, and signalCount.

Referenced by QSingleShotTimer::QSingleShotTimer(), QMetaObject::activate(), QObject::connect(), QObject::disconnect(), QObject::isSignalConnected(), signal(), QObjectPrivate::signalIndex(), and signalIndex().

+ Here is the caller graph for this function:

Member Data Documentation

◆ classInfoCount

int QMetaObjectPrivate::classInfoCount

Definition at line 186 of file qmetaobject_p.h.

◆ classInfoData

int QMetaObjectPrivate::classInfoData

Definition at line 186 of file qmetaobject_p.h.

◆ className

int QMetaObjectPrivate::className

Definition at line 185 of file qmetaobject_p.h.

◆ constructorCount

int QMetaObjectPrivate::constructorCount

Definition at line 190 of file qmetaobject_p.h.

◆ constructorData

int QMetaObjectPrivate::constructorData

Definition at line 190 of file qmetaobject_p.h.

◆ enumeratorCount

int QMetaObjectPrivate::enumeratorCount

Definition at line 189 of file qmetaobject_p.h.

◆ enumeratorData

int QMetaObjectPrivate::enumeratorData

Definition at line 189 of file qmetaobject_p.h.

◆ flags

int QMetaObjectPrivate::flags

Definition at line 191 of file qmetaobject_p.h.

◆ methodCount

int QMetaObjectPrivate::methodCount

Definition at line 187 of file qmetaobject_p.h.

Referenced by originalClone().

◆ methodData

int QMetaObjectPrivate::methodData

Definition at line 187 of file qmetaobject_p.h.

◆ propertyCount

int QMetaObjectPrivate::propertyCount

Definition at line 188 of file qmetaobject_p.h.

◆ propertyData

int QMetaObjectPrivate::propertyData

Definition at line 188 of file qmetaobject_p.h.

◆ revision

int QMetaObjectPrivate::revision

Definition at line 184 of file qmetaobject_p.h.

◆ signalCount

int QMetaObjectPrivate::signalCount

Definition at line 192 of file qmetaobject_p.h.

Referenced by signalOffset().


The documentation for this struct was generated from the following files: