Allow vectors to be aligned beyond their natural type.
authorWouter van Oortmerssen <wvo@google.com>
Mon, 30 Nov 2015 19:50:09 +0000 (11:50 -0800)
committerWouter van Oortmerssen <wvo@google.com>
Wed, 2 Dec 2015 19:12:39 +0000 (11:12 -0800)
Change-Id: I09ade6b688a6b97d65fd832558917225d86c9118

include/flatbuffers/flatbuffers.h

index 2af4486..569c72b 100644 (file)
@@ -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);
   }