blob: 5439442c2ce732063198f033cef9f2a5fddb3b1a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#pragma once
#include <flatbuffers/flatbuffers.h>
#include <QByteArray>
#include <QList>
namespace Sink {
namespace BufferUtils {
//Does not copy the data
template <typename T>
static QByteArray extractBuffer(const T *data)
{
return QByteArray::fromRawData(reinterpret_cast<char const *>(data->Data()), data->size());
}
//Returns a deep copy of the data
template <typename T>
static QByteArray extractBufferCopy(const T *data)
{
return QByteArray(reinterpret_cast<char const *>(data->Data()), data->size());
}
//Does not copy the data
static QByteArray extractBuffer(const flatbuffers::FlatBufferBuilder &fbb)
{
return QByteArray::fromRawData(reinterpret_cast<char const *>(fbb.GetBufferPointer()), fbb.GetSize());
}
//Returns a deep copy of the data
static QList<QByteArray> fromVector(const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> &vector)
{
QList<QByteArray> list;
for (const flatbuffers::String *data : vector) {
Q_ASSERT(data);
list << QByteArray::fromStdString(data->str());
}
return list;
}
template <typename T>
static flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> toVector(flatbuffers::FlatBufferBuilder &fbb, const T &list)
{
std::vector<flatbuffers::Offset<flatbuffers::String>> modifiedPropertiesList;
for (const auto &change : list) {
auto s = fbb.CreateString(change.toStdString());
modifiedPropertiesList.push_back(s);
}
return fbb.CreateVector(modifiedPropertiesList);
}
}
}
|