PythonQt
Public Member Functions | Public Attributes | List of all members
PythonQtInstanceWrapper Struct Reference

a Python wrapper object for Qt objects and C++ objects (that are themselves wrapped by wrapper QObjects) More...

#include <PythonQtInstanceWrapper.h>

Public Member Functions

PyObject_HEAD PythonQtClassInfoclassInfo ()
 the class information, this is set even if the _obj or _wrappedPtr is NULL to support typed NULL pointers
 
PythonQtDynamicClassInfodynamicClassInfo ()
 
void setQObject (QObject *object)
 set the QObject pointer
 
void passOwnershipToCPP ()
 Passes the ownership of the wrapped object to C++.
 
void passOwnershipToPython ()
 Passes the ownership to Python.
 

Public Attributes

QPointer< QObject > _obj
 pointer to the wrapped Qt object or if _wrappedPtr is set, the Qt object that wraps the C++ Ptr
 
void_objPointerCopy
 
void_wrappedPtr
 optional C++ object Ptr that is wrapped by the above _obj
 
bool _ownedByPythonQt
 flag that stores if the object is owned by pythonQt
 
bool _useQMetaTypeDestroy
 stores that the owned object should be destroyed using QMetaType::destroy()
 
bool _isShellInstance
 stores if the object is a shell instance
 
bool _shellInstanceRefCountsWrapper
 stores if the shell instance (C++) owns the wrapper with its ref count
 

Detailed Description

a Python wrapper object for Qt objects and C++ objects (that are themselves wrapped by wrapper QObjects)

Definition at line 62 of file PythonQtInstanceWrapper.h.

Member Function Documentation

◆ classInfo()

PyObject_HEAD PythonQtClassInfo * PythonQtInstanceWrapper::classInfo ( )
inline

the class information, this is set even if the _obj or _wrappedPtr is NULL to support typed NULL pointers

Definition at line 66 of file PythonQtInstanceWrapper.h.

66{ return ((PythonQtClassWrapper*)Py_TYPE(this))->_classInfo; }
PyObject * PythonQtConvertPairToPython(const void *inPair, int metaTypeId)

References PythonQtConvertPairToPython().

◆ dynamicClassInfo()

PythonQtDynamicClassInfo * PythonQtInstanceWrapper::dynamicClassInfo ( )
inline

Definition at line 68 of file PythonQtInstanceWrapper.h.

69 {
70 return ((PythonQtClassWrapper*)Py_TYPE(this))->_dynamicClassInfo;
71 }

References PythonQtConvertPairToPython().

◆ passOwnershipToCPP()

void PythonQtInstanceWrapper::passOwnershipToCPP ( )
inline

Passes the ownership of the wrapped object to C++.

Definition at line 81 of file PythonQtInstanceWrapper.h.

82 {
83 // we pass the ownership to C++
84 _ownedByPythonQt = false;
85 // handle shell instance
86 if (_isShellInstance) {
88 // ref count the wrapper, so that the Python part of the shell instance can not go
89 // away until the C++ object gets deleted...
90 Py_INCREF((PyObject*)this);
92 }
93 }
94 }
struct _object PyObject
bool _shellInstanceRefCountsWrapper
stores if the shell instance (C++) owns the wrapper with its ref count
bool _ownedByPythonQt
flag that stores if the object is owned by pythonQt
bool _isShellInstance
stores if the object is a shell instance

References _isShellInstance, _ownedByPythonQt, _shellInstanceRefCountsWrapper, and PythonQtConvertPairToPython().

◆ passOwnershipToPython()

void PythonQtInstanceWrapper::passOwnershipToPython ( )
inline

Passes the ownership to Python.

Definition at line 97 of file PythonQtInstanceWrapper.h.

98 {
99 _ownedByPythonQt = true;
100 // if the shell instance was owned by C++ and the ownership goes to Python,
101 // we need to remove the extra ref count that kept the Python part alive from the C++ side.
103 Py_DECREF((PyObject*)this);
105 }
106 }

References _ownedByPythonQt, _shellInstanceRefCountsWrapper, and PythonQtConvertPairToPython().

◆ setQObject()

void PythonQtInstanceWrapper::setQObject ( QObject *  object)
inline

set the QObject pointer

Definition at line 74 of file PythonQtInstanceWrapper.h.

75 {
76 _obj = object;
77 _objPointerCopy = object;
78 }
QPointer< QObject > _obj
pointer to the wrapped Qt object or if _wrappedPtr is set, the Qt object that wraps the C++ Ptr

References _obj, and _objPointerCopy.

Member Data Documentation

◆ _isShellInstance

bool PythonQtInstanceWrapper::_isShellInstance

stores if the object is a shell instance

Definition at line 126 of file PythonQtInstanceWrapper.h.

Referenced by passOwnershipToCPP().

◆ _obj

QPointer<QObject> PythonQtInstanceWrapper::_obj

pointer to the wrapped Qt object or if _wrappedPtr is set, the Qt object that wraps the C++ Ptr

Definition at line 109 of file PythonQtInstanceWrapper.h.

Referenced by setQObject().

◆ _objPointerCopy

void* PythonQtInstanceWrapper::_objPointerCopy

a copy of the _obj pointer, which is required because the wrapper needs to deregister itself via the _obj pointer, even when the QPointer<QObject> object was destroyed

Definition at line 112 of file PythonQtInstanceWrapper.h.

Referenced by setQObject().

◆ _ownedByPythonQt

bool PythonQtInstanceWrapper::_ownedByPythonQt

flag that stores if the object is owned by pythonQt

Definition at line 120 of file PythonQtInstanceWrapper.h.

Referenced by passOwnershipToCPP(), passOwnershipToPython(), and PythonQtConvertListOfKnownClassToPythonList().

◆ _shellInstanceRefCountsWrapper

bool PythonQtInstanceWrapper::_shellInstanceRefCountsWrapper

stores if the shell instance (C++) owns the wrapper with its ref count

Definition at line 129 of file PythonQtInstanceWrapper.h.

Referenced by passOwnershipToCPP(), and passOwnershipToPython().

◆ _useQMetaTypeDestroy

bool PythonQtInstanceWrapper::_useQMetaTypeDestroy

stores that the owned object should be destroyed using QMetaType::destroy()

Definition at line 123 of file PythonQtInstanceWrapper.h.

◆ _wrappedPtr

void* PythonQtInstanceWrapper::_wrappedPtr

optional C++ object Ptr that is wrapped by the above _obj

Definition at line 115 of file PythonQtInstanceWrapper.h.


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