diff options
author | Hugo Parente Lima <hugo.pl@gmail.com> | 2010-11-09 18:16:38 -0200 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:08:56 -0300 |
commit | 0151116f107393fe342fb491e68d67edefc33ddb (patch) | |
tree | 29efb291cfb953be588509a73e821a59c6e57362 /libshiboken/bindingmanager.cpp | |
parent | 0ef92c1dccbb5b086686aa99399c310d78427fe8 (diff) |
Removed macros SbkBaseWrapper_instanceDict and SbkBaseWrapper_setInstanceDict
Diffstat (limited to 'libshiboken/bindingmanager.cpp')
-rw-r--r-- | libshiboken/bindingmanager.cpp | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/libshiboken/bindingmanager.cpp b/libshiboken/bindingmanager.cpp index e2d32d832..e667f6173 100644 --- a/libshiboken/bindingmanager.cpp +++ b/libshiboken/bindingmanager.cpp @@ -32,7 +32,7 @@ namespace Shiboken { -typedef google::dense_hash_map<const void*, PyObject*> WrapperMap; +typedef google::dense_hash_map<const void*, SbkObject*> WrapperMap; class Graph { @@ -111,7 +111,7 @@ struct BindingManager::BindingManagerPrivate { BindingManagerPrivate() : destroying(false) {} void releaseWrapper(void* cptr); - void assignWrapper(PyObject* wrapper, const void* cptr); + void assignWrapper(SbkObject* wrapper, const void* cptr); }; @@ -122,7 +122,7 @@ void BindingManager::BindingManagerPrivate::releaseWrapper(void* cptr) wrapperMapper.erase(iter); } -void BindingManager::BindingManagerPrivate::assignWrapper(PyObject* wrapper, const void* cptr) +void BindingManager::BindingManagerPrivate::assignWrapper(SbkObject* wrapper, const void* cptr) { assert(cptr); WrapperMap::iterator iter = wrapperMapper.find(cptr); @@ -162,29 +162,29 @@ bool BindingManager::hasWrapper(const void* cptr) { return m_d->wrapperMapper.count(cptr); } -void BindingManager::registerWrapper(SbkObject* pyobj, void* cptr) +void BindingManager::registerWrapper(SbkObject* pyObj, void* cptr) { - SbkBaseWrapperType* instanceType = reinterpret_cast<SbkBaseWrapperType*>(pyobj->ob_type); + SbkBaseWrapperType* instanceType = reinterpret_cast<SbkBaseWrapperType*>(pyObj->ob_type); if (instanceType->mi_init && !instanceType->mi_offsets) instanceType->mi_offsets = instanceType->mi_init(cptr); - m_d->assignWrapper(reinterpret_cast<PyObject*>(pyobj), cptr); + m_d->assignWrapper(pyObj, cptr); if (instanceType->mi_offsets) { int* offset = instanceType->mi_offsets; while (*offset != -1) { if (*offset > 0) - m_d->assignWrapper(reinterpret_cast<PyObject*>(pyobj), reinterpret_cast<void*>((std::size_t) cptr + (*offset))); + m_d->assignWrapper(pyObj, reinterpret_cast<void*>((std::size_t) cptr + (*offset))); offset++; } } } -void BindingManager::releaseWrapper(PyObject* wrapper) +void BindingManager::releaseWrapper(SbkObject* sbkObj) { - SbkBaseWrapperType* sbkType = reinterpret_cast<SbkBaseWrapperType*>(wrapper->ob_type); - int numBases = sbkType->is_multicpp ? getNumberOfCppBaseClasses(wrapper->ob_type) : 1; + SbkBaseWrapperType* sbkType = reinterpret_cast<SbkBaseWrapperType*>(sbkObj->ob_type); + int numBases = sbkType->is_multicpp ? getNumberOfCppBaseClasses(sbkObj->ob_type) : 1; - void** cptrs = reinterpret_cast<SbkObject*>(wrapper)->d->cptr; + void** cptrs = reinterpret_cast<SbkObject*>(sbkObj)->d->cptr; for (int i = 0; i < numBases; ++i) { void* cptr = cptrs[i]; m_d->releaseWrapper(cptr); @@ -199,7 +199,7 @@ void BindingManager::releaseWrapper(PyObject* wrapper) } } -PyObject* BindingManager::retrieveWrapper(const void* cptr) +SbkObject* BindingManager::retrieveWrapper(const void* cptr) { WrapperMap::iterator iter = m_d->wrapperMapper.find(cptr); if (iter == m_d->wrapperMapper.end()) @@ -209,22 +209,23 @@ PyObject* BindingManager::retrieveWrapper(const void* cptr) PyObject* BindingManager::getOverride(const void* cptr, const char* methodName) { - PyObject* wrapper = retrieveWrapper(cptr); + SbkObject* wrapper = retrieveWrapper(cptr); if (!wrapper) return 0; - if (SbkBaseWrapper_instanceDict(wrapper)) { - PyObject* method = PyDict_GetItemString(SbkBaseWrapper_instanceDict(wrapper), methodName); + if (wrapper->ob_dict) { + PyObject* method = PyDict_GetItemString(wrapper->ob_dict, methodName); if (method) { - Py_INCREF(method); + Py_INCREF((PyObject*)method); return method; } } PyObject* pyMethodName = PyString_FromString(methodName); - PyObject* method = PyObject_GetAttr(wrapper, pyMethodName); + PyObject* method = PyObject_GetAttr((PyObject*)wrapper, pyMethodName); - if (method && PyMethod_Check(method) && reinterpret_cast<PyMethodObject*>(method)->im_self == wrapper) { + if (method && PyMethod_Check(method) + && reinterpret_cast<PyMethodObject*>(method)->im_self == reinterpret_cast<PyObject*>(wrapper)) { PyObject* defaultMethod; PyObject* mro = wrapper->ob_type->tp_mro; @@ -288,7 +289,7 @@ void BindingManager::invalidateWrapper(SbkObject* wrapper) m_d->destroying = parentDestroying; } - releaseWrapper(reinterpret_cast<PyObject*>(wrapper)); + releaseWrapper(wrapper); } void BindingManager::invalidateWrapper(const void* cptr) @@ -343,9 +344,9 @@ SbkBaseWrapperType* BindingManager::resolveType(void* cptr, Shiboken::SbkBaseWra return identifiedType ? identifiedType : type; } -std::set< PyObject* > BindingManager::getAllPyObjects() +std::set<SbkObject*> BindingManager::getAllPyObjects() { - std::set<PyObject*> pyObjects; + std::set<SbkObject*> pyObjects; const WrapperMap& wrappersMap = m_d->wrapperMapper; WrapperMap::const_iterator it = wrappersMap.begin(); for (; it != wrappersMap.end(); ++it) |