From fc1cfd287a6c40137c3674ad44a9724006c7f20e 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 2af4486c7..569c72b31 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); }