Files
qmsgpack/README.md
Alexander Makarov 906bcf58eb Update README.md
2016-07-05 16:18:38 +03:00

60 lines
1.6 KiB
Markdown

qmsgpack
========
[![Build status](https://travis-ci.org/buzzySmile/qmsgpack.svg?branch=master)](https://travis-ci.org/buzzySmile/qmsgpack)
[![Doc Status](https://readthedocs.org/projects/qmsgpack/badge/?version=latest)](http://qmsgpack.readthedocs.org)
MessagePack for Qt
Installation
------------
Clone repository:
~~~bash
git clone https://github.com/romixlab/qmsgpack.git
~~~
Run cmake:
~~~bash
cd qmsgpack
mkdir build
cd build
cmake ..
~~~
Compile:
~~~bash
make
~~~
Run tests and install
~~~bash
make tests install
~~~
Sample usage
------------
Packing
~~~cpp
QVariantList list;
list << 1 << 2 << 3;
QByteArray array = MsgPack::pack(list);
~~~
Unpacking:
~~~cpp
QVariantList unpacked = MsgPack::unpack(array).toList();
~~~
By default these Qt types are supported: `Int, UInt, LongLong, ULongLong, Double, QByteArray, Bool, QString, QStringList, QVariantList, QVariantMap`.
Also you can provide packer and unpacker functions for any other type (even for user type defined via `Q_DECLARE_METATYPE`) or MsgPack type.
Qt types and User types
-----------------------
There is packers and unpackers for QColor, QTime, QDate, QDateTime, QPoint, QSize, QRect. Also you can create your own packer/unpacker methods for Qt or your own types. See [docs](http://msgpack.marsworks.ru/) for details.
Thread-safety
-------------
At this time it is not safe to call `MsgPack::registerPacker`, `MsgPack::registerUnpacker` and `MsgPack::setCompatibilityModeEnabled` from different threads.
pack and unpack methods do not use any global data, so should be safe to use from multiple threads.