From 8eb8daf1a850759c907e2b2b5ed43fd70af5a665 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Fri, 22 Oct 2010 19:07:01 -0200 Subject: Added BindingManager::getAllPyObjects method. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This functions returns all PyObjects under the umbrella of BindingManager. Reviewer: Luciano Wolf Renato Araújo --- libshiboken/bindingmanager.cpp | 20 ++++++++++++++------ libshiboken/bindingmanager.h | 2 ++ 2 files changed, 16 insertions(+), 6 deletions(-) (limited to 'libshiboken') 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 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 +#include #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 getAllPyObjects(); private: ~BindingManager(); // disable copy -- cgit v1.2.3