From 07da3fc216c62b18eb13a8bcb9afa95d7c325418 Mon Sep 17 00:00:00 2001 From: Wouter van Oortmerssen Date: Mon, 30 Nov 2015 11:50:09 -0800 Subject: [PATCH] Allow vectors to be aligned beyond their natural type. Change-Id: I09ade6b688a6b97d65fd832558917225d86c9118 --- include/flatbuffers/flatbuffers.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/flatbuffers/flatbuffers.h b/include/flatbuffers/flatbuffers.h index a728a79cf..62c3d1f8f 100644 --- a/include/flatbuffers/flatbuffers.h +++ b/include/flatbuffers/flatbuffers.h @@ -799,6 +799,15 @@ class FlatBufferBuilder FLATBUFFERS_FINAL_CLASS { PreAlign(len * elemsize, elemsize); // Just in case elemsize > uoffset_t. } + // Call this right before StartVector/CreateVector if you want to force the + // alignment to be something different than what the element size would + // normally dictate. + // This is useful when storing a nested_flatbuffer in a vector of bytes, + // or when storing SIMD floats, etc. + void ForceVectorAlignment(size_t len, size_t elemsize, size_t alignment) { + PreAlign(len * elemsize, alignment); + } + uint8_t *ReserveElements(size_t len, size_t elemsize) { return buf_.make_space(len * elemsize); }