aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cppgenerator.cpp4
-rw-r--r--libshiboken/basewrapper.cpp6
-rw-r--r--libshiboken/basewrapper.h7
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.