unpacking is partially done

This commit is contained in:
romixlab
2014-09-08 18:40:20 +04:00
parent 7415c0968b
commit 70cd81a2ce
6 changed files with 596 additions and 45 deletions

View File

@@ -1,29 +1,14 @@
#include "msgpack.h"
#include <QDebug>
#include "private/msgpack_p.h"
QVariantList MsgPack::deserialize(const QByteArray &data)
QVariant MsgPack::deserialize(const QByteArray &data)
{
QVariantList d;
int i = 0;
quint8 *p = (quint8 *)data.data();
while (i < data.size()) {
if (p[i] <= 127) { // positive fixint 0x00 - 0x7f
quint32 val = (quint32)p[i];
d.append(QVariant(val));
i += 1;
}
if (p[i] >= 0xe0) { // negative fixint 0xe0 - 0xff
quint8 val8 = (quint8)p[i];
val8 &= ~((1 << 7) | (1 << 6) | (1 << 5));
qint32 val = 31 - val8;
val ^= 0xffffffff;
d.append(QVariant((qint32)val));
i += 1;
}
quint8 *end = p + data.size() - 1;
qDebug() << "deserialize size:" << data.size();
MsgPackPrivate::unpack(p, end);
}
return d;
return MsgPackPrivate::unpack(p, end);
}