forked from romixlab/qmsgpack
work in progress...
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
#include "pack_p.h"
|
||||
|
||||
|
||||
|
||||
quint8 *MsgPackPrivate::pack(const QVariant &v, quint8 *p, bool sp)
|
||||
{
|
||||
QMetaType::Type t = (QMetaType::Type)v.type();
|
||||
if (t == QMetaType::Int)
|
||||
p = pack_int(v, p, sp);
|
||||
else if (t == QMetaType::Bool)
|
||||
p = pack_bool(v, p, sp);
|
||||
else if (t == QMetaType::QVariantList)
|
||||
p = pack_list(v, p, sp);
|
||||
return p;
|
||||
}
|
||||
|
||||
quint8 *MsgPackPrivate::pack_int(const QVariant &v, quint8 *p, bool sp)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
quint8 *MsgPackPrivate::pack_bool(const QVariant &v, quint8 *p, bool sp)
|
||||
{
|
||||
if (!sp)
|
||||
*p = v.toBool() ? 0xc3 : 0xc2;
|
||||
return p + 1;
|
||||
}
|
||||
|
||||
|
||||
quint8 *MsgPackPrivate::pack_list(const QVariant &v, quint8 *p, bool sp)
|
||||
{
|
||||
QVariantList list = v.toList();
|
||||
//pack_int(...)
|
||||
if (!sp)
|
||||
*p = 0x92; // 2el
|
||||
p++;
|
||||
foreach (QVariant item, v.toList())
|
||||
p = pack(item, p, sp);
|
||||
return p;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
#ifndef PACK_P_H
|
||||
#define PACK_P_H
|
||||
#include <QVariant>
|
||||
|
||||
namespace MsgPackPrivate {
|
||||
/* if sp (size probe) == true, packer just moves pointer forward
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
quint8 * pack(const QVariant &v, quint8 *p, bool sp);
|
||||
|
||||
quint8 * pack_int(const QVariant &v, quint8 *p, bool sp);
|
||||
quint8 * pack_bool(const QVariant &v, quint8 *p, bool sp);
|
||||
quint8 * pack_list(const QVariant &v, quint8 *p, bool sp);
|
||||
|
||||
}
|
||||
|
||||
#endif // PACK_P_H
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "msgpack_p.h"
|
||||
#include "unpack_p.h"
|
||||
#include <QDebug>
|
||||
|
||||
MsgPackPrivate::type_parser_f MsgPackPrivate::unpackers[32] = {
|
||||
@@ -30,8 +30,8 @@ QVariant MsgPackPrivate::unpack(quint8 *p, quint8 *end)
|
||||
if (p - end > 1)
|
||||
return QVariant();
|
||||
|
||||
// if (d.length() == 1)
|
||||
// return d[0];
|
||||
if (d.length() == 1)
|
||||
return d[0];
|
||||
return d;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user