diff options
author | Hugo Parente Lima <hugo.pl@gmail.com> | 2010-12-01 18:05:33 -0200 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:12:08 -0300 |
commit | 766a0b55bff35c10463c4601f087d550fd0d9837 (patch) | |
tree | 70f7a255e2781012277e38bd93254991d94eb27b /libshiboken/typeresolver.cpp | |
parent | 3cfac85d50b8f891a8230513a4b5a0f6aea67b3e (diff) |
Removed useless stuff from TypeResolver.
Diffstat (limited to 'libshiboken/typeresolver.cpp')
-rw-r--r-- | libshiboken/typeresolver.cpp | 41 |
1 files changed, 13 insertions, 28 deletions
diff --git a/libshiboken/typeresolver.cpp b/libshiboken/typeresolver.cpp index 8d3ce7a96..e776b49f1 100644 --- a/libshiboken/typeresolver.cpp +++ b/libshiboken/typeresolver.cpp @@ -33,10 +33,8 @@ static TypeResolverMap typeResolverMap; struct TypeResolver::TypeResolverPrivate { - const char* typeName; // maybe this is not needed anymore CppToPythonFunc cppToPython; PythonToCppFunc pythonToCpp; - DeleteObjectFunc deleteObject; PyTypeObject* pyType; }; @@ -55,25 +53,23 @@ void Shiboken::initTypeResolver() std::atexit(deinitTypeResolver); } -static void registerTypeResolver(TypeResolver* resolver) +TypeResolver::TypeResolver() : m_d(new TypeResolverPrivate) { - TypeResolver*& v = typeResolverMap[resolver->typeName()]; - if (!v) - v = resolver; - else - delete resolver; // Discard type resolvers already registered } -TypeResolver::TypeResolver(const char* typeName, TypeResolver::CppToPythonFunc cppToPy, TypeResolver::PythonToCppFunc pyToCpp, PyTypeObject* pyType, TypeResolver::DeleteObjectFunc deleter) +TypeResolver* TypeResolver::createTypeResolver(const char* typeName, + CppToPythonFunc cppToPy, + PythonToCppFunc pyToCpp, + PyTypeObject* pyType) { - m_d = new TypeResolverPrivate; - m_d->typeName = typeName; - m_d->cppToPython = cppToPy; - m_d->pythonToCpp = pyToCpp; - m_d->deleteObject = deleter; - m_d->pyType = pyType; - - registerTypeResolver(this); + TypeResolver*& tr = typeResolverMap[typeName]; + if (!tr) { + tr = new TypeResolver; + tr->m_d->cppToPython = cppToPy; + tr->m_d->pythonToCpp = pyToCpp; + tr->m_d->pyType = pyType; + } + return tr; } TypeResolver::~TypeResolver() @@ -92,22 +88,11 @@ TypeResolver* TypeResolver::get(const char* typeName) } } -const char* TypeResolver::typeName() const -{ - return m_d->typeName; -} - void TypeResolver::toCpp(PyObject* pyObj, void** place) { m_d->pythonToCpp(pyObj, place); } -void TypeResolver::deleteObject(void* object) -{ - if (m_d->deleteObject) - m_d->deleteObject(object); -} - PyObject* TypeResolver::toPython(void* cppObj) { return m_d->cppToPython(cppObj); |