diff options
-rw-r--r-- | cppgenerator.cpp | 4 | ||||
-rw-r--r-- | libshiboken/basewrapper.cpp | 6 | ||||
-rw-r--r-- | libshiboken/basewrapper.h | 7 |
3 files changed, 15 insertions, 2 deletions
diff --git a/cppgenerator.cpp b/cppgenerator.cpp index f4cc81a45..f5cdad8ca 100644 --- a/cppgenerator.cpp +++ b/cppgenerator.cpp @@ -1842,7 +1842,9 @@ void CppGenerator::writeClassDefinition(QTextStream& s, const AbstractMetaClass* s << INDENT << "/*mi_init*/ " << mi_init << ',' << endl; s << INDENT << "/*mi_specialcast*/ " << mi_specialcast << ',' << endl; s << INDENT << "/*type_name_func*/ " << type_name_func << ',' << endl; - s << INDENT << "/*obj_copier*/ " << obj_copier << endl; + s << INDENT << "/*obj_copier*/ " << obj_copier << ',' << endl; + s << INDENT << "/*ext_isconvertible*/ 0," << endl; + s << INDENT << "/*ext_tocpp*/ 0" << endl; s << "};" << endl; } diff --git a/libshiboken/basewrapper.cpp b/libshiboken/basewrapper.cpp index fe9b73b1d..358d6b249 100644 --- a/libshiboken/basewrapper.cpp +++ b/libshiboken/basewrapper.cpp @@ -231,6 +231,8 @@ SbkBaseWrapperType_TpNew(PyTypeObject* metatype, PyObject* args, PyObject* kwds) newType->mi_init = parentType->mi_init; newType->mi_specialcast = parentType->mi_specialcast; newType->type_name_func = parentType->type_name_func; + newType->ext_isconvertible = parentType->ext_isconvertible; + newType->ext_tocpp = parentType->ext_tocpp; return reinterpret_cast<PyObject*>(newType); } @@ -357,7 +359,9 @@ SbkBaseWrapperType SbkBaseWrapper_Type = { { { /*mi_offsets*/ 0, /*mi_init*/ 0, /*mi_specialcast*/ 0, - /*type_name_func*/ 0 + /*type_name_func*/ 0, + /*ext_isconvertible*/ 0, + /*ext_tocpp*/ 0 }; void initShiboken() diff --git a/libshiboken/basewrapper.h b/libshiboken/basewrapper.h index ca876fccc..6383a7686 100644 --- a/libshiboken/basewrapper.h +++ b/libshiboken/basewrapper.h @@ -79,6 +79,9 @@ typedef void* (*SpecialCastFunction)(PyObject*, SbkBaseWrapperType*); typedef const char* (*TypeNameFunction)(const void*); typedef void* (*ObjectCopierFunction)(const void*); +typedef void* (*ExtendedToCppFunc)(PyObject*); +typedef bool (*ExtendedIsConvertibleFunc)(PyObject*); + LIBSHIBOKEN_API PyAPI_DATA(PyTypeObject) SbkBaseWrapperType_Type; LIBSHIBOKEN_API PyAPI_DATA(SbkBaseWrapperType) SbkBaseWrapper_Type; @@ -92,6 +95,10 @@ struct LIBSHIBOKEN_API SbkBaseWrapperType SpecialCastFunction mi_specialcast; TypeNameFunction type_name_func; ObjectCopierFunction obj_copier; + /// Extended "isConvertible" function to be used when a conversion operator is defined in another module. + ExtendedIsConvertibleFunc ext_isconvertible; + /// Extended "toCpp" function to be used when a conversion operator is defined in another module. + ExtendedToCppFunc ext_tocpp; }; /// Base Python object for all the wrapped C++ classes. |