diff --git a/CMakeLists.txt b/CMakeLists.txt index 72ebe05..a010234 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,3 +1,8 @@ +set(Qt5Core_DIR "/opt/Qt5.6.0/5.6/gcc_64/lib/cmake/Qt5Core") +set(Qt5Test_DIR "/opt/Qt5.6.0/5.6/gcc_64/lib/cmake/Qt5Test") +set(Qt5_DIR "/opt/Qt5.6.0/5.6/gcc_64/lib/cmake/Qt5Core") +set(QT_QMAKE_EXECUTABLE "/opt/Qt5.6.0/5.6/gcc_64/bin/qmake") + project(qmsgpack) cmake_minimum_required(VERSION 2.8.8) diff --git a/doc/_themes/sphinx_rtd_theme b/doc/_themes/sphinx_rtd_theme index 928fe94..5537ad5 120000 Binary files a/doc/_themes/sphinx_rtd_theme and b/doc/_themes/sphinx_rtd_theme differ diff --git a/doc/install.rst b/doc/install.rst index cd753f4..fbca06d 100644 --- a/doc/install.rst +++ b/doc/install.rst @@ -62,6 +62,18 @@ Add options before ``..`` as follow: cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_TESTS=True .. +Custom Qt installation +"""""""""""""""""""""" + +If you installed Qt with online installer, cmake will most likely not find it, in this case try adding following lines to CMakeLists.txt: + +.. code-block:: cmake + + set(Qt5Core_DIR "/opt/Qt5.6.0/5.6/gcc_64/lib/cmake/Qt5Core") + set(Qt5Test_DIR "/opt/Qt5.6.0/5.6/gcc_64/lib/cmake/Qt5Test") + set(Qt5_DIR "/opt/Qt5.6.0/5.6/gcc_64/lib/cmake/Qt5Core") + set(QT_QMAKE_EXECUTABLE "/opt/Qt5.6.0/5.6/gcc_64/bin/qmake") + qmake ^^^^^ diff --git a/src/msgpackcommon.h b/src/msgpackcommon.h index f8109c6..68a6479 100644 --- a/src/msgpackcommon.h +++ b/src/msgpackcommon.h @@ -4,10 +4,6 @@ #include #include -#ifdef Q_OS_WINRT -#include -#endif - #define MSGPACK_MAJOR 0 #define MSGPACK_MINOR 1 #define MSGPACK_VERSION 0 diff --git a/src/private/pack_p.cpp b/src/private/pack_p.cpp index eeb9712..e807bf6 100644 --- a/src/private/pack_p.cpp +++ b/src/private/pack_p.cpp @@ -18,7 +18,9 @@ QReadWriteLock MsgPackPrivate::packers_lock; quint8 *MsgPackPrivate::pack(const QVariant &v, quint8 *p, bool wr, QVector &user_data) { QMetaType::Type t = (QMetaType::Type)v.type(); - if (t == QMetaType::Int) + if (v.isNull() && !v.isValid()) + p = pack_nil(p, wr); + else if (t == QMetaType::Int) p = pack_int(v.toInt(), p, wr); else if (t == QMetaType::UInt) p = pack_uint(v.toUInt(), p, wr); @@ -59,6 +61,12 @@ quint8 *MsgPackPrivate::pack(const QVariant &v, quint8 *p, bool wr, QVector= -32 && i <= 127) { diff --git a/src/private/pack_p.h b/src/private/pack_p.h index 0fe8cce..cf9a785 100644 --- a/src/private/pack_p.h +++ b/src/private/pack_p.h @@ -27,6 +27,8 @@ extern bool compatibilityMode; quint8 * pack(const QVariant &v, quint8 *p, bool wr, QVector &user_data); +quint8 * pack_nil(quint8 *p, bool wr); + quint8 * pack_int(qint32 i, quint8 *p, bool wr); quint8 * pack_uint(quint32 i, quint8 *p, bool wr); quint8 * pack_longlong(qint64 i, quint8 *p, bool wr); diff --git a/src/private/unpack_p.cpp b/src/private/unpack_p.cpp index 9a01d78..45b4be6 100644 --- a/src/private/unpack_p.cpp +++ b/src/private/unpack_p.cpp @@ -87,6 +87,7 @@ quint8 * MsgPackPrivate::unpack_nil(QVariant &v, quint8 *p) { Q_UNUSED(p) Q_UNUSED(v) + v = QVariant(); return p + 1; } @@ -94,6 +95,7 @@ quint8 * MsgPackPrivate::unpack_never_used(QVariant &v, quint8 *p) { Q_UNUSED(p) Q_UNUSED(v) + v = QVariant(); return p + 1; } diff --git a/tests/qttypes/qttypes_test.cpp b/tests/qttypes/qttypes_test.cpp index 03468eb..015a1b0 100644 --- a/tests/qttypes/qttypes_test.cpp +++ b/tests/qttypes/qttypes_test.cpp @@ -68,6 +68,7 @@ void QtTypesTest::test_qtime() QByteArray packed = MsgPack::pack(t); QTime t2 = MsgPack::unpack(packed).toTime(); QVERIFY(t == t2); + qDebug() << packed.toHex(); QVERIFY(packed.size() == 3); t = QTime(12, 01, 01, 0);