23 #ifndef PYTHONSHAREDPOINTERGUARD_H
24 #define PYTHONSHAREDPOINTERGUARD_H
29 #if (defined _DEBUG) && (defined WIN32)
31 #include "python/pythonWrapper.h"
34 #include "python/pythonWrapper.h"
38 #include "../../common/sharedStructures.h"
39 #include "../global.h"
40 #include "patchlevel.h"
43 #include <qsharedpointer.h>
54 static void safeDecrefPyObject2Async(PyObject* obj);
56 template<
typename _Tp>
static void deleter(_Tp *sharedPointerData)
58 QHash<void*, PyObject*>::iterator i = m_hashTable.find((
void*)sharedPointerData);
59 if (i != m_hashTable.end())
63 if (PyGILState_Check())
69 safeDecrefPyObject2Async(i.value());
77 template<
typename _Tp>
static QSharedPointer<_Tp> createPythonSharedPointer(_Tp *sharedPointerData, PyObject *pyObjOwner)
79 Py_XINCREF(pyObjOwner);
80 m_hashTable.insert((
void*)sharedPointerData, pyObjOwner);
81 return QSharedPointer<_Tp>(sharedPointerData, deleter<_Tp>);
85 static QHash<
void* , PyObject* > m_hashTable;
Definition: pythonSharedPointerGuard.h:49
Definition: apiFunctionsGraph.cpp:39