From 3522a207cc2307e331cb85c25afabc355fe50a78 Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Fri, 21 Oct 2011 17:22:36 -0300 Subject: Fixes SBK_CONVERTER macro and SbkEnumType structure. Fixes provided by Hugo Parente Lima. Unit test added. --- libshiboken/sbkconverter.h | 4 ++-- libshiboken/sbkenum.cpp | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'libshiboken') diff --git a/libshiboken/sbkconverter.h b/libshiboken/sbkconverter.h index 0edd5abb..463014fd 100644 --- a/libshiboken/sbkconverter.h +++ b/libshiboken/sbkconverter.h @@ -282,7 +282,7 @@ template<> inline SbkConverter* PrimitiveTypeConverter() { return primiti } } // namespace Shiboken::Conversions -struct _SbkGenericType { PyHeapTypeObject super; SbkConverter* converter; }; -#define SBK_CONVERTER(objType) (reinterpret_cast<_SbkGenericType*>(objType)->converter) +struct _SbkGenericType { PyHeapTypeObject super; SbkConverter** converter; }; +#define SBK_CONVERTER(pyType) (*reinterpret_cast<_SbkGenericType*>(pyType)->converter) #endif // SBK_CONVERTER_H diff --git a/libshiboken/sbkenum.cpp b/libshiboken/sbkenum.cpp index c2f6ce0c..306ffc8d 100644 --- a/libshiboken/sbkenum.cpp +++ b/libshiboken/sbkenum.cpp @@ -41,6 +41,7 @@ extern "C" struct SbkEnumType { PyHeapTypeObject super; + SbkConverter** converterPtr; SbkConverter* converter; const char* cppName; }; @@ -533,7 +534,9 @@ PyTypeObject* newTypeWithName(const char* name, const char* cppName) type->tp_richcompare = &enum_richcompare; type->tp_hash = &enum_hash; - reinterpret_cast(type)->cppName = cppName; + SbkEnumType* enumType = reinterpret_cast(type); + enumType->cppName = cppName; + enumType->converterPtr = &enumType->converter; DeclaredEnumTypes::instance().addEnumType(type); return type; } -- cgit v1.2.3