1#ifndef _PYTHONQTMETHODINFO_H
2#define _PYTHONQTMETHODINFO_H
83 _shouldAllowThreads =
true;
89 _parameters =
other._parameters;
90 _shouldAllowThreads =
other._shouldAllowThreads;
162 _shouldAllowThreads =
info._shouldAllowThreads;
163 _slotIndex =
info._slotIndex;
165 _decorator =
info._decorator;
167 _upcastingOffset = 0;
174 _parameters =
info->parameters();
175 _shouldAllowThreads =
info->shouldAllowThreads();
176 _slotIndex = slotIndex;
178 _decorator = decorator;
180 _upcastingOffset = 0;
246 int _upcastingOffset;
248 static bool _globalShouldAllowThreads;
PyObject * PythonQtConvertPairToPython(const void *inPair, int metaTypeId)
a class that stores all required information about a Qt object (and an optional associated C++ class ...
stores information about a specific signal/slot/method
static const PythonQtMethodInfo * getCachedMethodInfoFromArgumentList(int numArgs, const char **args)
get the cached method info using the passed in list of return value and arguments,...
static QByteArray getInnerTemplateTypeName(const QByteArray &typeName)
returns the inner type name of a simple template of the form SomeObject<InnerType>
static const PythonQtMethodInfo * getCachedMethodInfo(const QMetaMethod &method, PythonQtClassInfo *classInfo)
static void addParameterTypeAlias(const QByteArray &alias, const QByteArray &name)
add an alias for a typename, e.g. QObjectList and QList<QObject*>.
static QHash< QByteArray, QByteArray > _parameterNameAliases
static int getInnerTemplateMetaType(const QByteArray &typeName)
returns the inner type id of a simple template of the form SomeObject<InnerType>
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)
const QList< ParameterInfo > & parameters() const
get the parameter infos
static QHash< QByteArray, int > _parameterTypeDict
static QByteArray getInnerListTypeName(const QByteArray &typeName)
returns the inner type name of a simple template or the typename without appended "List".
static void cleanupCachedMethodInfos()
cleanup the cache
PythonQtMethodInfo(const QByteArray &typeName, const QList< QByteArray > &args)
PythonQtMethodInfo(const PythonQtMethodInfo &other)
QList< ParameterInfo > _parameters
static QHash< int, ParameterInfo > _cachedParameterInfos
int parameterCount() const
returns the number of parameters including the return value
static int nameToType(const char *name)
returns the id for the given type (using an internal dictionary)
static void fillParameterInfo(ParameterInfo &type, const QByteArray &name, PythonQtClassInfo *classInfo=nullptr)
fill the parameter info for the given type name
static QHash< QByteArray, PythonQtMethodInfo * > _cachedSignatures
stores the cached signatures of methods to speedup mapping from Qt to Python types
bool shouldAllowThreads() const
PythonQtMethodInfo(const QMetaMethod &meta, PythonQtClassInfo *classInfo)
stores information about a slot, including a next pointer to overloaded slots
PythonQtSlotInfo(PythonQtClassInfo *classInfo, const QMetaMethod &meta, int slotIndex, QObject *decorator=nullptr, Type type=MemberSlot)
QByteArray getImplementingClassName() const
QStringList overloads(bool skipReturnValue=false) const
int slotIndex() const
get the index of the slot (needed for qt_metacall)
QString fullSignature(bool skipReturnValue=false, int optionalArgsIndex=-1) const
get the full signature including return type
static bool getGlobalShouldAllowThreads()
Returns if calling slots should release the GIL to allow Python threads while being inside of C++.
QByteArray slotName(bool removeDecorators=false) const
get the short slot name
PythonQtSlotInfo * nextInfo() const
get next overloaded slot (which has the same name)
QList< ParameterInfo > arguments() const
get the parameter infos for the arguments, without return type and instance decorator.
static void invokeQtMethod(QObject *obj, PythonQtSlotInfo *slot, void **argList)
Invoke the given slot on obj, save/restore thread state if needed.
bool isInstanceDecorator() const
returns if the slot is a decorator slot
void setNextInfo(PythonQtSlotInfo *next)
set the next overloaded slot
QByteArray signature() const
get the Qt signature of the slot
bool isClassDecorator() const
returns if the slot is a constructor slot
static void setGlobalShouldAllowThreads(bool flag)
Sets if calling slots should release the GIL to allow other Python threads while being inside of C++.
void setUpcastingOffset(int upcastingOffset)
QObject * decorator() const
void deleteOverloadsAndThis()
PythonQtSlotInfo(const PythonQtSlotInfo &info)
const QMetaMethod * metaMethod() const
int upcastingOffset() const
stores various informations about a parameter/type name
bool passOwnershipToPython
char innerNamePointerCount