From 9214943397eb156d79c6b762460a28d458366995 Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Tue, 15 Jun 2010 19:27:54 -0300 Subject: Create getType function on TypeResolver. This function allow the programmer discovery if a type is Object or Value type. Reviewer: Hugo Parente Lima , Marcelo Lira --- libshiboken/typeresolver.cpp | 22 ++++++++++++++++++++++ libshiboken/typeresolver.h | 8 ++++++++ 2 files changed, 30 insertions(+) (limited to 'libshiboken') diff --git a/libshiboken/typeresolver.cpp b/libshiboken/typeresolver.cpp index a88634a17..d2e042ba4 100644 --- a/libshiboken/typeresolver.cpp +++ b/libshiboken/typeresolver.cpp @@ -126,3 +126,25 @@ PyTypeObject* TypeResolver::pythonType() { return m_d->pyType; } + +TypeResolver::Type TypeResolver::getType(const char* name) +{ + std::string typeName(name); + int len = typeName.size() - 1; + if (len > 1) { + if (typeName[len] == '*') + typeName.erase(len, 1); + + TypeResolver *resolver = TypeResolver::get(typeName.c_str()); + if (resolver) + return TypeResolver::ValueType; + + typeName += '*'; + resolver = TypeResolver::get(typeName.c_str()); + if (resolver) + return TypeResolver::ObjectType; + } + + return TypeResolver::UnknownType; +} + diff --git a/libshiboken/typeresolver.h b/libshiboken/typeresolver.h index 1f4c46424..a55c0e56f 100644 --- a/libshiboken/typeresolver.h +++ b/libshiboken/typeresolver.h @@ -77,6 +77,13 @@ void initTypeResolver(); class LIBSHIBOKEN_API TypeResolver { public: + enum Type + { + ObjectType, + ValueType, + UnknownType + }; + typedef PyObject* (*CppToPythonFunc)(void*); typedef void* (*PythonToCppFunc)(PyObject*); typedef void (*DeleteObjectFunc)(void*); @@ -96,6 +103,7 @@ public: return new TypeResolver(typeName, &objectTypeToPython, &pythonToObjectType, SbkType()); } + static Type getType(const char* name); static TypeResolver* get(const char* typeName); const char* typeName() const; -- cgit v1.2.3