aboutsummaryrefslogtreecommitdiffstats
path: root/tests/samplebinding/bytearray_conversions.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/samplebinding/bytearray_conversions.h')
-rw-r--r--tests/samplebinding/bytearray_conversions.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/tests/samplebinding/bytearray_conversions.h b/tests/samplebinding/bytearray_conversions.h
index c37b28a99..0fd9a2b7d 100644
--- a/tests/samplebinding/bytearray_conversions.h
+++ b/tests/samplebinding/bytearray_conversions.h
@@ -8,17 +8,25 @@ inline bool Converter<ByteArray>::isConvertible(PyObject* pyObj)
if (ValueTypeConverter<ByteArray>::isConvertible(pyObj))
return true;
SbkObjectType* shiboType = reinterpret_cast<SbkObjectType*>(SbkType<ByteArray>());
- return Shiboken::Converter<const char*>::checkType(pyObj)
+
+ return Shiboken::Converter<const char*>::isConvertible(pyObj)
+ || PyBytes_Check(pyObj)
|| (ObjectType::isExternalConvertible(shiboType, pyObj));
}
inline ByteArray Converter<ByteArray>::toCpp(PyObject* pyObj)
{
- if (pyObj == Py_None)
+ if (pyObj == Py_None) {
return ByteArray();
- else if (PyObject_TypeCheck(pyObj, SbkType<ByteArray>()))
+ } else if (PyObject_TypeCheck(pyObj, SbkType<ByteArray>())) {
return *Converter<ByteArray*>::toCpp(pyObj);
- else if (PyBytes_Check(pyObj))
+ } else if (PyBytes_Check(pyObj)) {
return ByteArray(PyBytes_AS_STRING(pyObj), PyBytes_GET_SIZE(pyObj));
+ } else if (PyUnicode_Check(pyObj)) {
+ Shiboken::AutoDecRef data(PyUnicode_AsASCIIString(pyObj));
+ return ByteArray(PyBytes_AsString(data.object()), PyBytes_GET_SIZE(data.object()));
+ } else if (Shiboken::String::check(pyObj)) {
+ return ByteArray(Shiboken::String::toCString(pyObj));
+ }
return ValueTypeConverter<ByteArray>::toCpp(pyObj);
}
inline PyObject* Converter<ByteArray>::toPython(const ByteArray& cppObj)