File indexing completed on 2024-05-12 05:25:57
0001 #pragma once 0002 0003 #include <flatbuffers/flatbuffers.h> 0004 #include <QByteArray> 0005 #include <QList> 0006 0007 namespace Sink { 0008 namespace BufferUtils { 0009 0010 //Does not copy the data 0011 template <typename T> 0012 static QByteArray extractBuffer(const T *data) 0013 { 0014 return QByteArray::fromRawData(reinterpret_cast<char const *>(data->Data()), data->size()); 0015 } 0016 0017 //Returns a deep copy of the data 0018 template <typename T> 0019 static QByteArray extractBufferCopy(const T *data) 0020 { 0021 return QByteArray(reinterpret_cast<char const *>(data->Data()), data->size()); 0022 } 0023 0024 //Does not copy the data 0025 static QByteArray extractBuffer(const flatbuffers::FlatBufferBuilder &fbb) 0026 { 0027 return QByteArray::fromRawData(reinterpret_cast<char const *>(fbb.GetBufferPointer()), fbb.GetSize()); 0028 } 0029 0030 //Returns a deep copy of the data 0031 static QList<QByteArray> fromVector(const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> &vector) 0032 { 0033 QList<QByteArray> list; 0034 for (const flatbuffers::String *data : vector) { 0035 Q_ASSERT(data); 0036 list << QByteArray::fromStdString(data->str()); 0037 } 0038 return list; 0039 } 0040 0041 template <typename T> 0042 static flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> toVector(flatbuffers::FlatBufferBuilder &fbb, const T &list) 0043 { 0044 std::vector<flatbuffers::Offset<flatbuffers::String>> modifiedPropertiesList; 0045 for (const auto &change : list) { 0046 auto s = fbb.CreateString(change.toStdString()); 0047 modifiedPropertiesList.push_back(s); 0048 } 0049 return fbb.CreateVector(modifiedPropertiesList); 0050 } 0051 0052 } 0053 }