aboutsummaryrefslogtreecommitdiffstats
path: root/libshiboken/bindingmanager.cpp
diff options
context:
space:
mode:
authorHugo Parente Lima <hugo.pl@gmail.com>2010-10-22 19:07:01 -0200
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:07:23 -0300
commit8eb8daf1a850759c907e2b2b5ed43fd70af5a665 (patch)
treed3207ccbf3e3a63db0a53c02a66076b0148a09f9 /libshiboken/bindingmanager.cpp
parent498a649e565711a208f2efe793d4cba2374ea1dd (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/bindingmanager.cpp')
-rw-r--r--libshiboken/bindingmanager.cpp20
1 files changed, 14 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