aboutsummaryrefslogtreecommitdiffstats
path: root/libshiboken/typeresolver.cpp
diff options
context:
space:
mode:
authorHugo Parente Lima <hugo.pl@gmail.com>2010-12-01 18:05:33 -0200
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:12:08 -0300
commit766a0b55bff35c10463c4601f087d550fd0d9837 (patch)
tree70f7a255e2781012277e38bd93254991d94eb27b /libshiboken/typeresolver.cpp
parent3cfac85d50b8f891a8230513a4b5a0f6aea67b3e (diff)
Removed useless stuff from TypeResolver.
Diffstat (limited to 'libshiboken/typeresolver.cpp')
-rw-r--r--libshiboken/typeresolver.cpp41
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);