Add helpers to copy a vector of things
We've got coppies of this code running around in a bunch of spots for no
good reason. Write it once in flatbuffer_merge.h
Change-Id: I7bfd90ef42487a4d3bce203a028fb769c7cfd231
diff --git a/aos/flatbuffer_merge.h b/aos/flatbuffer_merge.h
index ccbdd30..7844227 100644
--- a/aos/flatbuffer_merge.h
+++ b/aos/flatbuffer_merge.h
@@ -78,6 +78,35 @@
}
template <class T>
+inline flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<T>>>
+CopyVectorTable(const flatbuffers::Vector<flatbuffers::Offset<T>> *t1,
+ flatbuffers::FlatBufferBuilder *fbb) {
+ if (t1 == nullptr) {
+ return 0;
+ }
+ std::vector<flatbuffers::Offset<T>> v;
+ for (const T *t : *t1) {
+ v.emplace_back(CopyFlatBuffer(t, fbb));
+ }
+ return fbb->CreateVector(v);
+}
+
+inline flatbuffers::Offset<
+ flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>>
+CopyVectorSharedString(
+ const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *t1,
+ flatbuffers::FlatBufferBuilder *fbb) {
+ if (t1 == nullptr) {
+ return 0;
+ }
+ std::vector<flatbuffers::Offset<flatbuffers::String>> v;
+ for (const flatbuffers::String *t : *t1) {
+ v.emplace_back(fbb->CreateSharedString(t));
+ }
+ return fbb->CreateVector(v);
+}
+
+template <class T>
inline FlatbufferDetachedBuffer<T> CopyFlatBuffer(const T *t) {
flatbuffers::FlatBufferBuilder fbb;
fbb.ForceDefaults(true);