aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2
diff options
context:
space:
mode:
authorBoxiang Sun <daetalusun@gmail.com>2018-05-20 11:04:45 +0800
committerBoxiang Sun <daetalusun@gmail.com>2018-06-01 15:09:19 +0000
commitee8e7117c79f6820cb228e0f0da522ce7d3c1dce (patch)
tree13cd0847be4ff45a80e2457b945f86b9bd9b4a20 /sources/shiboken2
parentddbd93680730811a5020b4d429c2e3e11d6823e3 (diff)
Improve the QByteArray implementation
The available constructors for QByteArray are now: bytes, bytearray, and QByteArray, unicode is not accepted anymore. Also the concatenation is now possible between QByteArrays. Even though is not possible to initialize a QByteArray with an unicode, we include the possibility to compare it with one (Compatibility with PyQt). The __repr__ and __str__ are now properly working. There seemed to be a confusion regarding data types between Shiboken, Python2 and Python3 related to bytes, so now the structure is based on the flag SBK_BYTES_NAME, which is define as "bytes" for Python3 and "str" for Python2. Many tests were modified to properly handle string, using the `py3kcompat` module. Task-number: PYSIDE-232 Change-Id: I8b671f367c60a0870c72dcbe5662106b3225037d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'sources/shiboken2')
-rw-r--r--sources/shiboken2/generator/shiboken2/cppgenerator.cpp6
-rw-r--r--sources/shiboken2/libshiboken/sbkpython.h1
-rw-r--r--sources/shiboken2/libshiboken/sbkstring.h4
3 files changed, 6 insertions, 5 deletions
diff --git a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
index bd654f17c..badb6a4cd 100644
--- a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
+++ b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
@@ -1988,7 +1988,7 @@ void CppGenerator::writeErrorSection(QTextStream& s, OverloadData& overloadData)
QString strArg;
AbstractMetaType* argType = arg->type();
if (isCString(argType)) {
- strArg = QLatin1String("\" SBK_STR_NAME \"");
+ strArg = QLatin1String("\" SBK_BYTES_NAME \"");
} else if (argType->isPrimitive()) {
const PrimitiveTypeEntry* ptp = reinterpret_cast<const PrimitiveTypeEntry*>(argType->typeEntry());
while (ptp->referencedTypeEntry())
@@ -2025,7 +2025,9 @@ void CppGenerator::writeErrorSection(QTextStream& s, OverloadData& overloadData)
else if (strArg == QLatin1String("PyString"))
strArg = QLatin1String("str");
else if (strArg == QLatin1String("PyBytes"))
- strArg = QLatin1String("\" SBK_STR_NAME \"");
+ strArg = QLatin1String("\" SBK_BYTES_NAME \"");
+ else if (strArg == QLatin1String("PyByteArray"))
+ strArg = QLatin1String("bytearray");
else if (strArg == QLatin1String("PySequence"))
strArg = QLatin1String("list");
else if (strArg == QLatin1String("PyTuple"))
diff --git a/sources/shiboken2/libshiboken/sbkpython.h b/sources/shiboken2/libshiboken/sbkpython.h
index 5fe364a29..a26c318d1 100644
--- a/sources/shiboken2/libshiboken/sbkpython.h
+++ b/sources/shiboken2/libshiboken/sbkpython.h
@@ -76,7 +76,6 @@
#define SbkNumber_Check(X) \
(PyNumber_Check(X) && (!PyInstance_Check(X) || PyObject_HasAttrString(X, "__trunc__")))
#define SBK_NB_BOOL(x) (x).nb_nonzero
- #define SBK_STR_NAME "str"
#define SBK_PyMethod_New(X, Y) PyMethod_New(X, Y, reinterpret_cast<PyObject *>(Py_TYPE(Y)))
#define Py_hash_t long
diff --git a/sources/shiboken2/libshiboken/sbkstring.h b/sources/shiboken2/libshiboken/sbkstring.h
index d437f1c77..a6b5fbeed 100644
--- a/sources/shiboken2/libshiboken/sbkstring.h
+++ b/sources/shiboken2/libshiboken/sbkstring.h
@@ -44,9 +44,9 @@
#include "shibokenmacros.h"
#if PY_MAJOR_VERSION >= 3
- #define SBK_STR_NAME "unicode"
+ #define SBK_BYTES_NAME "bytes"
#else
- #define SBK_STR_NAME "str"
+ #define SBK_BYTES_NAME "str"
#endif
namespace Shiboken