diff options
author | Hugo Parente Lima <hugo.pl@gmail.com> | 2010-10-22 19:07:01 -0200 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:07:23 -0300 |
commit | 8eb8daf1a850759c907e2b2b5ed43fd70af5a665 (patch) | |
tree | d3207ccbf3e3a63db0a53c02a66076b0148a09f9 /libshiboken | |
parent | 498a649e565711a208f2efe793d4cba2374ea1dd (diff) |
Added BindingManager::getAllPyObjects method.
This functions returns all PyObjects under the umbrella of BindingManager.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Renato Araújo <renato.filho@openbossa.org>
Diffstat (limited to 'libshiboken')
-rw-r--r-- | libshiboken/bindingmanager.cpp | 20 | ||||
-rw-r--r-- | libshiboken/bindingmanager.h | 2 |
2 files changed, 16 insertions, 6 deletions
diff --git a/libshiboken/bindingmanager.cpp b/libshiboken/bindingmanager.cpp index 93e61b645..38dc4eb87 100644 --- a/libshiboken/bindingmanager.cpp +++ b/libshiboken/bindingmanager.cpp @@ -144,15 +144,12 @@ BindingManager::~BindingManager() #ifndef NDEBUG showWrapperMap(m_d->wrapperMapper); #endif - assert(m_d->wrapperMapper.size() == 0); - /* Cleanup hanging references. We just invalidate them as when * the BindingManager is being destroyed the interpreter is alredy * shutting down. */ - WrapperMap::iterator iter = m_d->wrapperMapper.begin(); - for (;iter != m_d->wrapperMapper.end(); ++iter) - invalidateWrapper(iter->second); - + while (!m_d->wrapperMapper.empty()) + invalidateWrapper(m_d->wrapperMapper.begin()->second); + assert(m_d->wrapperMapper.size() == 0); delete m_d; } @@ -346,5 +343,16 @@ SbkBaseWrapperType* BindingManager::resolveType(void* cptr, Shiboken::SbkBaseWra return identifiedType ? identifiedType : type; } +std::set< PyObject* > BindingManager::getAllPyObjects() +{ + std::set<PyObject*> pyObjects; + const WrapperMap& wrappersMap = m_d->wrapperMapper; + WrapperMap::const_iterator it = wrappersMap.begin(); + for (; it != wrappersMap.end(); ++it) + pyObjects.insert(it->second); + + return pyObjects; +} + } // namespace Shiboken diff --git a/libshiboken/bindingmanager.h b/libshiboken/bindingmanager.h index cec4a78ff..d7cec27b9 100644 --- a/libshiboken/bindingmanager.h +++ b/libshiboken/bindingmanager.h @@ -24,6 +24,7 @@ #define BINDINGMANAGER_H #include <Python.h> +#include <set> #include "shibokenmacros.h" namespace Shiboken @@ -61,6 +62,7 @@ public: /// Called by wrapper destructor void destroyWrapper(const void* cptr); void destroyWrapper(SbkBaseWrapper* wrapper); + std::set<PyObject*> getAllPyObjects(); private: ~BindingManager(); // disable copy |