Fix comparisson of QByteArray with Python strings that have zeroes inside.
This commit is contained in:
parent
4f4abdb2be
commit
702cd168e1
3 changed files with 49 additions and 0 deletions
34
PySide/QtCore/qbytearray_conversions.h
Normal file
34
PySide/QtCore/qbytearray_conversions.h
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
namespace Shiboken {
|
||||||
|
|
||||||
|
inline bool Converter<QByteArray>::checkType(PyObject* pyObj)
|
||||||
|
{
|
||||||
|
return ValueTypeConverter<QByteArray>::checkType(pyObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool Converter<QByteArray>::isConvertible(PyObject* pyObj)
|
||||||
|
{
|
||||||
|
if (ValueTypeConverter<QByteArray>::isConvertible(pyObj))
|
||||||
|
return true;
|
||||||
|
SbkObjectType* shiboType = reinterpret_cast<SbkObjectType*>(SbkType< ::QByteArray >());
|
||||||
|
return Shiboken::Converter<const char *>::checkType(pyObj)
|
||||||
|
|| (ObjectType::isExternalConvertible(shiboType, pyObj));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QByteArray Converter<QByteArray>::toCpp(PyObject* pyObj)
|
||||||
|
{
|
||||||
|
if (pyObj == Py_None)
|
||||||
|
return 0;
|
||||||
|
else if (PyObject_TypeCheck(pyObj, SbkType<QByteArray>()))
|
||||||
|
return *Converter<QByteArray*>::toCpp(pyObj);
|
||||||
|
else if (PyString_Check(pyObj))
|
||||||
|
return QByteArray(PyString_AS_STRING(pyObj), PyString_GET_SIZE(pyObj));
|
||||||
|
else
|
||||||
|
return ValueTypeConverter<QByteArray>::toCpp(pyObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline PyObject* Converter<QByteArray>::toPython(const ::QByteArray& cppObj)
|
||||||
|
{
|
||||||
|
return ValueTypeConverter<QByteArray>::toPython(cppObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1442,6 +1442,8 @@
|
||||||
</add-function>
|
</add-function>
|
||||||
</value-type>
|
</value-type>
|
||||||
<value-type name="QByteArray" hash-function="qHash">
|
<value-type name="QByteArray" hash-function="qHash">
|
||||||
|
<conversion-rule file="qbytearray_conversions.h"/>
|
||||||
|
|
||||||
<extra-includes>
|
<extra-includes>
|
||||||
<include file-name="QNoImplicitBoolCast" location="global"/>
|
<include file-name="QNoImplicitBoolCast" location="global"/>
|
||||||
</extra-includes>
|
</extra-includes>
|
||||||
|
|
@ -1499,6 +1501,18 @@
|
||||||
<modify-function signature="operator const char *()const" remove="all"/>
|
<modify-function signature="operator const char *()const" remove="all"/>
|
||||||
<modify-function signature="operator const void *()const" remove="all"/>
|
<modify-function signature="operator const void *()const" remove="all"/>
|
||||||
<modify-function signature="operator+=(const char*)" remove="all"/>
|
<modify-function signature="operator+=(const char*)" remove="all"/>
|
||||||
|
<modify-function signature="operator==(const char*,QByteArray)" remove="all" />
|
||||||
|
<modify-function signature="operator==(QByteArray,const char*)" remove="all" />
|
||||||
|
<modify-function signature="operator!=(const char*,QByteArray)" remove="all" />
|
||||||
|
<modify-function signature="operator!=(QByteArray,const char*)" remove="all" />
|
||||||
|
<modify-function signature="operator<(const char*,QByteArray)" remove="all" />
|
||||||
|
<modify-function signature="operator<(QByteArray,const char*)" remove="all" />
|
||||||
|
<modify-function signature="operator<=(const char*,QByteArray)" remove="all" />
|
||||||
|
<modify-function signature="operator<=(QByteArray,const char*)" remove="all" />
|
||||||
|
<modify-function signature="operator>(const char*,QByteArray)" remove="all" />
|
||||||
|
<modify-function signature="operator>(QByteArray,const char*)" remove="all" />
|
||||||
|
<modify-function signature="operator>=(const char*,QByteArray)" remove="all" />
|
||||||
|
<modify-function signature="operator>=(QByteArray,const char*)" remove="all" />
|
||||||
<modify-function signature="operator[](int)const" remove="all"/>
|
<modify-function signature="operator[](int)const" remove="all"/>
|
||||||
<modify-function signature="operator[](uint)const" remove="all"/>
|
<modify-function signature="operator[](uint)const" remove="all"/>
|
||||||
<modify-function signature="push_back(char)" remove="all"/>
|
<modify-function signature="push_back(char)" remove="all"/>
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ class QByteArrayData(unittest.TestCase):
|
||||||
ba = QByteArray(s1)
|
ba = QByteArray(s1)
|
||||||
s2 = ba.data()
|
s2 = ba.data()
|
||||||
self.assertEqual(s1, s2)
|
self.assertEqual(s1, s2)
|
||||||
|
self.assertEqual(s1, ba)
|
||||||
|
|
||||||
class QByteArrayOperatorAtSetter(unittest.TestCase):
|
class QByteArrayOperatorAtSetter(unittest.TestCase):
|
||||||
'''Test case for operator QByteArray[] - __setitem__'''
|
'''Test case for operator QByteArray[] - __setitem__'''
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue