PythonQt
PythonQtSlotInfo Class Reference

stores information about a slot, including a next pointer to overloaded slots More...

#include <PythonQtMethodInfo.h>

Inheritance diagram for PythonQtSlotInfo:
PythonQtMethodInfo

Public Types

enum  Type { MemberSlot , InstanceDecorator , ClassDecorator }
Public Types inherited from PythonQtMethodInfo
enum  ParameterType { Unknown = -1 , Variant = -2 }

Public Member Functions

 PythonQtSlotInfo (const PythonQtSlotInfo &info)
 PythonQtSlotInfo (PythonQtClassInfo *classInfo, const QMetaMethod &meta, int slotIndex, QObject *decorator=nullptr, Type type=MemberSlot)
QList< ParameterInfo > arguments () const
 get the parameter infos for the arguments, without return type and instance decorator.
void deleteOverloadsAndThis ()
const QMetaMethod * metaMethod () const
void setUpcastingOffset (int upcastingOffset)
int upcastingOffset () const
int slotIndex () const
 get the index of the slot (needed for qt_metacall)
PythonQtSlotInfo * nextInfo () const
 get next overloaded slot (which has the same name)
void setNextInfo (PythonQtSlotInfo *next)
 set the next overloaded slot
bool isInstanceDecorator () const
 returns if the slot is a decorator slot
bool isClassDecorator () const
 returns if the slot is a constructor slot
QObject * decorator () const
QString fullSignature (bool skipReturnValue=false, int optionalArgsIndex=-1) const
 get the full signature including return type
QByteArray signature () const
 get the Qt signature of the slot
QByteArray slotName (bool removeDecorators=false) const
 get the short slot name
QStringList overloads (bool skipReturnValue=false) const
QByteArray getImplementingClassName () const
Public Member Functions inherited from PythonQtMethodInfo
 PythonQtMethodInfo ()
 ~PythonQtMethodInfo ()
 PythonQtMethodInfo (const QMetaMethod &meta, PythonQtClassInfo *classInfo)
 PythonQtMethodInfo (const QByteArray &typeName, const QList< QByteArray > &args)
 PythonQtMethodInfo (const PythonQtMethodInfo &other)
int parameterCount () const
 returns the number of parameters including the return value
const QList< ParameterInfo > & parameters () const
 get the parameter infos
bool shouldAllowThreads () const

Static Public Member Functions

static void invokeQtMethod (QObject *obj, PythonQtSlotInfo *slot, void **argList)
 Invoke the given slot on obj, save/restore thread state if needed.
static void setGlobalShouldAllowThreads (bool flag)
 Sets if calling slots should release the GIL to allow other Python threads while being inside of C++.
static bool getGlobalShouldAllowThreads ()
 Returns if calling slots should release the GIL to allow Python threads while being inside of C++.
Static Public Member Functions inherited from PythonQtMethodInfo
static const PythonQtMethodInfo * getCachedMethodInfo (const QMetaMethod &method, PythonQtClassInfo *classInfo)
static const PythonQtMethodInfo * getCachedMethodInfoFromArgumentList (int numArgs, const char **args)
 get the cached method info using the passed in list of return value and arguments, return value needs to be passed as first arg
static void cleanupCachedMethodInfos ()
 cleanup the cache
static int nameToType (const char *name)
 returns the id for the given type (using an internal dictionary)
static void addParameterTypeAlias (const QByteArray &alias, const QByteArray &name)
 add an alias for a typename, e.g. QObjectList and QList<QObject*>.
static void fillParameterInfo (ParameterInfo &type, const QByteArray &name, PythonQtClassInfo *classInfo=nullptr)
 fill the parameter info for the given type name
static const ParameterInfo & getParameterInfoForMetaType (int type)
 returns a parameter info for the given metatype (and creates and caches one if it is not yet present)
static int getInnerTemplateMetaType (const QByteArray &typeName)
 returns the inner type id of a simple template of the form SomeObject<InnerType>
static QByteArray getInnerTemplateTypeName (const QByteArray &typeName)
 returns the inner type name of a simple template of the form SomeObject<InnerType>
static QByteArray getInnerListTypeName (const QByteArray &typeName)
 returns the inner type name of a simple template or the typename without appended "List".

Additional Inherited Members

Protected Member Functions inherited from PythonQtMethodInfo
void setupAllowThreads ()
Protected Attributes inherited from PythonQtMethodInfo
QList< ParameterInfo > _parameters
bool _shouldAllowThreads
Static Protected Attributes inherited from PythonQtMethodInfo
static QHash< QByteArray, int > _parameterTypeDict
static QHash< QByteArray, QByteArray > _parameterNameAliases
static QHash< QByteArray, PythonQtMethodInfo * > _cachedSignatures
 stores the cached signatures of methods to speedup mapping from Qt to Python types
static QHash< int, ParameterInfo > _cachedParameterInfos

Detailed Description

stores information about a slot, including a next pointer to overloaded slots

Definition at line 147 of file PythonQtMethodInfo.h.

Member Enumeration Documentation

◆ Type

Enumerator
MemberSlot 
InstanceDecorator 
ClassDecorator 

Definition at line 150 of file PythonQtMethodInfo.h.

Constructor & Destructor Documentation

◆ PythonQtSlotInfo() [1/2]

PythonQtSlotInfo::PythonQtSlotInfo ( const PythonQtSlotInfo & info)
inline

Definition at line 152 of file PythonQtMethodInfo.h.

154 {
155 _meta = info._meta;
158 _slotIndex = info._slotIndex;
159 _next = nullptr;
160 _decorator = info._decorator;
161 _type = info._type;
162 _upcastingOffset = 0;
163 }
QList< ParameterInfo > _parameters

References PythonQtMethodInfo::_parameters, PythonQtMethodInfo::_shouldAllowThreads, PythonQtMethodInfo::PythonQtMethodInfo(), and PythonQtSlotInfo().

Referenced by getGlobalShouldAllowThreads(), invokeQtMethod(), nextInfo(), PythonQtSlotInfo(), and setNextInfo().

◆ PythonQtSlotInfo() [2/2]

PythonQtSlotInfo::PythonQtSlotInfo ( PythonQtClassInfo * classInfo,
const QMetaMethod & meta,
int slotIndex,
QObject * decorator = nullptr,
Type type = MemberSlot )
inline

Definition at line 165 of file PythonQtMethodInfo.h.

168 {
169 const PythonQtMethodInfo* info = getCachedMethodInfo(meta, classInfo);
170 _meta = meta;
171 _parameters = info->parameters();
173 _slotIndex = slotIndex;
174 _next = nullptr;
175 _decorator = decorator;
176 _type = type;
177 _upcastingOffset = 0;
178 }
static const PythonQtMethodInfo * getCachedMethodInfo(const QMetaMethod &method, PythonQtClassInfo *classInfo)
const QList< ParameterInfo > & parameters() const
get the parameter infos
bool shouldAllowThreads() const
int slotIndex() const
get the index of the slot (needed for qt_metacall)
QObject * decorator() const

References PythonQtMethodInfo::_parameters, PythonQtMethodInfo::_shouldAllowThreads, decorator(), PythonQtMethodInfo::getCachedMethodInfo(), MemberSlot, PythonQtMethodInfo::parameters(), PythonQtMethodInfo::PythonQtMethodInfo(), PythonQtMethodInfo::shouldAllowThreads(), and slotIndex().

Member Function Documentation

◆ arguments()

QList< ParameterInfo > PythonQtSlotInfo::arguments ( ) const

get the parameter infos for the arguments, without return type and instance decorator.

◆ decorator()

QObject * PythonQtSlotInfo::decorator ( ) const
inline

Definition at line 207 of file PythonQtMethodInfo.h.

207{ return _decorator; }

Referenced by PythonQtSlotInfo().

◆ deleteOverloadsAndThis()

void PythonQtSlotInfo::deleteOverloadsAndThis ( )

◆ fullSignature()

QString PythonQtSlotInfo::fullSignature ( bool skipReturnValue = false,
int optionalArgsIndex = -1 ) const

get the full signature including return type

◆ getGlobalShouldAllowThreads()

bool PythonQtSlotInfo::getGlobalShouldAllowThreads ( )
static

Returns if calling slots should release the GIL to allow Python threads while being inside of C++.

References PythonQtSlotInfo().

◆ getImplementingClassName()

QByteArray PythonQtSlotInfo::getImplementingClassName ( ) const

Returns the class name that originally implements this method, regardless where the wrapper is located/implemented.

◆ invokeQtMethod()

void PythonQtSlotInfo::invokeQtMethod ( QObject * obj,
PythonQtSlotInfo * slot,
void ** argList )
static

Invoke the given slot on obj, save/restore thread state if needed.

References PythonQtSlotInfo().

◆ isClassDecorator()

bool PythonQtSlotInfo::isClassDecorator ( ) const
inline

returns if the slot is a constructor slot

Definition at line 205 of file PythonQtMethodInfo.h.

205{ return _decorator != nullptr && _type == ClassDecorator; }

References ClassDecorator.

◆ isInstanceDecorator()

bool PythonQtSlotInfo::isInstanceDecorator ( ) const
inline

returns if the slot is a decorator slot

Definition at line 202 of file PythonQtMethodInfo.h.

202{ return _decorator != nullptr && _type == InstanceDecorator; }

References InstanceDecorator.

◆ metaMethod()

const QMetaMethod * PythonQtSlotInfo::metaMethod ( ) const
inline

Definition at line 186 of file PythonQtMethodInfo.h.

186{ return &_meta; }

◆ nextInfo()

PythonQtSlotInfo * PythonQtSlotInfo::nextInfo ( ) const
inline

get next overloaded slot (which has the same name)

Definition at line 196 of file PythonQtMethodInfo.h.

196{ return _next; }

References PythonQtSlotInfo().

◆ overloads()

QStringList PythonQtSlotInfo::overloads ( bool skipReturnValue = false) const

gets a list of all overload signatures. Signatures which only differ because of default values are joined using "[]" to indicate the optional arguments.

◆ setGlobalShouldAllowThreads()

void PythonQtSlotInfo::setGlobalShouldAllowThreads ( bool flag)
static

Sets if calling slots should release the GIL to allow other Python threads while being inside of C++.

◆ setNextInfo()

void PythonQtSlotInfo::setNextInfo ( PythonQtSlotInfo * next)
inline

set the next overloaded slot

Definition at line 199 of file PythonQtMethodInfo.h.

199{ _next = next; }

References PythonQtSlotInfo().

◆ setUpcastingOffset()

void PythonQtSlotInfo::setUpcastingOffset ( int upcastingOffset)
inline

Definition at line 188 of file PythonQtMethodInfo.h.

188{ _upcastingOffset = upcastingOffset; }
int upcastingOffset() const

References upcastingOffset().

◆ signature()

QByteArray PythonQtSlotInfo::signature ( ) const

get the Qt signature of the slot

◆ slotIndex()

int PythonQtSlotInfo::slotIndex ( ) const
inline

get the index of the slot (needed for qt_metacall)

Definition at line 193 of file PythonQtMethodInfo.h.

193{ return _slotIndex; }

Referenced by PythonQtSlotInfo().

◆ slotName()

QByteArray PythonQtSlotInfo::slotName ( bool removeDecorators = false) const

get the short slot name

◆ upcastingOffset()

int PythonQtSlotInfo::upcastingOffset ( ) const
inline

Definition at line 190 of file PythonQtMethodInfo.h.

190{ return _upcastingOffset; }

Referenced by setUpcastingOffset().


The documentation for this class was generated from the following file: