From 29aaea2d80a9eb1715b6cddfac2d2aacf76358bd Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Thu, 11 Feb 2016 23:55:16 +0100 Subject: launchpad ~mzanetti/rockwork/trunk r87 --- rockworkd/libpebble/watchdatawriter.h | 69 +++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 rockworkd/libpebble/watchdatawriter.h (limited to 'rockworkd/libpebble/watchdatawriter.h') diff --git a/rockworkd/libpebble/watchdatawriter.h b/rockworkd/libpebble/watchdatawriter.h new file mode 100644 index 0000000..8e4adde --- /dev/null +++ b/rockworkd/libpebble/watchdatawriter.h @@ -0,0 +1,69 @@ +#ifndef WATCHDATAWRITER_H +#define WATCHDATAWRITER_H + +#include +#include +#include +#include +#include +#include + +class WatchDataWriter +{ +public: + WatchDataWriter(QByteArray *buf); + + template + void write(T v); + + template + void writeLE(T v); + + void writeBytes(int n, const QByteArray &b); + + void writeFixedString(int n, const QString &s); + + void writeCString(const QString &s); + + void writePascalString(const QString &s); + + void writeUuid(const QUuid &uuid); + + void writeDict(const QMap &d); + +private: + char *p(int n); + uchar *up(int n); + QByteArray *_buf; +}; + +inline WatchDataWriter::WatchDataWriter(QByteArray *buf) + : _buf(buf) +{ +} + +template +void WatchDataWriter::write(T v) +{ + qToBigEndian(v, up(sizeof(T))); +} + +template +void WatchDataWriter::writeLE(T v) +{ + qToLittleEndian(v, up(sizeof(T))); +} + +inline char * WatchDataWriter::p(int n) +{ + int size = _buf->size(); + _buf->resize(size + n); + return &_buf->data()[size]; +} + +inline uchar * WatchDataWriter::up(int n) +{ + return reinterpret_cast(p(n)); +} + +#endif -- cgit v1.2.3