diff --git a/_flat_buffer_builder_8java.html b/_flat_buffer_builder_8java.html
index 6c13376b24643be08eb3d1b76a9eb7ac24ea9ce7..9b55f793a4ba10556f358ddea2fcab415e96eae7 100644
--- a/_flat_buffer_builder_8java.html
+++ b/_flat_buffer_builder_8java.html
@@ -118,9 +118,18 @@ $(document).ready(function(){initNavTree('_flat_buffer_builder_8java.html','');}
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
 Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><b>com.google.flatbuffers.FlatBufferBuilder.ByteBufferBackedInputStream</b></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class that allows a user to create an InputStream from a ByteBuffer. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html">com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An interface that provides a user of the FlatBufferBuilder class the ability to specify the method in which the internal buffer gets allocated.  <a href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class that helps you build a FlatBuffer.  <a href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html">com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An implementation of the ByteBufferFactory interface that is used when one is not provided by the user.  <a href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 </div><!-- contents -->
 </div><!-- doc-content -->
diff --git a/annotated.html b/annotated.html
index 6b443be78618ba4d7adf8f31e414f494ffbf6781..3c9908ffdddbd54bf0b5f1df58ada3782804e7c8 100644
--- a/annotated.html
+++ b/annotated.html
@@ -128,11 +128,13 @@ $(document).ready(function(){initNavTree('annotated.html','');});
 </div><!--header-->
 <div class="contents">
 <div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
-<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span>]</div><table class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span><span onclick="javascript:toggleLevel(5);">5</span>]</div><table class="directory">
 <tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>com</b></td><td class="desc"></td></tr>
 <tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>google</b></td><td class="desc"></td></tr>
 <tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>flatbuffers</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_0_0_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html" target="_self">FlatBufferBuilder</a></td><td class="desc">Class that helps you build a FlatBuffer </td></tr>
+<tr id="row_0_0_0_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html" target="_self">FlatBufferBuilder</a></td><td class="desc">Class that helps you build a FlatBuffer </td></tr>
+<tr id="row_0_0_0_0_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html" target="_self">ByteBufferFactory</a></td><td class="desc">An interface that provides a user of the FlatBufferBuilder class the ability to specify the method in which the internal buffer gets allocated </td></tr>
+<tr id="row_0_0_0_0_1_"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html" target="_self">HeapByteBufferFactory</a></td><td class="desc">An implementation of the ByteBufferFactory interface that is used when one is not provided by the user </td></tr>
 <tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>flatbuffers</b></td><td class="desc"></td></tr>
 <tr id="row_1_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_allocator.html" target="_self">Allocator</a></td><td class="desc"></td></tr>
 <tr id="row_1_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_default_allocator.html" target="_self">DefaultAllocator</a></td><td class="desc"></td></tr>
diff --git a/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder-members.html b/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder-members.html
index d10f78eebdf0d6a1e0981e7c79b2f9a066ea94c4..b1f512fcebd1584eb285bec87908935ca16ccd1c 100644
--- a/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder-members.html
+++ b/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder-members.html
@@ -147,13 +147,26 @@ $(document).ready(function(){initNavTree('classcom_1_1google_1_1flatbuffers_1_1_
   <tr class="even"><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abf0fd34f0d93a9d89f595fddf752feb7">dataBuffer</a>()</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aee9ed3214a7b35075773c506e3d95a14">finish</a>(int root_table)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a189de474e0c39d663cc65fa21a63f071">finish</a>(int root_table, String file_identifier)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#af49427a6a8a6ec24f3c9cf812f30812d">FlatBufferBuilder</a>(int initial_size)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac8a8a558ce1d2531447a765636db2387">FlatBufferBuilder</a>()</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aed1e475e75409625c8df85dc3d396e4c">FlatBufferBuilder</a>(int initial_size, ByteBufferFactory bb_factory)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#af49427a6a8a6ec24f3c9cf812f30812d">FlatBufferBuilder</a>(int initial_size)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac8a8a558ce1d2531447a765636db2387">FlatBufferBuilder</a>()</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a3388cd4dc6e5233283fb4927b71a1c39">FlatBufferBuilder</a>(ByteBuffer existing_bb, ByteBufferFactory bb_factory)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a61ad1938219bcdbe99cc4b668f4c0f99">FlatBufferBuilder</a>(ByteBuffer existing_bb)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aaadff3772bfdff756b4f269afae5ac69">forceDefaults</a>(boolean forceDefaults)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0757a4347e9b932f9c0607f79531b023">init</a>(ByteBuffer existing_bb)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#adf671e70a4d30c85f37393c47a7a7dd1">init</a>(ByteBuffer existing_bb, ByteBufferFactory bb_factory)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae3a3fbf645e64ce784a524f935a6e6f2">offset</a>()</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a4a2e8c6430c6538509147225b8a4697e">pad</a>(int byte_size)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a2023123a33f19d670182d5f00ef9aa59">prep</a>(int size, int additional_bytes)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24114cfb1adb89f1e3d72736b06a8df0">putBoolean</a>(boolean x)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a86b42641d0c600afa11f8c8493f5e6a3">putByte</a>(byte x)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a36bc3231cc9f86e6fd2750dcec8b7336">putDouble</a>(double x)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e3fae083ea9c9bff3b80cde3f4581bb">putFloat</a>(float x)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a108d4c3d931b4f2a63a71aeefa562bba">putInt</a>(int x)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a083507c3c359c28bb008142e8ad41a7d">putLong</a>(long x)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a5a98de8b6e8fc5df984c435ba3181690">putShort</a>(short x)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a81a5c2d7ab36e913cc16d9499aabe078">sizedByteArray</a>(int start, int length)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aa636cf5190524c43212b6d96239d7672">sizedByteArray</a>()</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ab8fc86fe501b182b4a1a50fcdbcb3e6b">sizedInputStream</a>()</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- Google Analytics -->
diff --git a/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html b/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html
index d55bcc11741ab9cdbf1e2b7deff9c7ae80dad6c9..fece88aa6db5d1333e9c5555bc4249cbd188fbe5 100644
--- a/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html
+++ b/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html
@@ -124,6 +124,7 @@ $(document).ready(function(){initNavTree('classcom_1_1google_1_1flatbuffers_1_1_
 
 <div class="header">
   <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
 <a href="#pub-methods">Public Member Functions</a> &#124;
 <a href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder-members.html">List of all members</a>  </div>
   <div class="headertitle">
@@ -137,6 +138,18 @@ $(document).ready(function(){initNavTree('classcom_1_1google_1_1flatbuffers_1_1_
 <div class="textblock"><p>Class that helps you build a FlatBuffer. </p>
 <p>See the section "Use in Java/C#" in the main FlatBuffers documentation. </p>
 </div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><b>ByteBufferBackedInputStream</b></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class that allows a user to create an InputStream from a ByteBuffer. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html">ByteBufferFactory</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An interface that provides a user of the FlatBufferBuilder class the ability to specify the method in which the internal buffer gets allocated.  <a href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html">HeapByteBufferFactory</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An implementation of the ByteBufferFactory interface that is used when one is not provided by the user.  <a href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
 <tr class="memitem:a53e6356cfef3d6be298efb9a0d67be06"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a53e6356cfef3d6be298efb9a0d67be06">addBoolean</a> (boolean x)</td></tr>
@@ -191,6 +204,9 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
 <tr class="memitem:a189de474e0c39d663cc65fa21a63f071"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a189de474e0c39d663cc65fa21a63f071">finish</a> (int root_table, String file_identifier)</td></tr>
 <tr class="memdesc:a189de474e0c39d663cc65fa21a63f071"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finalize a buffer, pointing to the given <code>root_table</code>.  <a href="#a189de474e0c39d663cc65fa21a63f071">More...</a><br /></td></tr>
 <tr class="separator:a189de474e0c39d663cc65fa21a63f071"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aed1e475e75409625c8df85dc3d396e4c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aed1e475e75409625c8df85dc3d396e4c">FlatBufferBuilder</a> (int initial_size, <a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html">ByteBufferFactory</a> bb_factory)</td></tr>
+<tr class="memdesc:aed1e475e75409625c8df85dc3d396e4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start with a buffer of size <code>initial_size</code>, then grow as required.  <a href="#aed1e475e75409625c8df85dc3d396e4c">More...</a><br /></td></tr>
+<tr class="separator:aed1e475e75409625c8df85dc3d396e4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af49427a6a8a6ec24f3c9cf812f30812d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#af49427a6a8a6ec24f3c9cf812f30812d">FlatBufferBuilder</a> (int initial_size)</td></tr>
 <tr class="memdesc:af49427a6a8a6ec24f3c9cf812f30812d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start with a buffer of size <code>initial_size</code>, then grow as required.  <a href="#af49427a6a8a6ec24f3c9cf812f30812d">More...</a><br /></td></tr>
 <tr class="separator:af49427a6a8a6ec24f3c9cf812f30812d"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -198,23 +214,102 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac8a8a558ce1d2531447a765636db2387">FlatBufferBuilder</a> ()</td></tr>
 <tr class="memdesc:ac8a8a558ce1d2531447a765636db2387"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start with a buffer of 1KiB, then grow as required. <br /></td></tr>
 <tr class="separator:ac8a8a558ce1d2531447a765636db2387"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3388cd4dc6e5233283fb4927b71a1c39"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a3388cd4dc6e5233283fb4927b71a1c39">FlatBufferBuilder</a> (ByteBuffer existing_bb, <a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html">ByteBufferFactory</a> bb_factory)</td></tr>
+<tr class="memdesc:a3388cd4dc6e5233283fb4927b71a1c39"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alternative constructor allowing reuse of <a class="el" href="">ByteBuffer</a>s.  <a href="#a3388cd4dc6e5233283fb4927b71a1c39">More...</a><br /></td></tr>
+<tr class="separator:a3388cd4dc6e5233283fb4927b71a1c39"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a61ad1938219bcdbe99cc4b668f4c0f99"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a61ad1938219bcdbe99cc4b668f4c0f99">FlatBufferBuilder</a> (ByteBuffer existing_bb)</td></tr>
 <tr class="memdesc:a61ad1938219bcdbe99cc4b668f4c0f99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alternative constructor allowing reuse of <a class="el" href="">ByteBuffer</a>s.  <a href="#a61ad1938219bcdbe99cc4b668f4c0f99">More...</a><br /></td></tr>
 <tr class="separator:a61ad1938219bcdbe99cc4b668f4c0f99"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aaadff3772bfdff756b4f269afae5ac69"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aaadff3772bfdff756b4f269afae5ac69">forceDefaults</a> (boolean forceDefaults)</td></tr>
 <tr class="memdesc:aaadff3772bfdff756b4f269afae5ac69"><td class="mdescLeft">&#160;</td><td class="mdescRight">In order to save space, fields that are set to their default value don't get serialized into the buffer.  <a href="#aaadff3772bfdff756b4f269afae5ac69">More...</a><br /></td></tr>
 <tr class="separator:aaadff3772bfdff756b4f269afae5ac69"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0757a4347e9b932f9c0607f79531b023"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0757a4347e9b932f9c0607f79531b023">init</a> (ByteBuffer existing_bb)</td></tr>
-<tr class="memdesc:a0757a4347e9b932f9c0607f79531b023"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alternative initializer that allows reusing this object on an existing <code>ByteBuffer</code>.  <a href="#a0757a4347e9b932f9c0607f79531b023">More...</a><br /></td></tr>
-<tr class="separator:a0757a4347e9b932f9c0607f79531b023"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adf671e70a4d30c85f37393c47a7a7dd1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#adf671e70a4d30c85f37393c47a7a7dd1">init</a> (ByteBuffer existing_bb, <a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html">ByteBufferFactory</a> bb_factory)</td></tr>
+<tr class="memdesc:adf671e70a4d30c85f37393c47a7a7dd1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alternative initializer that allows reusing this object on an existing <code>ByteBuffer</code>.  <a href="#adf671e70a4d30c85f37393c47a7a7dd1">More...</a><br /></td></tr>
+<tr class="separator:adf671e70a4d30c85f37393c47a7a7dd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae3a3fbf645e64ce784a524f935a6e6f2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae3a3fbf645e64ce784a524f935a6e6f2">offset</a> ()</td></tr>
+<tr class="memdesc:ae3a3fbf645e64ce784a524f935a6e6f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Offset relative to the end of the buffer.  <a href="#ae3a3fbf645e64ce784a524f935a6e6f2">More...</a><br /></td></tr>
+<tr class="separator:ae3a3fbf645e64ce784a524f935a6e6f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4a2e8c6430c6538509147225b8a4697e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a4a2e8c6430c6538509147225b8a4697e">pad</a> (int byte_size)</td></tr>
+<tr class="memdesc:a4a2e8c6430c6538509147225b8a4697e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add zero valued bytes to prepare a new entry to be added.  <a href="#a4a2e8c6430c6538509147225b8a4697e">More...</a><br /></td></tr>
+<tr class="separator:a4a2e8c6430c6538509147225b8a4697e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2023123a33f19d670182d5f00ef9aa59"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a2023123a33f19d670182d5f00ef9aa59">prep</a> (int size, int additional_bytes)</td></tr>
+<tr class="memdesc:a2023123a33f19d670182d5f00ef9aa59"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepare to write an element of <code>size</code> after <code>additional_bytes</code> have been written, e.g.  <a href="#a2023123a33f19d670182d5f00ef9aa59">More...</a><br /></td></tr>
+<tr class="separator:a2023123a33f19d670182d5f00ef9aa59"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a24114cfb1adb89f1e3d72736b06a8df0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24114cfb1adb89f1e3d72736b06a8df0">putBoolean</a> (boolean x)</td></tr>
+<tr class="memdesc:a24114cfb1adb89f1e3d72736b06a8df0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a <code>boolean</code> to the buffer, backwards from the current location.  <a href="#a24114cfb1adb89f1e3d72736b06a8df0">More...</a><br /></td></tr>
+<tr class="separator:a24114cfb1adb89f1e3d72736b06a8df0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a86b42641d0c600afa11f8c8493f5e6a3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a86b42641d0c600afa11f8c8493f5e6a3">putByte</a> (byte x)</td></tr>
+<tr class="memdesc:a86b42641d0c600afa11f8c8493f5e6a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a <code>byte</code> to the buffer, backwards from the current location.  <a href="#a86b42641d0c600afa11f8c8493f5e6a3">More...</a><br /></td></tr>
+<tr class="separator:a86b42641d0c600afa11f8c8493f5e6a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a36bc3231cc9f86e6fd2750dcec8b7336"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a36bc3231cc9f86e6fd2750dcec8b7336">putDouble</a> (double x)</td></tr>
+<tr class="memdesc:a36bc3231cc9f86e6fd2750dcec8b7336"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a <code>double</code> to the buffer, backwards from the current location.  <a href="#a36bc3231cc9f86e6fd2750dcec8b7336">More...</a><br /></td></tr>
+<tr class="separator:a36bc3231cc9f86e6fd2750dcec8b7336"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0e3fae083ea9c9bff3b80cde3f4581bb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e3fae083ea9c9bff3b80cde3f4581bb">putFloat</a> (float x)</td></tr>
+<tr class="memdesc:a0e3fae083ea9c9bff3b80cde3f4581bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a <code>float</code> to the buffer, backwards from the current location.  <a href="#a0e3fae083ea9c9bff3b80cde3f4581bb">More...</a><br /></td></tr>
+<tr class="separator:a0e3fae083ea9c9bff3b80cde3f4581bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a108d4c3d931b4f2a63a71aeefa562bba"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a108d4c3d931b4f2a63a71aeefa562bba">putInt</a> (int x)</td></tr>
+<tr class="memdesc:a108d4c3d931b4f2a63a71aeefa562bba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an <code>int</code> to the buffer, backwards from the current location.  <a href="#a108d4c3d931b4f2a63a71aeefa562bba">More...</a><br /></td></tr>
+<tr class="separator:a108d4c3d931b4f2a63a71aeefa562bba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a083507c3c359c28bb008142e8ad41a7d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a083507c3c359c28bb008142e8ad41a7d">putLong</a> (long x)</td></tr>
+<tr class="memdesc:a083507c3c359c28bb008142e8ad41a7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a <code>long</code> to the buffer, backwards from the current location.  <a href="#a083507c3c359c28bb008142e8ad41a7d">More...</a><br /></td></tr>
+<tr class="separator:a083507c3c359c28bb008142e8ad41a7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5a98de8b6e8fc5df984c435ba3181690"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a5a98de8b6e8fc5df984c435ba3181690">putShort</a> (short x)</td></tr>
+<tr class="memdesc:a5a98de8b6e8fc5df984c435ba3181690"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a <code>short</code> to the buffer, backwards from the current location.  <a href="#a5a98de8b6e8fc5df984c435ba3181690">More...</a><br /></td></tr>
+<tr class="separator:a5a98de8b6e8fc5df984c435ba3181690"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a81a5c2d7ab36e913cc16d9499aabe078"><td class="memItemLeft" align="right" valign="top">byte[]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a81a5c2d7ab36e913cc16d9499aabe078">sizedByteArray</a> (int start, int length)</td></tr>
 <tr class="memdesc:a81a5c2d7ab36e913cc16d9499aabe078"><td class="mdescLeft">&#160;</td><td class="mdescRight">A utility function to copy and return the ByteBuffer data from <code>start</code> to <code>start</code> + <code>length</code> as a <code>byte[]</code>.  <a href="#a81a5c2d7ab36e913cc16d9499aabe078">More...</a><br /></td></tr>
 <tr class="separator:a81a5c2d7ab36e913cc16d9499aabe078"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aa636cf5190524c43212b6d96239d7672"><td class="memItemLeft" align="right" valign="top">byte[]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aa636cf5190524c43212b6d96239d7672">sizedByteArray</a> ()</td></tr>
 <tr class="memdesc:aa636cf5190524c43212b6d96239d7672"><td class="mdescLeft">&#160;</td><td class="mdescRight">A utility function to copy and return the ByteBuffer data as a <code>byte[]</code>.  <a href="#aa636cf5190524c43212b6d96239d7672">More...</a><br /></td></tr>
 <tr class="separator:aa636cf5190524c43212b6d96239d7672"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab8fc86fe501b182b4a1a50fcdbcb3e6b"><td class="memItemLeft" align="right" valign="top">InputStream&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ab8fc86fe501b182b4a1a50fcdbcb3e6b">sizedInputStream</a> ()</td></tr>
+<tr class="memdesc:ab8fc86fe501b182b4a1a50fcdbcb3e6b"><td class="mdescLeft">&#160;</td><td class="mdescRight">A utility function to return an InputStream to the ByteBuffer data.  <a href="#ab8fc86fe501b182b4a1a50fcdbcb3e6b">More...</a><br /></td></tr>
+<tr class="separator:ab8fc86fe501b182b4a1a50fcdbcb3e6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="aed1e475e75409625c8df85dc3d396e4c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>initial_size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html">ByteBufferFactory</a>&#160;</td>
+          <td class="paramname"><em>bb_factory</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Start with a buffer of size <code>initial_size</code>, then grow as required. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">initial_size</td><td>The initial size of the internal buffer to use. </td></tr>
+    <tr><td class="paramname">bb_factory</td><td>The factory to be used for allocating the internal buffer </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
 <a class="anchor" id="af49427a6a8a6ec24f3c9cf812f30812d"></a>
 <div class="memitem">
 <div class="memproto">
@@ -245,6 +340,50 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
   </dd>
 </dl>
 
+</div>
+</div>
+<a class="anchor" id="a3388cd4dc6e5233283fb4927b71a1c39"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder </td>
+          <td>(</td>
+          <td class="paramtype">ByteBuffer&#160;</td>
+          <td class="paramname"><em>existing_bb</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html">ByteBufferFactory</a>&#160;</td>
+          <td class="paramname"><em>bb_factory</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Alternative constructor allowing reuse of <a class="el" href="">ByteBuffer</a>s. </p>
+<p>The builder can still grow the buffer as necessary. User classes should make sure to call <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abf0fd34f0d93a9d89f595fddf752feb7">dataBuffer()</a> to obtain the resulting encoded message.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">existing_bb</td><td>The byte buffer to reuse. </td></tr>
+    <tr><td class="paramname">bb_factory</td><td>The factory to be used for allocating a new internal buffer if the existing buffer needs to grow </td></tr>
+  </table>
+  </dd>
+</dl>
+
 </div>
 </div>
 <a class="anchor" id="a61ad1938219bcdbe99cc4b668f4c0f99"></a>
@@ -859,7 +998,7 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
 
 </div>
 </div>
-<a class="anchor" id="a0757a4347e9b932f9c0607f79531b023"></a>
+<a class="anchor" id="adf671e70a4d30c85f37393c47a7a7dd1"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -870,8 +1009,18 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
           <td class="memname"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> com.google.flatbuffers.FlatBufferBuilder.init </td>
           <td>(</td>
           <td class="paramtype">ByteBuffer&#160;</td>
-          <td class="paramname"><em>existing_bb</em></td><td>)</td>
+          <td class="paramname"><em>existing_bb</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
           <td></td>
+          <td class="paramtype"><a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html">ByteBufferFactory</a>&#160;</td>
+          <td class="paramname"><em>bb_factory</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
   </td>
@@ -886,11 +1035,345 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
 <dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
     <tr><td class="paramname">existing_bb</td><td>The byte buffer to reuse. </td></tr>
+    <tr><td class="paramname">bb_factory</td><td>The factory to be used for allocating a new internal buffer if the existing buffer needs to grow </td></tr>
   </table>
   </dd>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>Returns <code>this</code>. </dd></dl>
 
+</div>
+</div>
+<a class="anchor" id="ae3a3fbf645e64ce784a524f935a6e6f2"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">int com.google.flatbuffers.FlatBufferBuilder.offset </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Offset relative to the end of the buffer. </p>
+<dl class="section return"><dt>Returns</dt><dd>Offset relative to the end of the buffer. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a4a2e8c6430c6538509147225b8a4697e"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void com.google.flatbuffers.FlatBufferBuilder.pad </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>byte_size</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Add zero valued bytes to prepare a new entry to be added. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">byte_size</td><td>Number of bytes to add. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a2023123a33f19d670182d5f00ef9aa59"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void com.google.flatbuffers.FlatBufferBuilder.prep </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>additional_bytes</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Prepare to write an element of <code>size</code> after <code>additional_bytes</code> have been written, e.g. </p>
+<p>if you write a string, you need to align such the int length field is aligned to <a class="el" href="">com.google.flatbuffers.Constants#SIZEOF_INT</a>, and the string data follows it directly. If all you need to do is alignment, <code>additional_bytes</code> will be 0.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">size</td><td>This is the of the new element to write. </td></tr>
+    <tr><td class="paramname">additional_bytes</td><td>The padding size. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a24114cfb1adb89f1e3d72736b06a8df0"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void com.google.flatbuffers.FlatBufferBuilder.putBoolean </td>
+          <td>(</td>
+          <td class="paramtype">boolean&#160;</td>
+          <td class="paramname"><em>x</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Add a <code>boolean</code> to the buffer, backwards from the current location. </p>
+<p>Doesn't align nor check for space.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td>A <code>boolean</code> to put into the buffer. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a86b42641d0c600afa11f8c8493f5e6a3"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void com.google.flatbuffers.FlatBufferBuilder.putByte </td>
+          <td>(</td>
+          <td class="paramtype">byte&#160;</td>
+          <td class="paramname"><em>x</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Add a <code>byte</code> to the buffer, backwards from the current location. </p>
+<p>Doesn't align nor check for space.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td>A <code>byte</code> to put into the buffer. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a36bc3231cc9f86e6fd2750dcec8b7336"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void com.google.flatbuffers.FlatBufferBuilder.putDouble </td>
+          <td>(</td>
+          <td class="paramtype">double&#160;</td>
+          <td class="paramname"><em>x</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Add a <code>double</code> to the buffer, backwards from the current location. </p>
+<p>Doesn't align nor check for space.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td>A <code>double</code> to put into the buffer. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0e3fae083ea9c9bff3b80cde3f4581bb"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void com.google.flatbuffers.FlatBufferBuilder.putFloat </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>x</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Add a <code>float</code> to the buffer, backwards from the current location. </p>
+<p>Doesn't align nor check for space.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td>A <code>float</code> to put into the buffer. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a108d4c3d931b4f2a63a71aeefa562bba"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void com.google.flatbuffers.FlatBufferBuilder.putInt </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>x</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Add an <code>int</code> to the buffer, backwards from the current location. </p>
+<p>Doesn't align nor check for space.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td>An <code>int</code> to put into the buffer. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a083507c3c359c28bb008142e8ad41a7d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void com.google.flatbuffers.FlatBufferBuilder.putLong </td>
+          <td>(</td>
+          <td class="paramtype">long&#160;</td>
+          <td class="paramname"><em>x</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Add a <code>long</code> to the buffer, backwards from the current location. </p>
+<p>Doesn't align nor check for space.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td>A <code>long</code> to put into the buffer. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a5a98de8b6e8fc5df984c435ba3181690"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void com.google.flatbuffers.FlatBufferBuilder.putShort </td>
+          <td>(</td>
+          <td class="paramtype">short&#160;</td>
+          <td class="paramname"><em>x</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Add a <code>short</code> to the buffer, backwards from the current location. </p>
+<p>Doesn't align nor check for space.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">x</td><td>A <code>short</code> to put into the buffer. </td></tr>
+  </table>
+  </dd>
+</dl>
+
 </div>
 </div>
 <a class="anchor" id="a81a5c2d7ab36e913cc16d9499aabe078"></a>
@@ -967,6 +1450,32 @@ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
 <p>A utility function to copy and return the ByteBuffer data as a <code>byte[]</code>. </p>
 <dl class="section return"><dt>Returns</dt><dd>A full copy of the <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abf0fd34f0d93a9d89f595fddf752feb7">data buffer</a>. </dd></dl>
 
+</div>
+</div>
+<a class="anchor" id="ab8fc86fe501b182b4a1a50fcdbcb3e6b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">InputStream com.google.flatbuffers.FlatBufferBuilder.sizedInputStream </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>A utility function to return an InputStream to the ByteBuffer data. </p>
+<dl class="section return"><dt>Returns</dt><dd>An InputStream that starts at the beginning of the ByteBuffer data and can read to the end of it. </dd></dl>
+
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
diff --git a/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.js b/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.js
index ed5713459e044950151afd551a4765e6f9859a39..33ff110da5c8e1ac45202bae40139f382a733318 100644
--- a/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.js
+++ b/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.js
@@ -1,7 +1,11 @@
 var classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder =
 [
+    [ "ByteBufferFactory", "interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html", "interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory" ],
+    [ "HeapByteBufferFactory", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory" ],
+    [ "FlatBufferBuilder", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aed1e475e75409625c8df85dc3d396e4c", null ],
     [ "FlatBufferBuilder", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#af49427a6a8a6ec24f3c9cf812f30812d", null ],
     [ "FlatBufferBuilder", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac8a8a558ce1d2531447a765636db2387", null ],
+    [ "FlatBufferBuilder", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a3388cd4dc6e5233283fb4927b71a1c39", null ],
     [ "FlatBufferBuilder", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a61ad1938219bcdbe99cc4b668f4c0f99", null ],
     [ "addBoolean", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a53e6356cfef3d6be298efb9a0d67be06", null ],
     [ "addByte", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae019d7ee089c95a37421365d5fb9533b", null ],
@@ -21,7 +25,18 @@ var classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder =
     [ "finish", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aee9ed3214a7b35075773c506e3d95a14", null ],
     [ "finish", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a189de474e0c39d663cc65fa21a63f071", null ],
     [ "forceDefaults", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aaadff3772bfdff756b4f269afae5ac69", null ],
-    [ "init", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0757a4347e9b932f9c0607f79531b023", null ],
+    [ "init", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#adf671e70a4d30c85f37393c47a7a7dd1", null ],
+    [ "offset", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae3a3fbf645e64ce784a524f935a6e6f2", null ],
+    [ "pad", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a4a2e8c6430c6538509147225b8a4697e", null ],
+    [ "prep", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a2023123a33f19d670182d5f00ef9aa59", null ],
+    [ "putBoolean", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24114cfb1adb89f1e3d72736b06a8df0", null ],
+    [ "putByte", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a86b42641d0c600afa11f8c8493f5e6a3", null ],
+    [ "putDouble", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a36bc3231cc9f86e6fd2750dcec8b7336", null ],
+    [ "putFloat", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e3fae083ea9c9bff3b80cde3f4581bb", null ],
+    [ "putInt", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a108d4c3d931b4f2a63a71aeefa562bba", null ],
+    [ "putLong", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a083507c3c359c28bb008142e8ad41a7d", null ],
+    [ "putShort", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a5a98de8b6e8fc5df984c435ba3181690", null ],
     [ "sizedByteArray", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a81a5c2d7ab36e913cc16d9499aabe078", null ],
-    [ "sizedByteArray", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aa636cf5190524c43212b6d96239d7672", null ]
+    [ "sizedByteArray", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aa636cf5190524c43212b6d96239d7672", null ],
+    [ "sizedInputStream", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ab8fc86fe501b182b4a1a50fcdbcb3e6b", null ]
 ];
\ No newline at end of file
diff --git a/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory-members.html b/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..476e956d8ff34ba6667f344d22f9063e933709cb
--- /dev/null
+++ b/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory-members.html
@@ -0,0 +1,146 @@
+<!-- HTML header for doxygen 1.8.6-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>FlatBuffers: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,700" rel="stylesheet">
+<link href="style.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="height: 110px;">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="commonprojectlogo">
+    <img alt="Logo" src="fpl_logo_small.png"/>
+  </td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">FlatBuffers
+   </div>
+   <div style="font-size:12px;">
+    An open source project by <a href="https://developers.google.com/games/#Tools">FPL</a>.
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="usergroup0.html"><span>Programmer's&#160;Guide</span></a></li>
+      <li><a href="flatbuffers_support.html"><span>Platform&#160;/&#160;Language&#160;/&#160;Feature&#160;support</span></a></li>
+      <li><a href="flatbuffers_benchmarks.html"><span>Benchmarks</span></a></li>
+      <li><a href="flatbuffers_white_paper.html"><span>FlatBuffers&#160;white&#160;paper</span></a></li>
+      <li><a href="flatbuffers_internals.html"><span>FlatBuffers&#160;internals</span></a></li>
+      <li><a href="flatbuffers_grammar.html"><span>Grammar&#160;of&#160;the&#160;schema&#160;language</span></a></li>
+      <li class="current"><a href="usergroup2.html"><span>API&#160;Reference</span></a></li>
+      <li><a href="contributing.html"><span>Contributing</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="modules.html"><span>APIs</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Class&#160;List</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Properties</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html">com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html#aac26ff51a8162b37a072792ec9068644">newByteBuffer</a>(int capacity)</td><td class="entry"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html">com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- Google Analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+  ga('create', 'UA-49880327-7', 'auto');
+  ga('send', 'pageview');
+</script>
+</body>
+</html>
diff --git a/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html b/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html
new file mode 100644
index 0000000000000000000000000000000000000000..f34b9305769278c96827745c4abb05edd90febce
--- /dev/null
+++ b/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html
@@ -0,0 +1,206 @@
+<!-- HTML header for doxygen 1.8.6-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>FlatBuffers: com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,700" rel="stylesheet">
+<link href="style.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="height: 110px;">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="commonprojectlogo">
+    <img alt="Logo" src="fpl_logo_small.png"/>
+  </td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">FlatBuffers
+   </div>
+   <div style="font-size:12px;">
+    An open source project by <a href="https://developers.google.com/games/#Tools">FPL</a>.
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="usergroup0.html"><span>Programmer's&#160;Guide</span></a></li>
+      <li><a href="flatbuffers_support.html"><span>Platform&#160;/&#160;Language&#160;/&#160;Feature&#160;support</span></a></li>
+      <li><a href="flatbuffers_benchmarks.html"><span>Benchmarks</span></a></li>
+      <li><a href="flatbuffers_white_paper.html"><span>FlatBuffers&#160;white&#160;paper</span></a></li>
+      <li><a href="flatbuffers_internals.html"><span>FlatBuffers&#160;internals</span></a></li>
+      <li><a href="flatbuffers_grammar.html"><span>Grammar&#160;of&#160;the&#160;schema&#160;language</span></a></li>
+      <li class="current"><a href="usergroup2.html"><span>API&#160;Reference</span></a></li>
+      <li><a href="contributing.html"><span>Contributing</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="modules.html"><span>APIs</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Class&#160;List</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Properties</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>An implementation of the ByteBufferFactory interface that is used when one is not provided by the user.  
+ <a href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html#details">More...</a></p>
+<div class="dynheader">
+Inheritance diagram for com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.png" usemap="#com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory_map" alt=""/>
+  <map id="com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory_map" name="com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory_map">
+<area href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html" title="An interface that provides a user of the FlatBufferBuilder class the ability to specify the method in..." alt="com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory" shape="rect" coords="0,0,376,24"/>
+</map>
+ </div></div>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>An implementation of the ByteBufferFactory interface that is used when one is not provided by the user. </p>
+<p>Allocate memory for a new byte-array backed <code>ByteBuffer</code> array inside the JVM. </p>
+</div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:aac26ff51a8162b37a072792ec9068644"><td class="memItemLeft" align="right" valign="top">ByteBuffer&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html#aac26ff51a8162b37a072792ec9068644">newByteBuffer</a> (int capacity)</td></tr>
+<tr class="memdesc:aac26ff51a8162b37a072792ec9068644"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <code>ByteBuffer</code> with a given capacity.  <a href="#aac26ff51a8162b37a072792ec9068644">More...</a><br /></td></tr>
+<tr class="separator:aac26ff51a8162b37a072792ec9068644"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="aac26ff51a8162b37a072792ec9068644"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">ByteBuffer com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory.newByteBuffer </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>capacity</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Create a <code>ByteBuffer</code> with a given capacity. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">capacity</td><td>The size of the <code>ByteBuffer</code> to allocate. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Returns the new <code>ByteBuffer</code> that was allocated. </dd></dl>
+
+<p>Implements <a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html#a0db9a9033d232d584443a433d7576f4a">com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="_flat_buffer_builder_8java.html">FlatBufferBuilder.java</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- Google Analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+  ga('create', 'UA-49880327-7', 'auto');
+  ga('send', 'pageview');
+</script>
+</body>
+</html>
diff --git a/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.js b/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.js
new file mode 100644
index 0000000000000000000000000000000000000000..c5284df93174b895f0584dff0ecc09c7ed87438b
--- /dev/null
+++ b/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.js
@@ -0,0 +1,4 @@
+var classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory =
+[
+    [ "newByteBuffer", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html#aac26ff51a8162b37a072792ec9068644", null ]
+];
\ No newline at end of file
diff --git a/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.png b/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc9bbcb7d5631bfa69083e01747dc572286c518c
Binary files /dev/null and b/classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.png differ
diff --git a/classes.html b/classes.html
index ef4c03a5cdf153c53de381aacc0e3001b3da7f41..c6efd40e253afd50a9f80d80bda7087aef36850b 100644
--- a/classes.html
+++ b/classes.html
@@ -127,27 +127,31 @@ $(document).ready(function(){initNavTree('classes.html','');});
 <div class="title">Class Index</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_O">O</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_V">V</a></div>
+<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_H">H</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_O">O</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_V">V</a></div>
 <table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
 <tr><td rowspan="2" valign="bottom"><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;A&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;F&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;I&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;S&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> (flatbuffers)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;H&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;O&#160;&#160;</div></td></tr></table>
 </td><td valign="top"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> (flatbuffers)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classflatbuffers_1_1_vector_of_any.html">VectorOfAny</a> (flatbuffers)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classflatbuffers_1_1_allocator.html">Allocator</a> (flatbuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html">FlatBufferBuilder::FieldLoc</a> (flatbuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a> (flatbuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structflatbuffers_1_1_string.html">String</a> (flatbuffers)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_v"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;v&#160;&#160;</div></td></tr></table>
+<tr><td rowspan="2" valign="bottom"><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;F&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classflatbuffers_1_1_vector_of_any.html">VectorOfAny</a> (flatbuffers)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classflatbuffers_1_1_allocator.html">Allocator</a> (flatbuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html">FlatBufferBuilder.HeapByteBufferFactory</a> (com.google.flatbuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a> (flatbuffers)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_v"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;v&#160;&#160;</div></td></tr></table>
+</td></tr>
+<tr><td rowspan="2" valign="bottom"><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;B&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html">FlatBufferBuilder::FieldLoc</a> (flatbuffers)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;I&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;S&#160;&#160;</div></td></tr></table>
 </td></tr>
+<tr><td valign="top"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> (com.google.flatbuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> (flatbuffers)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html">FlatBufferBuilder.ByteBufferFactory</a> (com.google.flatbuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> (flatbuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a> (flatbuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structflatbuffers_1_1_string.html">String</a> (flatbuffers)&#160;&#160;&#160;</td><td></td></tr>
 <tr><td rowspan="2" valign="bottom"><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;D&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> (flatbuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html">IndirectHelper&lt; const T * &gt;</a> (flatbuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">FlatBufferBuilder::StringOffsetCompare</a> (flatbuffers)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html">FlatbufferBuilder</a> (Google\FlatBuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html">IndirectHelper&lt; Offset&lt; T &gt; &gt;</a> (flatbuffers)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;V&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> (flatbuffers)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classflatbuffers_1_1_default_allocator.html">DefaultAllocator</a> (flatbuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> (com.google.flatbuffers)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;O&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html">FlatbufferBuilder</a> (Google\FlatBuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html">IndirectHelper&lt; const T * &gt;</a> (flatbuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">FlatBufferBuilder::StringOffsetCompare</a> (flatbuffers)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="class_flat_buffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> (<a class="el" href="namespace_flat_buffers.html">FlatBuffers</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html">IndirectHelper&lt; Offset&lt; T &gt; &gt;</a> (flatbuffers)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;V&#160;&#160;</div></td></tr></table>
 </td><td></td></tr>
-<tr><td valign="top"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> (flatbuffers)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="class_flat_buffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> (<a class="el" href="namespace_flat_buffers.html">FlatBuffers</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classflatbuffers_1_1_vector.html">Vector</a> (flatbuffers)&#160;&#160;&#160;</td><td></td></tr>
-<tr><td></td><td></td><td valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a> (flatbuffers)&#160;&#160;&#160;</td><td></td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classflatbuffers_1_1_default_allocator.html">DefaultAllocator</a> (flatbuffers)&#160;&#160;&#160;</td><td></td><td></td><td></td></tr>
+<tr><td></td><td></td><td></td><td valign="top"><a class="el" href="classflatbuffers_1_1_vector.html">Vector</a> (flatbuffers)&#160;&#160;&#160;</td><td></td></tr>
 <tr><td></td><td></td><td></td><td></td><td></td></tr>
 </table>
-<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_O">O</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_V">V</a></div>
+<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_H">H</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_O">O</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_V">V</a></div>
 </div><!-- contents -->
 </div><!-- doc-content -->
 <!-- Google Analytics -->
diff --git a/classflatbuffers_1_1_detached_buffer-members.html b/classflatbuffers_1_1_detached_buffer-members.html
index a0112a1706b46c7d8a5f0471b3932f27e5a82421..4e88037c3fe38c8667be631af394ae6cf66ebc5b 100644
--- a/classflatbuffers_1_1_detached_buffer-members.html
+++ b/classflatbuffers_1_1_detached_buffer-members.html
@@ -134,15 +134,17 @@ $(document).ready(function(){initNavTree('classflatbuffers_1_1_detached_buffer.h
   <tr bgcolor="#f0f0f0"><td class="entry"><b>cur_</b> (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"></td></tr>
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>data</b>() const  (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>data</b>() (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DetachedBuffer</b>() (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>DetachedBuffer</b>(Allocator *allocator, bool own_allocator, uint8_t *buf, size_t reserved, uint8_t *cur, size_t sz) (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DetachedBuffer</b>(DetachedBuffer &amp;&amp;other) (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FLATBUFFERS_DELETE_FUNC</b>(DetachedBuffer(const DetachedBuffer &amp;other)) FLATBUFFERS_DELETE_FUNC(DetachedBuffer &amp;operator (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetRoot</b>() const  (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>GetRoot</b>() (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(DetachedBuffer &amp;&amp;other) (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>own_allocator_</b> (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reserved_</b> (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>destroy</b>() (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>DetachedBuffer</b>() (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DetachedBuffer</b>(Allocator *allocator, bool own_allocator, uint8_t *buf, size_t reserved, uint8_t *cur, size_t sz) (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>DetachedBuffer</b>(DetachedBuffer &amp;&amp;other) (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FLATBUFFERS_DELETE_FUNC</b>(DetachedBuffer(const DetachedBuffer &amp;other)) FLATBUFFERS_DELETE_FUNC(DetachedBuffer &amp;operator (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>GetRoot</b>() const  (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetRoot</b>() (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(DetachedBuffer &amp;&amp;other) (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>own_allocator_</b> (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reserved_</b> (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset</b>() (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>size</b>() const  (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size_</b> (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>Verify</b>() const  (defined in <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/classflatbuffers_1_1_detached_buffer.html b/classflatbuffers_1_1_detached_buffer.html
index f19dc3985233bf7466dfa8a510503472e6e73cac..e55c9367781f39fe2414d3edbc4a5b324f9bbb33 100644
--- a/classflatbuffers_1_1_detached_buffer.html
+++ b/classflatbuffers_1_1_detached_buffer.html
@@ -140,6 +140,9 @@ const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>data</b> (
 <tr class="memitem:adad27e36c1df5169d35fde21c6fa6745"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adad27e36c1df5169d35fde21c6fa6745"></a>
 uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>data</b> ()</td></tr>
 <tr class="separator:adad27e36c1df5169d35fde21c6fa6745"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3a4bb3269ce95d77a8765f43fefe44ab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3a4bb3269ce95d77a8765f43fefe44ab"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>destroy</b> ()</td></tr>
+<tr class="separator:a3a4bb3269ce95d77a8765f43fefe44ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:abae2caaa17d721325235755e6a4feea0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abae2caaa17d721325235755e6a4feea0"></a>
 &#160;</td><td class="memItemRight" valign="bottom"><b>DetachedBuffer</b> (<a class="el" href="classflatbuffers_1_1_allocator.html">Allocator</a> *allocator, bool own_allocator, uint8_t *buf, size_t reserved, uint8_t *cur, size_t sz)</td></tr>
 <tr class="separator:abae2caaa17d721325235755e6a4feea0"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -160,6 +163,9 @@ template&lt;class T &gt; </td></tr>
 <tr class="memitem:a0a33d382b1306177f5b0e5bc8ad4d3fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a33d382b1306177f5b0e5bc8ad4d3fd"></a>
 <a class="el" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;&amp;other)</td></tr>
 <tr class="separator:a0a33d382b1306177f5b0e5bc8ad4d3fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fadd8be4586d8a6a0df5e26e90f3f79"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1fadd8be4586d8a6a0df5e26e90f3f79"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
+<tr class="separator:a1fadd8be4586d8a6a0df5e26e90f3f79"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac4c234e815adc9d30f97281546162f5c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4c234e815adc9d30f97281546162f5c"></a>
 size_t&#160;</td><td class="memItemRight" valign="bottom"><b>size</b> () const </td></tr>
 <tr class="separator:ac4c234e815adc9d30f97281546162f5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/classflatbuffers_1_1_detached_buffer.js b/classflatbuffers_1_1_detached_buffer.js
index 9e7adcd690e8b969a0bd8dfa90073757351d8a1b..5898926d982aac04bc3659de9809cfc07529c685 100644
--- a/classflatbuffers_1_1_detached_buffer.js
+++ b/classflatbuffers_1_1_detached_buffer.js
@@ -6,10 +6,12 @@ var classflatbuffers_1_1_detached_buffer =
     [ "~DetachedBuffer", "classflatbuffers_1_1_detached_buffer.html#a9979d17b00f354dce4c7d9a6dca43d4d", null ],
     [ "data", "classflatbuffers_1_1_detached_buffer.html#aa4805376aebda238661d5ac1107bac9a", null ],
     [ "data", "classflatbuffers_1_1_detached_buffer.html#adad27e36c1df5169d35fde21c6fa6745", null ],
+    [ "destroy", "classflatbuffers_1_1_detached_buffer.html#a3a4bb3269ce95d77a8765f43fefe44ab", null ],
     [ "FLATBUFFERS_DELETE_FUNC", "classflatbuffers_1_1_detached_buffer.html#aef5440a10f42f2c067f2857dc74fc15b", null ],
     [ "GetRoot", "classflatbuffers_1_1_detached_buffer.html#aaede53d7b7efc586eaeca5688619acf1", null ],
     [ "GetRoot", "classflatbuffers_1_1_detached_buffer.html#a030d603f1f72c17b515a1e8621a5482c", null ],
     [ "operator=", "classflatbuffers_1_1_detached_buffer.html#a0a33d382b1306177f5b0e5bc8ad4d3fd", null ],
+    [ "reset", "classflatbuffers_1_1_detached_buffer.html#a1fadd8be4586d8a6a0df5e26e90f3f79", null ],
     [ "size", "classflatbuffers_1_1_detached_buffer.html#ac4c234e815adc9d30f97281546162f5c", null ],
     [ "Verify", "classflatbuffers_1_1_detached_buffer.html#a9056cfb89cf255efda378a5155c26c2b", null ],
     [ "buf_", "classflatbuffers_1_1_detached_buffer.html#a7e6327751066fe086a18b881ec3a07ce", null ],
diff --git a/classflatbuffers_1_1_flat_buffer_builder-members.html b/classflatbuffers_1_1_flat_buffer_builder-members.html
index e48c724dbb8751f972754c8f86a26b9b9cfc5efc..beb34a3ecd0d6721b4f3189c7405207012c4a34a 100644
--- a/classflatbuffers_1_1_flat_buffer_builder-members.html
+++ b/classflatbuffers_1_1_flat_buffer_builder-members.html
@@ -149,17 +149,19 @@ $(document).ready(function(){initNavTree('classflatbuffers_1_1_flat_buffer_build
   <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207">CreateVector</a>(const std::vector&lt; T &gt; &amp;v)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>CreateVector</b>(const std::vector&lt; bool &gt; &amp;v) (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b">CreateVector</a>(size_t vector_size, const std::function&lt; T(size_t i)&gt; &amp;f)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53">CreateVectorOfNativeStructs</a>(const S *v, size_t len)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95">CreateVectorOfNativeStructs</a>(const std::vector&lt; S &gt; &amp;v)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54">CreateVectorOfSortedNativeStructs</a>(std::vector&lt; S &gt; *v)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf">CreateVectorOfSortedNativeStructs</a>(S *v, size_t len)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15">CreateVectorOfSortedStructs</a>(std::vector&lt; T &gt; *v)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf">CreateVectorOfSortedStructs</a>(T *v, size_t len)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6">CreateVectorOfSortedTables</a>(Offset&lt; T &gt; *v, size_t len)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135">CreateVectorOfSortedTables</a>(std::vector&lt; Offset&lt; T &gt;&gt; *v)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6">CreateVectorOfStrings</a>(const std::vector&lt; std::string &gt; &amp;v)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7">CreateVectorOfStructs</a>(const T *v, size_t len)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72">CreateVectorOfStructs</a>(size_t vector_size, const std::function&lt; void(size_t i, T *)&gt; &amp;filler)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a53504fc2cab681a7980b03260f8b2f7a">CreateVector</a>(size_t vector_size, F f, S *state)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53">CreateVectorOfNativeStructs</a>(const S *v, size_t len)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95">CreateVectorOfNativeStructs</a>(const std::vector&lt; S &gt; &amp;v)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54">CreateVectorOfSortedNativeStructs</a>(std::vector&lt; S &gt; *v)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf">CreateVectorOfSortedNativeStructs</a>(S *v, size_t len)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15">CreateVectorOfSortedStructs</a>(std::vector&lt; T &gt; *v)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf">CreateVectorOfSortedStructs</a>(T *v, size_t len)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6">CreateVectorOfSortedTables</a>(Offset&lt; T &gt; *v, size_t len)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135">CreateVectorOfSortedTables</a>(std::vector&lt; Offset&lt; T &gt;&gt; *v)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6">CreateVectorOfStrings</a>(const std::vector&lt; std::string &gt; &amp;v)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7">CreateVectorOfStructs</a>(const T *v, size_t len)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72">CreateVectorOfStructs</a>(size_t vector_size, const std::function&lt; void(size_t i, T *)&gt; &amp;filler)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a9cc09fa59ff9732e972877cfe911c8a5">CreateVectorOfStructs</a>(size_t vector_size, F f, S *state)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1">CreateVectorOfStructs</a>(const std::vector&lt; T &gt; &amp;v)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>dedup_vtables_</b> (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961">DedupVtables</a>(bool dedup)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
@@ -176,17 +178,18 @@ $(document).ready(function(){initNavTree('classflatbuffers_1_1_flat_buffer_build
   <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a3f4252e9bc005ba6c700469544fdccc9">GetCurrentBufferPointer</a>() const </td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>() const </td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">kFileIdentifierLength</a></td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>minalign_</b> (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>nested</b> (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>offsetbuf_</b> (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const FlatBufferBuilder &amp;) (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45">Release</a>()</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8">ReleaseBufferPointer</a>()</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Reset</b>() (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>string_pool</b> (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>StringOffsetMap</b> typedef (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>vtables_</b> (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~FlatBufferBuilder</b>() (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>max_voffset_</b> (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>minalign_</b> (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>nested</b> (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>offsetbuf_</b> (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(const FlatBufferBuilder &amp;) (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45">Release</a>()</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8">ReleaseBufferPointer</a>()</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>Reset</b>() (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>string_pool</b> (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>StringOffsetMap</b> typedef (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>vtables_</b> (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~FlatBufferBuilder</b>() (defined in <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- Google Analytics -->
diff --git a/classflatbuffers_1_1_flat_buffer_builder.html b/classflatbuffers_1_1_flat_buffer_builder.html
index 6574d21824eaea9b9c5fe5cdc14672b998f60b41..580a9f3f8b424383ca010296d3289c909163c0c0 100644
--- a/classflatbuffers_1_1_flat_buffer_builder.html
+++ b/classflatbuffers_1_1_flat_buffer_builder.html
@@ -215,6 +215,10 @@ template&lt;typename T &gt; </td></tr>
 <tr class="memitem:a1080c9e370e2d9d9d872dadd1131436b"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="classflatbuffers_1_1_vector.html">Vector</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b">CreateVector</a> (size_t vector_size, const std::function&lt; T(size_t i)&gt; &amp;f)</td></tr>
 <tr class="memdesc:a1080c9e370e2d9d9d872dadd1131436b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize values returned by a function into a FlatBuffer <code>vector</code>.  <a href="#a1080c9e370e2d9d9d872dadd1131436b">More...</a><br /></td></tr>
 <tr class="separator:a1080c9e370e2d9d9d872dadd1131436b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a53504fc2cab681a7980b03260f8b2f7a"><td class="memTemplParams" colspan="2">template&lt;typename T , typename F , typename S &gt; </td></tr>
+<tr class="memitem:a53504fc2cab681a7980b03260f8b2f7a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="classflatbuffers_1_1_vector.html">Vector</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a53504fc2cab681a7980b03260f8b2f7a">CreateVector</a> (size_t vector_size, F f, S *state)</td></tr>
+<tr class="memdesc:a53504fc2cab681a7980b03260f8b2f7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize values returned by a function into a FlatBuffer <code>vector</code>.  <a href="#a53504fc2cab681a7980b03260f8b2f7a">More...</a><br /></td></tr>
+<tr class="separator:a53504fc2cab681a7980b03260f8b2f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3d57074082aaab8cdeb8474ff9df0b53"><td class="memTemplParams" colspan="2">template&lt;typename T , typename S &gt; </td></tr>
 <tr class="memitem:a3d57074082aaab8cdeb8474ff9df0b53"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="classflatbuffers_1_1_vector.html">Vector</a>&lt; const T * &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53">CreateVectorOfNativeStructs</a> (const S *v, size_t len)</td></tr>
 <tr class="memdesc:a3d57074082aaab8cdeb8474ff9df0b53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize an array of native structs into a FlatBuffer <code>vector</code>.  <a href="#a3d57074082aaab8cdeb8474ff9df0b53">More...</a><br /></td></tr>
@@ -258,6 +262,10 @@ template&lt;typename T &gt; </td></tr>
 <tr class="memitem:a6e90ada59d9553636f72ce8e4a892f72"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="classflatbuffers_1_1_vector.html">Vector</a>&lt; const T * &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72">CreateVectorOfStructs</a> (size_t vector_size, const std::function&lt; void(size_t i, T *)&gt; &amp;filler)</td></tr>
 <tr class="memdesc:a6e90ada59d9553636f72ce8e4a892f72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize an array of structs into a FlatBuffer <code>vector</code>.  <a href="#a6e90ada59d9553636f72ce8e4a892f72">More...</a><br /></td></tr>
 <tr class="separator:a6e90ada59d9553636f72ce8e4a892f72"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9cc09fa59ff9732e972877cfe911c8a5"><td class="memTemplParams" colspan="2">template&lt;typename T , typename F , typename S &gt; </td></tr>
+<tr class="memitem:a9cc09fa59ff9732e972877cfe911c8a5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="classflatbuffers_1_1_vector.html">Vector</a>&lt; const T * &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a9cc09fa59ff9732e972877cfe911c8a5">CreateVectorOfStructs</a> (size_t vector_size, F f, S *state)</td></tr>
+<tr class="memdesc:a9cc09fa59ff9732e972877cfe911c8a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize an array of structs into a FlatBuffer <code>vector</code>.  <a href="#a9cc09fa59ff9732e972877cfe911c8a5">More...</a><br /></td></tr>
+<tr class="separator:a9cc09fa59ff9732e972877cfe911c8a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a8704709a2e25ad04679212ee4126b1a1"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 <tr class="memitem:a8704709a2e25ad04679212ee4126b1a1"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="classflatbuffers_1_1_vector.html">Vector</a>&lt; const T * &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1">CreateVectorOfStructs</a> (const std::vector&lt; T &gt; &amp;v)</td></tr>
 <tr class="memdesc:a8704709a2e25ad04679212ee4126b1a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize a <code>std::vector</code> of structs into a FlatBuffer <code>vector</code>.  <a href="#a8704709a2e25ad04679212ee4126b1a1">More...</a><br /></td></tr>
@@ -342,6 +350,9 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>finished</b></td></tr
 <tr class="memitem:a89c2d7c686a2df8014cb453ec70fdccd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89c2d7c686a2df8014cb453ec70fdccd"></a>
 bool&#160;</td><td class="memItemRight" valign="bottom"><b>force_defaults_</b></td></tr>
 <tr class="separator:a89c2d7c686a2df8014cb453ec70fdccd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5e604e3caf95fd0f0e74545af5a8420a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e604e3caf95fd0f0e74545af5a8420a"></a>
+voffset_t&#160;</td><td class="memItemRight" valign="bottom"><b>max_voffset_</b></td></tr>
+<tr class="separator:a5e604e3caf95fd0f0e74545af5a8420a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ab9942e76ff29eefc702b006b19ce02ba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab9942e76ff29eefc702b006b19ce02ba"></a>
 size_t&#160;</td><td class="memItemRight" valign="bottom"><b>minalign_</b></td></tr>
 <tr class="separator:ab9942e76ff29eefc702b006b19ce02ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -999,6 +1010,64 @@ template&lt;typename T &gt; </div>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>Returns a typed <code>Offset</code> into the serialized data indicating where the vector is stored. </dd></dl>
 
+</div>
+</div>
+<a class="anchor" id="a53504fc2cab681a7980b03260f8b2f7a"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T , typename F , typename S &gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;<a class="el" href="classflatbuffers_1_1_vector.html">Vector</a>&lt;T&gt; &gt; flatbuffers::FlatBufferBuilder::CreateVector </td>
+          <td>(</td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>vector_size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">F&#160;</td>
+          <td class="paramname"><em>f</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">S *&#160;</td>
+          <td class="paramname"><em>state</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Serialize values returned by a function into a FlatBuffer <code>vector</code>. </p>
+<p>This is a convenience function that takes care of iteration for you. </p><dl class="tparams"><dt>Template Parameters</dt><dd>
+  <table class="tparams">
+    <tr><td class="paramname">T</td><td>The data type of the <code>std::vector</code> elements. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">f</td><td>A function that takes the current iteration 0..vector_size-1, and the state parameter returning any type that you can construct a FlatBuffers vector out of. </td></tr>
+    <tr><td class="paramname">state</td><td>State passed to f. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Returns a typed <code>Offset</code> into the serialized data indicating where the vector is stored. </dd></dl>
+
 </div>
 </div>
 <a class="anchor" id="a3d57074082aaab8cdeb8474ff9df0b53"></a>
@@ -1511,6 +1580,64 @@ template&lt;typename T &gt; </div>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>Returns a typed <code>Offset</code> into the serialized data indicating where the vector is stored. This is mostly useful when flatbuffers are generated with mutation accessors. </dd></dl>
 
+</div>
+</div>
+<a class="anchor" id="a9cc09fa59ff9732e972877cfe911c8a5"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T , typename F , typename S &gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;<a class="el" href="classflatbuffers_1_1_vector.html">Vector</a>&lt;const T *&gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfStructs </td>
+          <td>(</td>
+          <td class="paramtype">size_t&#160;</td>
+          <td class="paramname"><em>vector_size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">F&#160;</td>
+          <td class="paramname"><em>f</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">S *&#160;</td>
+          <td class="paramname"><em>state</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Serialize an array of structs into a FlatBuffer <code>vector</code>. </p>
+<dl class="tparams"><dt>Template Parameters</dt><dd>
+  <table class="tparams">
+    <tr><td class="paramname">T</td><td>The data type of the struct array elements. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">f</td><td>A function that takes the current iteration 0..vector_size-1, a pointer to the struct that must be filled and the state argument. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">state</td><td>Arbitrary state to pass to f. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Returns a typed <code>Offset</code> into the serialized data indicating where the vector is stored. This is mostly useful when flatbuffers are generated with mutation accessors. </dd></dl>
+
 </div>
 </div>
 <a class="anchor" id="a8704709a2e25ad04679212ee4126b1a1"></a>
diff --git a/classflatbuffers_1_1_flat_buffer_builder.js b/classflatbuffers_1_1_flat_buffer_builder.js
index 1637a32188ab37dee9b6b7c4e6d018eaadff93c9..901ef27326a71f40a44ae3257cb58b7042932ddf 100644
--- a/classflatbuffers_1_1_flat_buffer_builder.js
+++ b/classflatbuffers_1_1_flat_buffer_builder.js
@@ -24,6 +24,7 @@ var classflatbuffers_1_1_flat_buffer_builder =
     [ "CreateVector", "classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207", null ],
     [ "CreateVector", "classflatbuffers_1_1_flat_buffer_builder.html#a274b1afcfa16bab2c884129b2788db19", null ],
     [ "CreateVector", "classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b", null ],
+    [ "CreateVector", "classflatbuffers_1_1_flat_buffer_builder.html#a53504fc2cab681a7980b03260f8b2f7a", null ],
     [ "CreateVectorOfNativeStructs", "classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53", null ],
     [ "CreateVectorOfNativeStructs", "classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95", null ],
     [ "CreateVectorOfSortedNativeStructs", "classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54", null ],
@@ -35,6 +36,7 @@ var classflatbuffers_1_1_flat_buffer_builder =
     [ "CreateVectorOfStrings", "classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6", null ],
     [ "CreateVectorOfStructs", "classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7", null ],
     [ "CreateVectorOfStructs", "classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72", null ],
+    [ "CreateVectorOfStructs", "classflatbuffers_1_1_flat_buffer_builder.html#a9cc09fa59ff9732e972877cfe911c8a5", null ],
     [ "CreateVectorOfStructs", "classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1", null ],
     [ "DedupVtables", "classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961", null ],
     [ "Finish", "classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912", null ],
@@ -54,6 +56,7 @@ var classflatbuffers_1_1_flat_buffer_builder =
     [ "finished", "classflatbuffers_1_1_flat_buffer_builder.html#ab2cc618aeb6f6c411c7ab734649e1a81", null ],
     [ "force_defaults_", "classflatbuffers_1_1_flat_buffer_builder.html#a89c2d7c686a2df8014cb453ec70fdccd", null ],
     [ "kFileIdentifierLength", "classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19", null ],
+    [ "max_voffset_", "classflatbuffers_1_1_flat_buffer_builder.html#a5e604e3caf95fd0f0e74545af5a8420a", null ],
     [ "minalign_", "classflatbuffers_1_1_flat_buffer_builder.html#ab9942e76ff29eefc702b006b19ce02ba", null ],
     [ "nested", "classflatbuffers_1_1_flat_buffer_builder.html#add6d502accf426e35f91f2539baff6b2", null ],
     [ "offsetbuf_", "classflatbuffers_1_1_flat_buffer_builder.html#adda5db5eceb1465e9a71ddc012d70839", null ],
diff --git a/flatbuffers_8h_source.html b/flatbuffers_8h_source.html
index be996a36ddaa8914364b400e13aeb5a7e80c0915..7d2d1c92cabcf4ea18dbbd3adc6882da1ed5696a 100644
--- a/flatbuffers_8h_source.html
+++ b/flatbuffers_8h_source.html
@@ -152,2096 +152,2215 @@ $(document).ready(function(){initNavTree('flatbuffers_8h_source.html','');});
 <div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;  (void)endiantest;</div>
 <div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;}</div>
 <div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div>
-<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T EndianSwap(T t) {</div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">  #if defined(_MSC_VER)</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">    #define FLATBUFFERS_BYTESWAP16 _byteswap_ushort</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">    #define FLATBUFFERS_BYTESWAP32 _byteswap_ulong</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">    #define FLATBUFFERS_BYTESWAP64 _byteswap_uint64</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">  #else</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">    #if defined(__GNUC__) &amp;&amp; __GNUC__ * 100 + __GNUC_MINOR__ &lt; 408</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;      <span class="comment">// __builtin_bswap16 was missing prior to GCC 4.8.</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">      #define FLATBUFFERS_BYTESWAP16(x) \</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">        static_cast&lt;uint16_t&gt;(__builtin_bswap32(static_cast&lt;uint32_t&gt;(x) &lt;&lt; 16))</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">    #else</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">      #define FLATBUFFERS_BYTESWAP16 __builtin_bswap16</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">    #endif</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">    #define FLATBUFFERS_BYTESWAP32 __builtin_bswap32</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">    #define FLATBUFFERS_BYTESWAP64 __builtin_bswap64</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;  <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(T) == 1) {   <span class="comment">// Compile-time if-then&#39;s.</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="keywordflow">return</span> t;</div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(T) == 2) {</div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <span class="keyword">auto</span> r = FLATBUFFERS_BYTESWAP16(*reinterpret_cast&lt;uint16_t *&gt;(&amp;t));</div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(&amp;r);</div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(T) == 4) {</div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="keyword">auto</span> r = FLATBUFFERS_BYTESWAP32(*reinterpret_cast&lt;uint32_t *&gt;(&amp;t));</div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(&amp;r);</div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(T) == 8) {</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <span class="keyword">auto</span> r = FLATBUFFERS_BYTESWAP64(*reinterpret_cast&lt;uint64_t *&gt;(&amp;t));</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(&amp;r);</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    assert(0);</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  }</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;}</div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; FLATBUFFERS_CONSTEXPR <span class="keywordtype">size_t</span> AlignOf() {</div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">  #ifdef _MSC_VER</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    <span class="keywordflow">return</span> __alignof(T);</div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor">  #else</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="preprocessor">    #ifndef alignof</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;      <span class="keywordflow">return</span> __alignof__(T);</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="preprocessor">    #else</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">alignof</span>(T);</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="preprocessor">    #endif</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;}</div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="comment">// When we read serialized data from memory, in the case of most scalars,</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="comment">// we want to just read T, but in the case of Offset, we want to actually</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="comment">// perform the indirection and return a pointer.</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="comment">// The template specialization below does just that.</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="comment">// It is wrapped in a struct since function templates can&#39;t overload on the</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="comment">// return type like this.</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="comment">// The typedef is for the convenience of callers of this function</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="comment">// (avoiding the need for a trailing return decltype)</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_indirect_helper.html">   92</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a> {</div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="keyword">typedef</span> T return_type;</div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="keyword">typedef</span> T mutable_return_type;</div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> element_stride = <span class="keyword">sizeof</span>(T);</div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <span class="keyword">static</span> return_type Read(<span class="keyword">const</span> uint8_t *p, uoffset_t i) {</div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="keywordflow">return</span> EndianScalar((reinterpret_cast&lt;const T *&gt;(p))[i]);</div>
-<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  }</div>
-<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;};</div>
-<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html">  100</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a>&lt;<a class="code" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;T&gt;&gt; {</div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;  <span class="keyword">typedef</span> <span class="keyword">const</span> T *return_type;</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <span class="keyword">typedef</span> T *mutable_return_type;</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> element_stride = <span class="keyword">sizeof</span>(uoffset_t);</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  <span class="keyword">static</span> return_type Read(<span class="keyword">const</span> uint8_t *p, uoffset_t i) {</div>
-<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    p += i * <span class="keyword">sizeof</span>(uoffset_t);</div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>return_type<span class="keyword">&gt;</span>(p + ReadScalar&lt;uoffset_t&gt;(p));</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  }</div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;};</div>
-<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html">  109</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a>&lt;const T *&gt; {</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  <span class="keyword">typedef</span> <span class="keyword">const</span> T *return_type;</div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  <span class="keyword">typedef</span> T *mutable_return_type;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> element_stride = <span class="keyword">sizeof</span>(T);</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  <span class="keyword">static</span> return_type Read(<span class="keyword">const</span> uint8_t *p, uoffset_t i) {</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>T *<span class="keyword">&gt;</span>(p + i * <span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  }</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;};</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; FLATBUFFERS_CONSTEXPR <span class="keywordtype">size_t</span> AlignOf() {</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">  #ifdef _MSC_VER</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    <span class="keywordflow">return</span> __alignof(T);</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">  #else</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">    #ifndef alignof</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;      <span class="keywordflow">return</span> __alignof__(T);</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">    #else</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">alignof</span>(T);</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">    #endif</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">  #endif</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;}</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment">// When we read serialized data from memory, in the case of most scalars,</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">// we want to just read T, but in the case of Offset, we want to actually</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">// perform the indirection and return a pointer.</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">// The template specialization below does just that.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">// It is wrapped in a struct since function templates can&#39;t overload on the</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">// return type like this.</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">// The typedef is for the convenience of callers of this function</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment">// (avoiding the need for a trailing return decltype)</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_indirect_helper.html">   60</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a> {</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="keyword">typedef</span> T return_type;</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="keyword">typedef</span> T mutable_return_type;</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> element_stride = <span class="keyword">sizeof</span>(T);</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="keyword">static</span> return_type Read(<span class="keyword">const</span> uint8_t *p, uoffset_t i) {</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <span class="keywordflow">return</span> EndianScalar((reinterpret_cast&lt;const T *&gt;(p))[i]);</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  }</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;};</div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html">   68</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a>&lt;<a class="code" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;T&gt;&gt; {</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  <span class="keyword">typedef</span> <span class="keyword">const</span> T *return_type;</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;  <span class="keyword">typedef</span> T *mutable_return_type;</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> element_stride = <span class="keyword">sizeof</span>(uoffset_t);</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  <span class="keyword">static</span> return_type Read(<span class="keyword">const</span> uint8_t *p, uoffset_t i) {</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    p += i * <span class="keyword">sizeof</span>(uoffset_t);</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>return_type<span class="keyword">&gt;</span>(p + ReadScalar&lt;uoffset_t&gt;(p));</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  }</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;};</div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html">   77</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a>&lt;const T *&gt; {</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  <span class="keyword">typedef</span> <span class="keyword">const</span> T *return_type;</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <span class="keyword">typedef</span> T *mutable_return_type;</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> element_stride = <span class="keyword">sizeof</span>(T);</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <span class="keyword">static</span> return_type Read(<span class="keyword">const</span> uint8_t *p, uoffset_t i) {</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>T *<span class="keyword">&gt;</span>(p + i * <span class="keyword">sizeof</span>(T));</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  }</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;};</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="comment">// An STL compatible iterator implementation for Vector below, effectively</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="comment">// calling Get() for every element.</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> IT&gt;</div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_vector_iterator.html">   89</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> {</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <span class="keyword">typedef</span> std::random_access_iterator_tag iterator_category;</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="keyword">typedef</span> IT value_type;</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <span class="keyword">typedef</span> uoffset_t difference_type;</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="keyword">typedef</span> IT *pointer;</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="keyword">typedef</span> IT &amp;reference;</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>(<span class="keyword">const</span> uint8_t *data, uoffset_t i) :</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;      data_(data + <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a> * i) {}</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other) : data_(other.data_) {}</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other) {</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    data_ = other.data_;</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  }</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;operator=(<a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;&amp;other) {</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    data_ = other.data_;</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  }</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keywordflow">return</span> data_ == other.data_;</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  }</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  <span class="keywordtype">bool</span> operator&lt;(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keywordflow">return</span> data_ &lt; other.data_;</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  }</div>
 <div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<span class="comment">// An STL compatible iterator implementation for Vector below, effectively</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="comment">// calling Get() for every element.</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> IT&gt;</div>
-<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_vector_iterator.html">  121</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> {</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <span class="keyword">typedef</span> std::random_access_iterator_tag iterator_category;</div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <span class="keyword">typedef</span> IT value_type;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="keyword">typedef</span> uoffset_t difference_type;</div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="keyword">typedef</span> IT *pointer;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  <span class="keyword">typedef</span> IT &amp;reference;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>(<span class="keyword">const</span> uint8_t *data, uoffset_t i) :</div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;      data_(data + <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a> * i) {}</div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other) : data_(other.data_) {}</div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other) {</div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    data_ = other.data_;</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  }</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;operator=(<a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;&amp;other) {</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    data_ = other.data_;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  }</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <span class="keywordflow">return</span> data_ == other.data_;</div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  }</div>
-<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="keywordtype">bool</span> operator&lt;(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <span class="keywordflow">return</span> data_ &lt; other.data_;</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  }</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;  <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    <span class="keywordflow">return</span> data_ != other.data_;</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <span class="keywordflow">return</span> data_ != other.data_;</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  }</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  ptrdiff_t operator-(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <span class="keywordflow">return</span> (data_ - other.data_) / <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>;</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  }</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  IT operator *()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::Read</a>(data_, 0);</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  }</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  IT operator-&gt;()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::Read</a>(data_, 0);</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  }</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;operator++() {</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    data_ += <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>;</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  }</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> operator++(<span class="keywordtype">int</span>) {</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> temp(data_, 0);</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    data_ += <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>;</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <span class="keywordflow">return</span> temp;</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  }</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> operator+(<span class="keyword">const</span> uoffset_t &amp;offset)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>(data_ + offset * <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>, 0);</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  }</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>&amp; operator+=(<span class="keyword">const</span> uoffset_t &amp;offset) {</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    data_ += offset * <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>;</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
 <div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  }</div>
 <div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;  ptrdiff_t operator-(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <span class="keywordflow">return</span> (data_ - other.data_) / <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>;</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;  }</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  IT operator *()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::Read</a>(data_, 0);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  }</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  IT operator-&gt;()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::Read</a>(data_, 0);</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  }</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;operator++() {</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    data_ += <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  }</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> operator++(<span class="keywordtype">int</span>) {</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> temp(data_, 0);</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    data_ += <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>;</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="keywordflow">return</span> temp;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  }</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> operator+(<span class="keyword">const</span> uoffset_t &amp;offset)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>(data_ + offset * <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>, 0);</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  }</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>&amp; operator+=(<span class="keyword">const</span> uoffset_t &amp;offset) {</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    data_ += offset * <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  }</div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;operator--() {</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    data_ -= <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>;</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  }</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;operator--() {</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    data_ -= <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>;</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;  }</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> operator--(<span class="keywordtype">int</span>) {</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> temp(data_, 0);</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    data_ -= <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>;</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <span class="keywordflow">return</span> temp;</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  }</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> operator-(<span class="keyword">const</span> uoffset_t &amp;offset) {</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>(data_ - offset * <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>, 0);</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  }</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>&amp; operator-=(<span class="keyword">const</span> uoffset_t &amp;offset) {</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    data_ -= offset * <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>;</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  }</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  <span class="keyword">const</span> uint8_t *data_;</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;};</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;<span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_string.html">String</a>;</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;<span class="comment">// This is used as a helper type for accessing vectors.</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;<span class="comment">// Vector::data() assumes the vector elements start after the length field.</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_vector.html">  182</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">class </span><a class="code" href="classflatbuffers_1_1_vector.html">Vector</a> {</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  <span class="keyword">typedef</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator&lt;T, typename IndirectHelper&lt;T&gt;::mutable_return_type</a>&gt;</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <a class="code" href="structflatbuffers_1_1_vector_iterator.html">iterator</a>;</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  <span class="keyword">typedef</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator&lt;T, typename IndirectHelper&lt;T&gt;::return_type</a>&gt;</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <a class="code" href="structflatbuffers_1_1_vector_iterator.html">const_iterator</a>;</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  uoffset_t size()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> EndianScalar(length_); }</div>
 <div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> operator--(<span class="keywordtype">int</span>) {</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> temp(data_, 0);</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    data_ -= <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>;</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    <span class="keywordflow">return</span> temp;</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  }</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  <span class="comment">// Deprecated: use size(). Here for backwards compatibility.</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  uoffset_t Length()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> size(); }</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <span class="keyword">typedef</span> <span class="keyword">typename</span> IndirectHelper&lt;T&gt;::return_type return_type;</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <span class="keyword">typedef</span> <span class="keyword">typename</span> IndirectHelper&lt;T&gt;::mutable_return_type mutable_return_type;</div>
 <div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> operator-(<span class="keyword">const</span> uoffset_t &amp;offset) {</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>(data_ - offset * <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>, 0);</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  }</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>&amp; operator-=(<span class="keyword">const</span> uoffset_t &amp;offset) {</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    data_ -= offset * <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>;</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;  }</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  <span class="keyword">const</span> uint8_t *data_;</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;};</div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;<span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_string.html">String</a>;</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;<span class="comment">// This is used as a helper type for accessing vectors.</span></div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="comment">// Vector::data() assumes the vector elements start after the length field.</span></div>
-<div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_vector.html">  214</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">class </span><a class="code" href="classflatbuffers_1_1_vector.html">Vector</a> {</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;  <span class="keyword">typedef</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator&lt;T, typename IndirectHelper&lt;T&gt;::mutable_return_type</a>&gt;</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <a class="code" href="structflatbuffers_1_1_vector_iterator.html">iterator</a>;</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;  <span class="keyword">typedef</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator&lt;T, typename IndirectHelper&lt;T&gt;::return_type</a>&gt;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    <a class="code" href="structflatbuffers_1_1_vector_iterator.html">const_iterator</a>;</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  uoffset_t size()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> EndianScalar(length_); }</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  return_type Get(uoffset_t i)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    assert(i &lt; size());</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::Read</a>(Data(), i);</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  }</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;  return_type operator[](uoffset_t i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Get(i); }</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;  <span class="comment">// If this is a Vector of enums, T will be its storage type, not the enum</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;  <span class="comment">// type. This function makes it convenient to retrieve value with enum</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;  <span class="comment">// type E.</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> E&gt; E GetEnum(uoffset_t i)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>E<span class="keyword">&gt;</span>(Get(i));</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;  }</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  <span class="comment">// If this a vector of unions, this does the cast for you. There&#39;s no check</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  <span class="comment">// to make sure this is the right type!</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> U&gt; <span class="keyword">const</span> U *GetAs(uoffset_t i)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>U *<span class="keyword">&gt;</span>(Get(i));</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;  }</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;  <span class="comment">// If this a vector of unions, this does the cast for you. There&#39;s no check</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;  <span class="comment">// to make sure this is actually a string!</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;  <span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_string.html">String</a> *GetAsString(uoffset_t i)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><a class="code" href="structflatbuffers_1_1_string.html">String</a> *<span class="keyword">&gt;</span>(Get(i));</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  }</div>
 <div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;  <span class="comment">// Deprecated: use size(). Here for backwards compatibility.</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;  uoffset_t Length()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> size(); }</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;  <span class="keyword">typedef</span> <span class="keyword">typename</span> IndirectHelper&lt;T&gt;::return_type return_type;</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;  <span class="keyword">typedef</span> <span class="keyword">typename</span> IndirectHelper&lt;T&gt;::mutable_return_type mutable_return_type;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;  return_type Get(uoffset_t i)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    assert(i &lt; size());</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::Read</a>(Data(), i);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;  }</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;  return_type operator[](uoffset_t i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Get(i); }</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  <span class="comment">// If this is a Vector of enums, T will be its storage type, not the enum</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  <span class="comment">// type. This function makes it convenient to retrieve value with enum</span></div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;  <span class="comment">// type E.</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> E&gt; E GetEnum(uoffset_t i)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>E<span class="keyword">&gt;</span>(Get(i));</div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  }</div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;</div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  <span class="comment">// If this a vector of unions, this does the cast for you. There&#39;s no check</span></div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  <span class="comment">// to make sure this is the right type!</span></div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> U&gt; <span class="keyword">const</span> U *GetAs(uoffset_t i)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>U *<span class="keyword">&gt;</span>(Get(i));</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;  }</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  <span class="comment">// If this a vector of unions, this does the cast for you. There&#39;s no check</span></div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  <span class="comment">// to make sure this is actually a string!</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  <span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_string.html">String</a> *GetAsString(uoffset_t i)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><a class="code" href="structflatbuffers_1_1_string.html">String</a> *<span class="keyword">&gt;</span>(Get(i));</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  }</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;</div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">void</span> *GetStructFromOffset(<span class="keywordtype">size_t</span> o)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">void</span> *<span class="keyword">&gt;</span>(Data() + o);</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  }</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">iterator</a> begin() { <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">iterator</a>(Data(), 0); }</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">const_iterator</a> begin()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">const_iterator</a>(Data(), 0); }</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">iterator</a> end() { <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">iterator</a>(Data(), size()); }</div>
-<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">const_iterator</a> end()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">const_iterator</a>(Data(), size()); }</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">void</span> *GetStructFromOffset(<span class="keywordtype">size_t</span> o)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">void</span> *<span class="keyword">&gt;</span>(Data() + o);</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;  }</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">iterator</a> begin() { <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">iterator</a>(Data(), 0); }</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">const_iterator</a> begin()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">const_iterator</a>(Data(), 0); }</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">iterator</a> end() { <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">iterator</a>(Data(), size()); }</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;  <a class="code" href="structflatbuffers_1_1_vector_iterator.html">const_iterator</a> end()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_vector_iterator.html">const_iterator</a>(Data(), size()); }</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;  <span class="comment">// Change elements if you have a non-const pointer to this object.</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;  <span class="comment">// Scalars only. See reflection.h, and the documentation.</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;  <span class="keywordtype">void</span> Mutate(uoffset_t i, <span class="keyword">const</span> T&amp; val) {</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    assert(i &lt; size());</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    WriteScalar(data() + i, val);</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;  }</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;  <span class="comment">// Change an element of a vector of tables (or strings).</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  <span class="comment">// &quot;val&quot; points to the new table/string, as you can obtain from</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  <span class="comment">// e.g. reflection::AddFlatBuffer().</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  <span class="keywordtype">void</span> MutateOffset(uoffset_t i, <span class="keyword">const</span> uint8_t *val) {</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    assert(i &lt; size());</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    assert(<span class="keyword">sizeof</span>(T) == <span class="keyword">sizeof</span>(uoffset_t));</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    WriteScalar(data() + i,</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;                static_cast&lt;uoffset_t&gt;(val - (Data() + i * <span class="keyword">sizeof</span>(uoffset_t))));</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;  }</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  <span class="comment">// Get a mutable pointer to tables/strings inside this vector.</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  mutable_return_type GetMutableObject(uoffset_t i)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;    assert(i &lt; size());</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span>mutable_return_type<span class="keyword">&gt;</span>(<a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::Read</a>(Data(), i));</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  }</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  <span class="comment">// The raw data in little endian format. Use with care.</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  <span class="keyword">const</span> uint8_t *Data()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(&amp;length_ + 1);</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  }</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  uint8_t *Data() {</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>uint8_t *<span class="keyword">&gt;</span>(&amp;length_ + 1);</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  }</div>
 <div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;</div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;  <span class="comment">// Change elements if you have a non-const pointer to this object.</span></div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  <span class="comment">// Scalars only. See reflection.h, and the documentation.</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  <span class="keywordtype">void</span> Mutate(uoffset_t i, <span class="keyword">const</span> T&amp; val) {</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;    assert(i &lt; size());</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    WriteScalar(data() + i, val);</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;  }</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;  <span class="comment">// Change an element of a vector of tables (or strings).</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;  <span class="comment">// &quot;val&quot; points to the new table/string, as you can obtain from</span></div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;  <span class="comment">// e.g. reflection::AddFlatBuffer().</span></div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;  <span class="keywordtype">void</span> MutateOffset(uoffset_t i, <span class="keyword">const</span> uint8_t *val) {</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    assert(i &lt; size());</div>
-<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    assert(<span class="keyword">sizeof</span>(T) == <span class="keyword">sizeof</span>(uoffset_t));</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    WriteScalar(data() + i,</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;                static_cast&lt;uoffset_t&gt;(val - (Data() + i * <span class="keyword">sizeof</span>(uoffset_t))));</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;  <span class="comment">// Similarly, but typed, much like std::vector::data</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  <span class="keyword">const</span> T *data()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>T *<span class="keyword">&gt;</span>(Data()); }</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  T *data() { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(Data()); }</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> K&gt; return_type LookupByKey(K key)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    <span class="keywordtype">void</span> *search_result = std::bsearch(&amp;key, Data(), size(),</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;        <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>, KeyCompare&lt;K&gt;);</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    <span class="keywordflow">if</span> (!search_result) {</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;  <span class="comment">// Key not found.</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    }</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    <span class="keyword">const</span> uint8_t *element = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(search_result);</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::Read</a>(element, 0);</div>
 <div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  }</div>
 <div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;  <span class="comment">// Get a mutable pointer to tables/strings inside this vector.</span></div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;  mutable_return_type GetMutableObject(uoffset_t i)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    assert(i &lt; size());</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span>mutable_return_type<span class="keyword">&gt;</span>(<a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::Read</a>(Data(), i));</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  }</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;  <span class="comment">// The raw data in little endian format. Use with care.</span></div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;  <span class="keyword">const</span> uint8_t *Data()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(&amp;length_ + 1);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;  }</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;</div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;  uint8_t *Data() {</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>uint8_t *<span class="keyword">&gt;</span>(&amp;length_ + 1);</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;  }</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;  <span class="comment">// Similarly, but typed, much like std::vector::data</span></div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;  <span class="keyword">const</span> T *data()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>T *<span class="keyword">&gt;</span>(Data()); }</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;  T *data() { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(Data()); }</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> K&gt; return_type LookupByKey(K key)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    <span class="keywordtype">void</span> *search_result = std::bsearch(&amp;key, Data(), size(),</div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;        <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::element_stride</a>, KeyCompare&lt;K&gt;);</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;  <span class="comment">// This class is only used to access pre-existing data. Don&#39;t ever</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  <span class="comment">// try to construct these manually.</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;  <a class="code" href="classflatbuffers_1_1_vector.html">Vector</a>();</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;  uoffset_t length_;</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  <span class="comment">// This class is a pointer. Copying will therefore create an invalid object.</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;  <span class="comment">// Private and unimplemented copy constructor.</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;  <a class="code" href="classflatbuffers_1_1_vector.html">Vector</a>(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1_vector.html">Vector</a>&amp;);</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> K&gt; <span class="keyword">static</span> <span class="keywordtype">int</span> KeyCompare(<span class="keyword">const</span> <span class="keywordtype">void</span> *ap, <span class="keyword">const</span> <span class="keywordtype">void</span> *bp) {</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    <span class="keyword">const</span> K *key = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>K *<span class="keyword">&gt;</span>(ap);</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;    <span class="keyword">const</span> uint8_t *data = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(bp);</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    <span class="keyword">auto</span> table = <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::Read</a>(data, 0);</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;    <span class="comment">// std::bsearch compares with the operands transposed, so we negate the</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;    <span class="comment">// result here.</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    <span class="keywordflow">return</span> -table-&gt;KeyCompareWithValue(*key);</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;  }</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;};</div>
 <div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    <span class="keywordflow">if</span> (!search_result) {</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;  <span class="comment">// Key not found.</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    }</div>
-<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    <span class="keyword">const</span> uint8_t *element = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(search_result);</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;<span class="comment">// Represent a vector much like the template above, but in this case we</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;<span class="comment">// don&#39;t know what the element types are (used with reflection.h).</span></div>
+<div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_vector_of_any.html">  307</a></span>&#160;<span class="keyword">class </span><a class="code" href="classflatbuffers_1_1_vector_of_any.html">VectorOfAny</a> {</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;  uoffset_t size()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> EndianScalar(length_); }</div>
 <div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;</div>
-<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::Read</a>(element, 0);</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;  }</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;  <span class="comment">// This class is only used to access pre-existing data. Don&#39;t ever</span></div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  <span class="comment">// try to construct these manually.</span></div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;  <a class="code" href="classflatbuffers_1_1_vector.html">Vector</a>();</div>
-<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;</div>
-<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;  uoffset_t length_;</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;  <span class="comment">// This class is a pointer. Copying will therefore create an invalid object.</span></div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;  <span class="comment">// Private and unimplemented copy constructor.</span></div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;  <a class="code" href="classflatbuffers_1_1_vector.html">Vector</a>(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1_vector.html">Vector</a>&amp;);</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;  <span class="keyword">const</span> uint8_t *Data()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(&amp;length_ + 1);</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;  }</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;  uint8_t *Data() {</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>uint8_t *<span class="keyword">&gt;</span>(&amp;length_ + 1);</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  }</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;<span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;  <a class="code" href="classflatbuffers_1_1_vector_of_any.html">VectorOfAny</a>();</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;  uoffset_t length_;</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;  <a class="code" href="classflatbuffers_1_1_vector_of_any.html">VectorOfAny</a>(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1_vector_of_any.html">VectorOfAny</a>&amp;);</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;};</div>
 <div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> K&gt; <span class="keyword">static</span> <span class="keywordtype">int</span> KeyCompare(<span class="keyword">const</span> <span class="keywordtype">void</span> *ap, <span class="keyword">const</span> <span class="keywordtype">void</span> *bp) {</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    <span class="keyword">const</span> K *key = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>K *<span class="keyword">&gt;</span>(ap);</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    <span class="keyword">const</span> uint8_t *data = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(bp);</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;    <span class="keyword">auto</span> table = <a class="code" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper&lt;T&gt;::Read</a>(data, 0);</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    <span class="comment">// std::bsearch compares with the operands transposed, so we negate the</span></div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    <span class="comment">// result here.</span></div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    <span class="keywordflow">return</span> -table-&gt;KeyCompareWithValue(*key);</div>
-<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;  }</div>
-<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;};</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;</div>
-<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;<span class="comment">// Represent a vector much like the template above, but in this case we</span></div>
-<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;<span class="comment">// don&#39;t know what the element types are (used with reflection.h).</span></div>
-<div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_vector_of_any.html">  339</a></span>&#160;<span class="keyword">class </span><a class="code" href="classflatbuffers_1_1_vector_of_any.html">VectorOfAny</a> {</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;  uoffset_t size()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> EndianScalar(length_); }</div>
-<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;</div>
-<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;  <span class="keyword">const</span> uint8_t *Data()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(&amp;length_ + 1);</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;  }</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;  uint8_t *Data() {</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>uint8_t *<span class="keyword">&gt;</span>(&amp;length_ + 1);</div>
-<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;  }</div>
-<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;  <a class="code" href="classflatbuffers_1_1_vector_of_any.html">VectorOfAny</a>();</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;  uoffset_t length_;</div>
-<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;</div>
-<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;  <a class="code" href="classflatbuffers_1_1_vector_of_any.html">VectorOfAny</a>(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1_vector_of_any.html">VectorOfAny</a>&amp;);</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;};</div>
-<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;</div>
-<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;<span class="preprocessor">#ifndef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;<a class="code" href="classflatbuffers_1_1_vector.html">Vector&lt;Offset&lt;T&gt;</a>&gt; *VectorCast(<a class="code" href="classflatbuffers_1_1_vector.html">Vector</a>&lt;<a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;U&gt;</a>&gt; *ptr) {</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;  static_assert(std::is_base_of&lt;T, U&gt;::value, <span class="stringliteral">&quot;Unrelated types&quot;</span>);</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="classflatbuffers_1_1_vector.html">Vector&lt;Offset&lt;T&gt;</a><span class="keyword">&gt;</span> *&gt;(ptr);</div>
-<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;}</div>
-<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
-<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;<span class="keyword">const</span> Vector&lt;Offset&lt;T&gt;&gt; *VectorCast(<span class="keyword">const</span> Vector&lt;Offset&lt;U&gt;&gt; *ptr) {</div>
-<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;  static_assert(std::is_base_of&lt;T, U&gt;::value, <span class="stringliteral">&quot;Unrelated types&quot;</span>);</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Vector&lt;Offset&lt;T&gt;<span class="keyword">&gt;</span> *&gt;(ptr);</div>
-<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;}</div>
-<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;</div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;<span class="comment">// Convenient helper function to get the length of any vector, regardless</span></div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;<span class="comment">// of wether it is null or not (the field is not set).</span></div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> VectorLength(<span class="keyword">const</span> Vector&lt;T&gt; *v) {</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;  <span class="keywordflow">return</span> v ? v-&gt;Length() : 0;</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;}</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;</div>
-<div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_string.html">  378</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_string.html">String</a> : <span class="keyword">public</span> <a class="code" href="classflatbuffers_1_1_vector.html">Vector</a>&lt;char&gt; {</div>
-<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">char</span> *c_str()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span> *<span class="keyword">&gt;</span>(Data()); }</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;  std::string str()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> std::string(c_str(), Length()); }</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;  <span class="keywordtype">bool</span> operator &lt;(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_string.html">String</a> &amp;o)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;    <span class="keywordflow">return</span> strcmp(c_str(), o.c_str()) &lt; 0;</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;  }</div>
-<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;};</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;<span class="preprocessor">#ifndef FLATBUFFERS_CPP98_STL</span></div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;<a class="code" href="classflatbuffers_1_1_vector.html">Vector&lt;Offset&lt;T&gt;</a>&gt; *VectorCast(<a class="code" href="classflatbuffers_1_1_vector.html">Vector</a>&lt;<a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;U&gt;</a>&gt; *ptr) {</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;  static_assert(std::is_base_of&lt;T, U&gt;::value, <span class="stringliteral">&quot;Unrelated types&quot;</span>);</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="classflatbuffers_1_1_vector.html">Vector&lt;Offset&lt;T&gt;</a><span class="keyword">&gt;</span> *&gt;(ptr);</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;}</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;<span class="keyword">const</span> Vector&lt;Offset&lt;T&gt;&gt; *VectorCast(<span class="keyword">const</span> Vector&lt;Offset&lt;U&gt;&gt; *ptr) {</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;  static_assert(std::is_base_of&lt;T, U&gt;::value, <span class="stringliteral">&quot;Unrelated types&quot;</span>);</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Vector&lt;Offset&lt;T&gt;<span class="keyword">&gt;</span> *&gt;(ptr);</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;}</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;<span class="comment">// Convenient helper function to get the length of any vector, regardless</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;<span class="comment">// of wether it is null or not (the field is not set).</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> VectorLength(<span class="keyword">const</span> Vector&lt;T&gt; *v) {</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;  <span class="keywordflow">return</span> v ? v-&gt;Length() : 0;</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;}</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;</div>
+<div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_string.html">  346</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_string.html">String</a> : <span class="keyword">public</span> <a class="code" href="classflatbuffers_1_1_vector.html">Vector</a>&lt;char&gt; {</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">char</span> *c_str()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span> *<span class="keyword">&gt;</span>(Data()); }</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;  std::string str()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> std::string(c_str(), Length()); }</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;  <span class="keywordtype">bool</span> operator &lt;(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_string.html">String</a> &amp;o)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;    <span class="keywordflow">return</span> strcmp(c_str(), o.c_str()) &lt; 0;</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;  }</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;};</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="comment">// Allocator interface. This is flatbuffers-specific and meant only for</span></div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;<span class="comment">// `vector_downward` usage.</span></div>
+<div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_allocator.html">  357</a></span>&#160;<span class="keyword">class </span><a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> {</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;  <span class="keyword">virtual</span> ~<a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a>() {}</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;  <span class="comment">// Allocate `size` bytes of memory.</span></div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;  <span class="keyword">virtual</span> uint8_t *allocate(<span class="keywordtype">size_t</span> size) = 0;</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;  <span class="comment">// Deallocate `size` bytes of memory at `p` allocated by this allocator.</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> deallocate(uint8_t *p, <span class="keywordtype">size_t</span> size) = 0;</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;  <span class="comment">// Reallocate `new_size` bytes of memory, replacing the old region of size</span></div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;  <span class="comment">// `old_size` at `p`. In contrast to a normal realloc, this grows downwards,</span></div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;  <span class="comment">// and is intended specifcally for `vector_downward` use.</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;  <span class="keyword">virtual</span> uint8_t *reallocate_downward(uint8_t *old_p, <span class="keywordtype">size_t</span> old_size,</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;                                       <span class="keywordtype">size_t</span> new_size) {</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;    assert(new_size &gt; old_size);  <span class="comment">// vector_downward only grows</span></div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    uint8_t *new_p = allocate(new_size);</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    memcpy(new_p + (new_size - old_size), old_p, old_size);</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;    deallocate(old_p, old_size);</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;    <span class="keywordflow">return</span> new_p;</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;  }</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;};</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<span class="comment">// DefaultAllocator uses new/delete to allocate memory regions</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_default_allocator.html">  381</a></span>&#160;<span class="keyword">class </span><a class="code" href="classflatbuffers_1_1_default_allocator.html">DefaultAllocator</a> : <span class="keyword">public</span> <a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> {</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;  <span class="keyword">virtual</span> uint8_t *allocate(<span class="keywordtype">size_t</span> size) FLATBUFFERS_OVERRIDE {</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">new</span> uint8_t[size];</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;  }</div>
 <div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;<span class="comment">// Allocator interface. This is flatbuffers-specific and meant only for</span></div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;<span class="comment">// `vector_downward` usage.</span></div>
-<div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_allocator.html">  389</a></span>&#160;<span class="keyword">class </span><a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> {</div>
-<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;  <span class="keyword">virtual</span> ~<a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a>() {}</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;</div>
-<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;  <span class="comment">// Allocate `size` bytes of memory.</span></div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;  <span class="keyword">virtual</span> uint8_t *allocate(<span class="keywordtype">size_t</span> size) = 0;</div>
-<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;</div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;  <span class="comment">// Deallocate `size` bytes of memory at `p` allocated by this allocator.</span></div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> deallocate(uint8_t *p, <span class="keywordtype">size_t</span> size) = 0;</div>
-<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;</div>
-<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;  <span class="comment">// Reallocate `new_size` bytes of memory, replacing the old region of size</span></div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;  <span class="comment">// `old_size` at `p`. In contrast to a normal realloc, this grows downwards,</span></div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;  <span class="comment">// and is intended specifcally for `vector_downward` use.</span></div>
-<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;  <span class="keyword">virtual</span> uint8_t *reallocate_downward(uint8_t *old_p, <span class="keywordtype">size_t</span> old_size,</div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;                                       <span class="keywordtype">size_t</span> new_size) {</div>
-<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;    assert(new_size &gt; old_size);  <span class="comment">// vector_downward only grows</span></div>
-<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;    uint8_t *new_p = allocate(new_size);</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;    memcpy(new_p + (new_size - old_size), old_p, old_size);</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;    deallocate(old_p, old_size);</div>
-<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;    <span class="keywordflow">return</span> new_p;</div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;  }</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;};</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> deallocate(uint8_t *p, <span class="keywordtype">size_t</span>) FLATBUFFERS_OVERRIDE {</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;    <span class="keyword">delete</span>[] p;</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;  }</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;  <span class="keyword">static</span> <a class="code" href="classflatbuffers_1_1_default_allocator.html">DefaultAllocator</a> &amp;instance() {</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;    <span class="keyword">static</span> <a class="code" href="classflatbuffers_1_1_default_allocator.html">DefaultAllocator</a> inst;</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    <span class="keywordflow">return</span> inst;</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;  }</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;};</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;<span class="comment">// DetachedBuffer is a finished flatbuffer memory region, detached from its</span></div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;<span class="comment">// builder. The original memory region and allocator are also stored so that</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;<span class="comment">// the DetachedBuffer can manage the memory lifetime.</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_detached_buffer.html">  400</a></span>&#160;<span class="keyword">class </span><a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> {</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;  <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a>() : allocator_(<span class="keyword">nullptr</span>), own_allocator_(<span class="keyword">false</span>), buf_(<span class="keyword">nullptr</span>),</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;                     reserved_(0), cur_(<span class="keyword">nullptr</span>), size_(0) {}</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;  <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a>(<a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> *allocator, <span class="keywordtype">bool</span> own_allocator, uint8_t *buf,</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;                 <span class="keywordtype">size_t</span> reserved, uint8_t *cur, <span class="keywordtype">size_t</span> sz)</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;    : allocator_(allocator), own_allocator_(own_allocator), buf_(buf),</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;      reserved_(reserved), cur_(cur), size_(sz) {</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;    assert(allocator_);</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;  }</div>
 <div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;</div>
-<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;<span class="comment">// DefaultAllocator uses new/delete to allocate memory regions</span></div>
-<div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_default_allocator.html">  413</a></span>&#160;<span class="keyword">class </span><a class="code" href="classflatbuffers_1_1_default_allocator.html">DefaultAllocator</a> : <span class="keyword">public</span> <a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> {</div>
-<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;  <span class="keyword">virtual</span> uint8_t *allocate(<span class="keywordtype">size_t</span> size) FLATBUFFERS_OVERRIDE {</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">new</span> uint8_t[size];</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;  <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a>(<a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;&amp;other)</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    : allocator_(other.allocator_), own_allocator_(other.own_allocator_),</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;      buf_(other.buf_), reserved_(other.reserved_), cur_(other.cur_),</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;      size_(other.size_) {</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;    other.reset();  </div>
 <div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;  }</div>
 <div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> deallocate(uint8_t *p, <span class="keywordtype">size_t</span>) FLATBUFFERS_OVERRIDE {</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    <span class="keyword">delete</span>[] p;</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;  }</div>
-<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;</div>
-<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;  <span class="keyword">static</span> <a class="code" href="classflatbuffers_1_1_default_allocator.html">DefaultAllocator</a> &amp;instance() {</div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;    <span class="keyword">static</span> <a class="code" href="classflatbuffers_1_1_default_allocator.html">DefaultAllocator</a> inst;</div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;    <span class="keywordflow">return</span> inst;</div>
-<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;  }</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;};</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;  <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;operator=(<a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;&amp;other) {</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    destroy();</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;    allocator_ = other.allocator_;</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;    own_allocator_ = other.own_allocator_;</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;    buf_ = other.buf_;</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;    reserved_ = other.reserved_;</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;    cur_ = other.cur_;</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;    size_ = other.size_;</div>
 <div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;</div>
-<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;<span class="comment">// DetachedBuffer is a finished flatbuffer memory region, detached from its</span></div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;<span class="comment">// builder. The original memory region and allocator are also stored so that</span></div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;<span class="comment">// the DetachedBuffer can manage the memory lifetime.</span></div>
-<div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_detached_buffer.html">  432</a></span>&#160;<span class="keyword">class </span><a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> {</div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;  <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a>() : allocator_(<span class="keyword">nullptr</span>), own_allocator_(<span class="keyword">false</span>), buf_(<span class="keyword">nullptr</span>),</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;                     reserved_(0), cur_(<span class="keyword">nullptr</span>), size_(0) {}</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;  <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a>(<a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> *allocator, <span class="keywordtype">bool</span> own_allocator, uint8_t *buf,</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;                 <span class="keywordtype">size_t</span> reserved, uint8_t *cur, <span class="keywordtype">size_t</span> sz)</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;    : allocator_(allocator), own_allocator_(own_allocator), buf_(buf),</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;      reserved_(reserved), cur_(cur), size_(sz) {</div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;    assert(allocator_);</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;  }</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;</div>
-<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;  <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a>(<a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;&amp;other)</div>
-<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;    : allocator_(other.allocator_), own_allocator_(other.own_allocator_),</div>
-<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;      buf_(other.buf_), reserved_(other.reserved_), cur_(other.cur_),</div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;      size_(other.size_) {</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;    other.allocator_ = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;    other.own_allocator_ = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;    other.buf_ = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;    other.reserved_ = 0;</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;    other.cur_ = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;    other.size_ = 0;</div>
-<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;  }</div>
-<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;</div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;  <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;operator=(<a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;&amp;other) {</div>
-<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;    std::swap(allocator_, other.allocator_);</div>
-<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;    std::swap(own_allocator_, other.own_allocator_);</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;    std::swap(buf_, other.buf_);</div>
-<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;    std::swap(reserved_, other.reserved_);</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;    std::swap(cur_, other.cur_);</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;    std::swap(size_, other.size_);</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;  }</div>
-<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;  ~<a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a>() {</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;    <span class="keywordflow">if</span> (buf_) {</div>
-<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;      assert(allocator_);</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;      allocator_-&gt;deallocate(buf_, reserved_);</div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;    }</div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;    <span class="keywordflow">if</span> (own_allocator_ &amp;&amp; allocator_) {</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;      <span class="keyword">delete</span> allocator_;</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;    }</div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;  }</div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;  <span class="keyword">const</span> uint8_t *data()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;    <span class="keywordflow">return</span> cur_;</div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;  }</div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;  uint8_t *data() {</div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;    <span class="keywordflow">return</span> cur_;</div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;  }</div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;</div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;  <span class="keywordtype">size_t</span> size()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;    <span class="keywordflow">return</span> size_;</div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;  }</div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;</div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;<span class="preprocessor">#if 0  // disabled for now due to the ordering of classes in this header</span></div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;  <span class="keywordtype">bool</span> Verify()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;    Verifier verifier(data(), size());</div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;    <span class="keywordflow">return</span> verifier.Verify&lt;T&gt;(<span class="keyword">nullptr</span>);</div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;  }</div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;</div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;  <span class="keyword">const</span> T* GetRoot()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;    <span class="keywordflow">return</span> flatbuffers::GetRoot&lt;T&gt;(data());</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;  }</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;</div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div>
-<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;  T* GetRoot() {</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;    <span class="keywordflow">return</span> flatbuffers::GetRoot&lt;T&gt;(data());</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;  }</div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;</div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;  <span class="comment">// These may change access mode, leave these at end of public section</span></div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;  FLATBUFFERS_DELETE_FUNC(<a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a>(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;other))</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;  FLATBUFFERS_DELETE_FUNC(</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;      <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;<span class="keyword">operator</span>=(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;other))</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160; <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;  <a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> *allocator_;</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;  <span class="keywordtype">bool</span> own_allocator_;</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;  uint8_t *buf_;</div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;  <span class="keywordtype">size_t</span> reserved_;</div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;  uint8_t *cur_;</div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;  <span class="keywordtype">size_t</span> size_;</div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;};</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;<span class="comment">// This is a minimal replication of std::vector&lt;uint8_t&gt; functionality,</span></div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;<span class="comment">// except growing from higher to lower addresses. i.e push_back() inserts data</span></div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;<span class="comment">// in the lowest address in the vector.</span></div>
-<div class="line"><a name="l00523"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1vector__downward.html">  523</a></span>&#160;<span class="keyword">class </span><a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> {</div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a>(<span class="keywordtype">size_t</span> initial_size = 1024,</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;                           <a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> *allocator = <span class="keyword">nullptr</span>,</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;                           <span class="keywordtype">bool</span> own_allocator = <span class="keyword">false</span>)</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;    : allocator_(allocator ? allocator : &amp;DefaultAllocator::instance()),</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;      own_allocator_(own_allocator), initial_size_(initial_size), reserved_(0),</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;      buf_(<span class="keyword">nullptr</span>), cur_(<span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;    assert(allocator_);</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;  }</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;  ~<a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a>() {</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;    <span class="keywordflow">if</span> (buf_) {</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;      assert(allocator_);</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;      allocator_-&gt;deallocate(buf_, reserved_);</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;    }</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;    <span class="keywordflow">if</span> (own_allocator_ &amp;&amp; allocator_) {</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;      <span class="keyword">delete</span> allocator_;</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;    }</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;  }</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;</div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;  <span class="keywordtype">void</span> reset() {</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;    <span class="keywordflow">if</span> (buf_) {</div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;      assert(allocator_);</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;      allocator_-&gt;deallocate(buf_, reserved_);</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;    }</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;    reserved_ = 0;</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;    buf_ = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;    cur_ = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;  }</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;</div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;  <span class="keywordtype">void</span> clear() {</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;    <span class="keywordflow">if</span> (buf_) {</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;      cur_ = buf_ + reserved_;</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;    } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;      reserved_ = 0;</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;      buf_ = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;      cur_ = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;    }</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;    other.reset();</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;  }</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;  ~<a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a>() {</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;    destroy();</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;  }</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;  <span class="keyword">const</span> uint8_t *data()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;    <span class="keywordflow">return</span> cur_;</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;  }</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;  uint8_t *data() {</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;    <span class="keywordflow">return</span> cur_;</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;  }</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;  <span class="keywordtype">size_t</span> size()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;    <span class="keywordflow">return</span> size_;</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;  }</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;<span class="preprocessor">#if 0  // disabled for now due to the ordering of classes in this header</span></div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;  <span class="keywordtype">bool</span> Verify()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;    Verifier verifier(data(), size());</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;    <span class="keywordflow">return</span> verifier.Verify&lt;T&gt;(<span class="keyword">nullptr</span>);</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;  }</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;  <span class="keyword">const</span> T* GetRoot()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;    <span class="keywordflow">return</span> flatbuffers::GetRoot&lt;T&gt;(data());</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;  }</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;  T* GetRoot() {</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;    <span class="keywordflow">return</span> flatbuffers::GetRoot&lt;T&gt;(data());</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;  }</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;  <span class="comment">// These may change access mode, leave these at end of public section</span></div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;  FLATBUFFERS_DELETE_FUNC(<a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a>(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;other))</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;  FLATBUFFERS_DELETE_FUNC(</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;      <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;<span class="keyword">operator</span>=(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;other))</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;  <a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> *allocator_;</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;  <span class="keywordtype">bool</span> own_allocator_;</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;  uint8_t *buf_;</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;  <span class="keywordtype">size_t</span> reserved_;</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;  uint8_t *cur_;</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;  <span class="keywordtype">size_t</span> size_;</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">void</span> destroy() {</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;    <span class="keywordflow">if</span> (buf_) {</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;      assert(allocator_);</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;      allocator_-&gt;deallocate(buf_, reserved_);</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;    }</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;    <span class="keywordflow">if</span> (own_allocator_ &amp;&amp; allocator_) {</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;      <span class="keyword">delete</span> allocator_;</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;    }</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;    reset();</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;  }</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;  <span class="keyword">inline</span> <span class="keywordtype">void</span> reset() {</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;    allocator_ = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;    own_allocator_ = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;    buf_ = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;    reserved_ = 0;</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;    cur_ = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;    size_ = 0;</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;  }</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;};</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;<span class="comment">// This is a minimal replication of std::vector&lt;uint8_t&gt; functionality,</span></div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;<span class="comment">// except growing from higher to lower addresses. i.e push_back() inserts data</span></div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;<span class="comment">// in the lowest address in the vector.</span></div>
+<div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1vector__downward.html">  506</a></span>&#160;<span class="keyword">class </span><a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> {</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;  <span class="keyword">explicit</span> <a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a>(<span class="keywordtype">size_t</span> initial_size = 1024,</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;                           <a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> *allocator = <span class="keyword">nullptr</span>,</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;                           <span class="keywordtype">bool</span> own_allocator = <span class="keyword">false</span>)</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;    : allocator_(allocator ? allocator : &amp;DefaultAllocator::instance()),</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;      own_allocator_(own_allocator), initial_size_(initial_size), reserved_(0),</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;      buf_(<span class="keyword">nullptr</span>), cur_(<span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;    assert(allocator_);</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;  }</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;  ~<a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a>() {</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;    <span class="keywordflow">if</span> (buf_) {</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;      assert(allocator_);</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;      allocator_-&gt;deallocate(buf_, reserved_);</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;    }</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;    <span class="keywordflow">if</span> (own_allocator_ &amp;&amp; allocator_) {</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;      <span class="keyword">delete</span> allocator_;</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;    }</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;  }</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;  <span class="keywordtype">void</span> reset() {</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;    <span class="keywordflow">if</span> (buf_) {</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;      assert(allocator_);</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;      allocator_-&gt;deallocate(buf_, reserved_);</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;    }</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;    reserved_ = 0;</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;    buf_ = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;    cur_ = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;  }</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;  <span class="keywordtype">void</span> clear() {</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;    <span class="keywordflow">if</span> (buf_) {</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;      cur_ = buf_ + reserved_;</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;    } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;      reserved_ = 0;</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;      buf_ = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;      cur_ = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;    }</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;  }</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;  <span class="comment">// Relinquish the pointer to the caller.</span></div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;  <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> release() {</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;    <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> fb(allocator_, own_allocator_, buf_, reserved_, cur_,</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;                      size());</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;    allocator_ = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;    own_allocator_ = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;    reserved_ = 0;</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;    buf_ = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;    cur_ = <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;    <span class="keywordflow">return</span> fb;</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;  }</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;  <span class="keywordtype">size_t</span> growth_policy(<span class="keywordtype">size_t</span> bytes) {</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;    <span class="keywordflow">return</span> (bytes == 0) ? initial_size_</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;                        : ((bytes / 2) &amp; ~(AlignOf&lt;largest_scalar_t&gt;() - 1));</div>
 <div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;  }</div>
 <div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;  <span class="comment">// Relinquish the pointer to the caller.</span></div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;  <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> release() {</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;    <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> fb(allocator_, own_allocator_, buf_, reserved_, cur_,</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;                      size());</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;    allocator_ = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;    own_allocator_ = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;    reserved_ = 0;</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;    buf_ = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;    cur_ = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;    <span class="keywordflow">return</span> fb;</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;  uint8_t *make_space(<span class="keywordtype">size_t</span> len) {</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;    assert(cur_ &gt;= buf_);</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;    <span class="keywordflow">if</span> (len &gt; static_cast&lt;size_t&gt;(cur_ - buf_)) {</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;      reallocate(len);</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;    }</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;    cur_ -= len;</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;    <span class="comment">// Beyond this, signed offsets may not have enough range:</span></div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;    <span class="comment">// (FlatBuffers &gt; 2GB not supported).</span></div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;    assert(size() &lt; FLATBUFFERS_MAX_BUFFER_SIZE);</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;    <span class="keywordflow">return</span> cur_;</div>
 <div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;  }</div>
 <div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;</div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;  <span class="keywordtype">size_t</span> growth_policy(<span class="keywordtype">size_t</span> bytes) {</div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;    <span class="keywordflow">return</span> (bytes == 0) ? initial_size_</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;                        : ((bytes / 2) &amp; ~(AlignOf&lt;largest_scalar_t&gt;() - 1));</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;  }</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;  uint8_t *make_space(<span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;    assert(cur_ &gt;= buf_);</div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;    <span class="keywordflow">if</span> (len &gt; static_cast&lt;size_t&gt;(cur_ - buf_)) {</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;      reallocate(len);</div>
-<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;    }</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;    cur_ -= len;</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;    <span class="comment">// Beyond this, signed offsets may not have enough range:</span></div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;    <span class="comment">// (FlatBuffers &gt; 2GB not supported).</span></div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;    assert(size() &lt; FLATBUFFERS_MAX_BUFFER_SIZE);</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;    <span class="keywordflow">return</span> cur_;</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;  }</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;  <a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> &amp;get_allocator() { <span class="keywordflow">return</span> *allocator_; }</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;  uoffset_t size()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>uoffset_t<span class="keyword">&gt;</span>(reserved_ - (cur_ - buf_));</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;  }</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;  <span class="keywordtype">size_t</span> capacity()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;    <span class="keywordflow">return</span> reserved_;</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;  <a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> &amp;get_allocator() { <span class="keywordflow">return</span> *allocator_; }</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;  uoffset_t size()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>uoffset_t<span class="keyword">&gt;</span>(reserved_ - (cur_ - buf_));</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;  }</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;  <span class="keywordtype">size_t</span> capacity()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;    <span class="keywordflow">return</span> reserved_;</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;  }</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;  uint8_t *buf()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;    assert(buf_);</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;    <span class="keywordflow">return</span> buf_;</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;  }</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;  uint8_t *data()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;    assert(cur_);</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;    <span class="keywordflow">return</span> cur_;</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;  }</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;  uint8_t *data_at(<span class="keywordtype">size_t</span> offset)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> buf_ + reserved_ - offset; }</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;  <span class="keywordtype">void</span> push(<span class="keyword">const</span> uint8_t *bytes, <span class="keywordtype">size_t</span> num) {</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;    <span class="keyword">auto</span> dest = make_space(num);</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;    memcpy(dest, bytes, num);</div>
 <div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;  }</div>
 <div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;  uint8_t *buf()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;    assert(buf_);</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;    <span class="keywordflow">return</span> buf_;</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;  }</div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;</div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;  uint8_t *data()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;    assert(cur_);</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;    <span class="keywordflow">return</span> cur_;</div>
-<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;  }</div>
-<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;  uint8_t *data_at(<span class="keywordtype">size_t</span> offset)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> buf_ + reserved_ - offset; }</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;</div>
-<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;  <span class="keywordtype">void</span> push(<span class="keyword">const</span> uint8_t *bytes, <span class="keywordtype">size_t</span> num) {</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;    <span class="keyword">auto</span> dest = make_space(num);</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;    memcpy(dest, bytes, num);</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;  }</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;</div>
-<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;  <span class="comment">// Specialized version of push() that avoids memcpy call for small data.</span></div>
-<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> push_small(<span class="keyword">const</span> T&amp; little_endian_t) {</div>
-<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;    <span class="keyword">auto</span> dest = make_space(<span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;    *<span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(dest) = little_endian_t;</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;  }</div>
-<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;  <span class="comment">// fill() is most frequently called with small byte counts (&lt;= 4),</span></div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;  <span class="comment">// which is why we&#39;re using loops rather than calling memset.</span></div>
-<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;  <span class="keywordtype">void</span> fill(<span class="keywordtype">size_t</span> zero_pad_bytes) {</div>
-<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;    <span class="keyword">auto</span> dest = make_space(zero_pad_bytes);</div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; zero_pad_bytes; i++) dest[i] = 0;</div>
-<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;  }</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;</div>
-<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;  <span class="comment">// Version for when we know the size is larger.</span></div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;  <span class="keywordtype">void</span> fill_big(<span class="keywordtype">size_t</span> zero_pad_bytes) {</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;    <span class="keyword">auto</span> dest = make_space(zero_pad_bytes);</div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;    memset(dest, 0, zero_pad_bytes);</div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;  }</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;  <span class="keywordtype">void</span> pop(<span class="keywordtype">size_t</span> bytes_to_remove) { cur_ += bytes_to_remove; }</div>
-<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;  <span class="comment">// You shouldn&#39;t really be copying instances of this class.</span></div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;  FLATBUFFERS_DELETE_FUNC(<a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a>(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> &amp;))</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;  FLATBUFFERS_DELETE_FUNC(<a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> &amp;<span class="keyword">operator</span>=(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> &amp;))</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;  <a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> *allocator_;</div>
-<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;  <span class="keywordtype">bool</span> own_allocator_;</div>
-<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;  <span class="keywordtype">size_t</span> initial_size_;</div>
-<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;  <span class="keywordtype">size_t</span> reserved_;</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;  uint8_t *buf_;</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;  uint8_t *cur_;  <span class="comment">// Points at location between empty (below) and used (above).</span></div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;  <span class="keywordtype">void</span> reallocate(<span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;    assert(allocator_);</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;    <span class="keyword">auto</span> old_reserved = reserved_;</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;    <span class="keyword">auto</span> old_size = size();</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;    reserved_ += (std::max)(len, growth_policy(old_reserved));</div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;    FLATBUFFERS_CONSTEXPR <span class="keywordtype">size_t</span> alignment = AlignOf&lt;largest_scalar_t&gt;();</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;    reserved_ = (reserved_ + alignment - 1) &amp; ~(alignment - 1);</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;    <span class="keywordflow">if</span> (buf_) {</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;      buf_ = allocator_-&gt;reallocate_downward(buf_, old_reserved, reserved_);</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;    } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;      buf_ = allocator_-&gt;allocate(reserved_);</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;    }</div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;    cur_ = buf_ + reserved_ - old_size;</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;  }</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;};</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;<span class="comment">// Converts a Field ID to a virtual table offset.</span></div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;<span class="keyword">inline</span> voffset_t FieldIndexToOffset(voffset_t field_id) {</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;  <span class="comment">// Should correspond to what EndTable() below builds up.</span></div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">int</span> fixed_fields = 2;  <span class="comment">// Vtable size and Object Size.</span></div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>voffset_t<span class="keyword">&gt;</span>((field_id + fixed_fields) * <span class="keyword">sizeof</span>(voffset_t));</div>
-<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;}</div>
-<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;</div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">const</span> T* data(<span class="keyword">const</span> std::vector&lt;T&gt; &amp;v) {</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;  <span class="keywordflow">return</span> v.empty() ? <span class="keyword">nullptr</span> : &amp;v.front();</div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;}</div>
-<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; T* data(std::vector&lt;T&gt; &amp;v) {</div>
-<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;  <span class="keywordflow">return</span> v.empty() ? <span class="keyword">nullptr</span> : &amp;v.front();</div>
-<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;}</div>
-<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;<span class="comment">/// @endcond</span></div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;<span class="comment">/// @addtogroup flatbuffers_cpp_api</span></div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;<span class="comment">/// @{</span></div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;<span class="comment">/// @class FlatBufferBuilder</span></div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;<span class="comment">/// @brief Helper class to hold data needed in creation of a FlatBuffer.</span></div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;<span class="comment">/// To serialize data, you typically call one of the `Create*()` functions in</span></div>
-<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;<span class="comment">/// the generated code, which in turn call a sequence of `StartTable`/</span></div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;<span class="comment">/// `PushElement`/`AddElement`/`EndTable`, or the builtin `CreateString`/</span></div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;<span class="comment">/// `CreateVector` functions. Do this is depth-first order to build up a tree to</span></div>
-<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;<span class="comment">/// the root. `Finish()` wraps up the buffer ready for transport.</span></div>
-<div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html">  694</a></span>&#160;<span class="comment"></span><span class="keyword">class </span><a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a></div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;{</div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;<span class="comment">  /// @brief Default constructor for FlatBufferBuilder.</span></div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;<span class="comment">  /// @param[in] initial_size The initial size of the buffer, in bytes. Defaults</span></div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;<span class="comment">  /// to `1024`.</span></div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;<span class="comment">  /// @param[in] allocator An `Allocator` to use. Defaults to a new instance of</span></div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;<span class="comment">  /// a `DefaultAllocator`.</span></div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;<span class="comment">  /// @param[in] own_allocator Whether the builder/vector should own the</span></div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;<span class="comment">  /// allocator. Defaults to / `false`.</span></div>
-<div class="line"><a name="l00704"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4">  704</a></span>&#160;<span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4">FlatBufferBuilder</a>(<span class="keywordtype">size_t</span> initial_size = 1024,</div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;                             <a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> *allocator = <span class="keyword">nullptr</span>,</div>
-<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;                             <span class="keywordtype">bool</span> own_allocator = <span class="keyword">false</span>)</div>
-<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;    : buf_(initial_size, allocator, own_allocator), nested(false),</div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;      finished(false), minalign_(1), force_defaults_(false),</div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;      dedup_vtables_(true), string_pool(nullptr) {</div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;    offsetbuf_.reserve(16);  <span class="comment">// Avoid first few reallocs.</span></div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;    vtables_.reserve(16);</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;    EndianCheck();</div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;  }</div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;</div>
-<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;  ~<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a>() {</div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;    <span class="keywordflow">if</span> (string_pool) <span class="keyword">delete</span> string_pool;</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;  <span class="comment">// Specialized version of push() that avoids memcpy call for small data.</span></div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> push_small(<span class="keyword">const</span> T&amp; little_endian_t) {</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;    <span class="keyword">auto</span> dest = make_space(<span class="keyword">sizeof</span>(T));</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;    *<span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(dest) = little_endian_t;</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;  }</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;  <span class="comment">// fill() is most frequently called with small byte counts (&lt;= 4),</span></div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;  <span class="comment">// which is why we&#39;re using loops rather than calling memset.</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;  <span class="keywordtype">void</span> fill(<span class="keywordtype">size_t</span> zero_pad_bytes) {</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;    <span class="keyword">auto</span> dest = make_space(zero_pad_bytes);</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; zero_pad_bytes; i++) dest[i] = 0;</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;  }</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;  <span class="comment">// Version for when we know the size is larger.</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;  <span class="keywordtype">void</span> fill_big(<span class="keywordtype">size_t</span> zero_pad_bytes) {</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;    <span class="keyword">auto</span> dest = make_space(zero_pad_bytes);</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;    memset(dest, 0, zero_pad_bytes);</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;  }</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;  <span class="keywordtype">void</span> pop(<span class="keywordtype">size_t</span> bytes_to_remove) { cur_ += bytes_to_remove; }</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;  <span class="comment">// You shouldn&#39;t really be copying instances of this class.</span></div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;  FLATBUFFERS_DELETE_FUNC(<a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a>(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> &amp;))</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;  FLATBUFFERS_DELETE_FUNC(<a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> &amp;<span class="keyword">operator</span>=(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> &amp;))</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;  <a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> *allocator_;</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;  <span class="keywordtype">bool</span> own_allocator_;</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;  <span class="keywordtype">size_t</span> initial_size_;</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;  <span class="keywordtype">size_t</span> reserved_;</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;  uint8_t *buf_;</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;  uint8_t *cur_;  <span class="comment">// Points at location between empty (below) and used (above).</span></div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;  <span class="keywordtype">void</span> reallocate(<span class="keywordtype">size_t</span> len) {</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;    assert(allocator_);</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;    <span class="keyword">auto</span> old_reserved = reserved_;</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;    <span class="keyword">auto</span> old_size = size();</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;    reserved_ += (std::max)(len, growth_policy(old_reserved));</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;    FLATBUFFERS_CONSTEXPR <span class="keywordtype">size_t</span> alignment = AlignOf&lt;largest_scalar_t&gt;();</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;    reserved_ = (reserved_ + alignment - 1) &amp; ~(alignment - 1);</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;    <span class="keywordflow">if</span> (buf_) {</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;      buf_ = allocator_-&gt;reallocate_downward(buf_, old_reserved, reserved_);</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;    } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;      buf_ = allocator_-&gt;allocate(reserved_);</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;    }</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;    cur_ = buf_ + reserved_ - old_size;</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;  }</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;};</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;<span class="comment">// Converts a Field ID to a virtual table offset.</span></div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;<span class="keyword">inline</span> voffset_t FieldIndexToOffset(voffset_t field_id) {</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;  <span class="comment">// Should correspond to what EndTable() below builds up.</span></div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">int</span> fixed_fields = 2;  <span class="comment">// Vtable size and Object Size.</span></div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>voffset_t<span class="keyword">&gt;</span>((field_id + fixed_fields) * <span class="keyword">sizeof</span>(voffset_t));</div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;}</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">const</span> T* data(<span class="keyword">const</span> std::vector&lt;T&gt; &amp;v) {</div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;  <span class="keywordflow">return</span> v.empty() ? <span class="keyword">nullptr</span> : &amp;v.front();</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;}</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; T* data(std::vector&lt;T&gt; &amp;v) {</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;  <span class="keywordflow">return</span> v.empty() ? <span class="keyword">nullptr</span> : &amp;v.front();</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;}</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;<span class="comment">/// @endcond</span></div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;<span class="comment"></span><span class="comment"></span></div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;<span class="comment">/// @addtogroup flatbuffers_cpp_api</span></div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;<span class="comment">/// @{</span></div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;<span class="comment">/// @class FlatBufferBuilder</span></div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;<span class="comment">/// @brief Helper class to hold data needed in creation of a FlatBuffer.</span></div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;<span class="comment">/// To serialize data, you typically call one of the `Create*()` functions in</span></div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;<span class="comment">/// the generated code, which in turn call a sequence of `StartTable`/</span></div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;<span class="comment">/// `PushElement`/`AddElement`/`EndTable`, or the builtin `CreateString`/</span></div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;<span class="comment">/// `CreateVector` functions. Do this is depth-first order to build up a tree to</span></div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;<span class="comment">/// the root. `Finish()` wraps up the buffer ready for transport.</span></div>
+<div class="line"><a name="l00677"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html">  677</a></span>&#160;<span class="comment"></span><span class="keyword">class </span><a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a></div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;{</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;<span class="comment">  /// @brief Default constructor for FlatBufferBuilder.</span></div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;<span class="comment">  /// @param[in] initial_size The initial size of the buffer, in bytes. Defaults</span></div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;<span class="comment">  /// to `1024`.</span></div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;<span class="comment">  /// @param[in] allocator An `Allocator` to use. Defaults to a new instance of</span></div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;<span class="comment">  /// a `DefaultAllocator`.</span></div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;<span class="comment">  /// @param[in] own_allocator Whether the builder/vector should own the</span></div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;<span class="comment">  /// allocator. Defaults to / `false`.</span></div>
+<div class="line"><a name="l00687"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4">  687</a></span>&#160;<span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4">FlatBufferBuilder</a>(<span class="keywordtype">size_t</span> initial_size = 1024,</div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;                             <a class="code" href="classflatbuffers_1_1_allocator.html">Allocator</a> *allocator = <span class="keyword">nullptr</span>,</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;                             <span class="keywordtype">bool</span> own_allocator = <span class="keyword">false</span>)</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;    : buf_(initial_size, allocator, own_allocator), max_voffset_(0),</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;      nested(false), finished(false), minalign_(1), force_defaults_(false),</div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;      dedup_vtables_(true), string_pool(nullptr) {</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;    offsetbuf_.reserve(16);  <span class="comment">// Avoid first few reallocs.</span></div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;    vtables_.reserve(16);</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;    EndianCheck();</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;  }</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;  ~<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a>() {</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;    <span class="keywordflow">if</span> (string_pool) <span class="keyword">delete</span> string_pool;</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;  }</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;  <span class="keywordtype">void</span> Reset() {</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;    <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412">Clear</a>();  <span class="comment">// clear builder state</span></div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;    buf_.reset();  <span class="comment">// deallocate buffer</span></div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;  }</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;<span class="comment">  /// @brief Reset all the state in this FlatBufferBuilder so it can be reused</span></div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;<span class="comment">  /// to construct another buffer.</span></div>
+<div class="line"><a name="l00709"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412">  709</a></span>&#160;<span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412">Clear</a>() {</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;    buf_.clear();</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;    ClearOffsets();</div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;    nested = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;    finished = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;    vtables_.clear();</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;    minalign_ = 1;</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;    <span class="keywordflow">if</span> (string_pool) string_pool-&gt;clear();</div>
 <div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;  }</div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;</div>
-<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;  <span class="keywordtype">void</span> Reset() {</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;    <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412">Clear</a>();  <span class="comment">// clear builder state</span></div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;    buf_.reset();  <span class="comment">// deallocate buffer</span></div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;  }</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;<span class="comment">  /// @brief Reset all the state in this FlatBufferBuilder so it can be reused</span></div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;<span class="comment">  /// to construct another buffer.</span></div>
-<div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412">  726</a></span>&#160;<span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412">Clear</a>() {</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;    buf_.clear();</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;    offsetbuf_.clear();</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;    nested = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;    finished = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;    vtables_.clear();</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;    minalign_ = 1;</div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;    <span class="keywordflow">if</span> (string_pool) string_pool-&gt;clear();</div>
-<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;  }</div>
-<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;<span class="comment">  /// @brief The current size of the serialized buffer, counting from the end.</span></div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;<span class="comment">  /// @return Returns an `uoffset_t` with the current size of the buffer.</span></div>
-<div class="line"><a name="l00738"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">  738</a></span>&#160;<span class="comment"></span>  uoffset_t <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> buf_.size(); }</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;<span class="comment">  /// @brief Get the serialized buffer (after you call `Finish()`).</span></div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;<span class="comment">  /// @return Returns an `uint8_t` pointer to the FlatBuffer data inside the</span></div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;<span class="comment">  /// buffer.</span></div>
-<div class="line"><a name="l00743"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a8dc35f792179df4ca850492c1796d8b8">  743</a></span>&#160;<span class="comment"></span>  uint8_t *<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a8dc35f792179df4ca850492c1796d8b8">GetBufferPointer</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;    Finished();</div>
-<div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;    <span class="keywordflow">return</span> buf_.data();</div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;  }</div>
-<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;<span class="comment">  /// @brief Get a pointer to an unfinished buffer.</span></div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;<span class="comment">  /// @return Returns a `uint8_t` pointer to the unfinished buffer.</span></div>
-<div class="line"><a name="l00750"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a3f4252e9bc005ba6c700469544fdccc9">  750</a></span>&#160;<span class="comment"></span>  uint8_t *<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a3f4252e9bc005ba6c700469544fdccc9">GetCurrentBufferPointer</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> buf_.data(); }</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;<span class="comment">  /// @brief The current size of the serialized buffer, counting from the end.</span></div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;<span class="comment">  /// @return Returns an `uoffset_t` with the current size of the buffer.</span></div>
+<div class="line"><a name="l00721"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">  721</a></span>&#160;<span class="comment"></span>  uoffset_t <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> buf_.size(); }</div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;<span class="comment">  /// @brief Get the serialized buffer (after you call `Finish()`).</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;<span class="comment">  /// @return Returns an `uint8_t` pointer to the FlatBuffer data inside the</span></div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;<span class="comment">  /// buffer.</span></div>
+<div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a8dc35f792179df4ca850492c1796d8b8">  726</a></span>&#160;<span class="comment"></span>  uint8_t *<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a8dc35f792179df4ca850492c1796d8b8">GetBufferPointer</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;    Finished();</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;    <span class="keywordflow">return</span> buf_.data();</div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;  }</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;<span class="comment">  /// @brief Get a pointer to an unfinished buffer.</span></div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;<span class="comment">  /// @return Returns a `uint8_t` pointer to the unfinished buffer.</span></div>
+<div class="line"><a name="l00733"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a3f4252e9bc005ba6c700469544fdccc9">  733</a></span>&#160;<span class="comment"></span>  uint8_t *<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a3f4252e9bc005ba6c700469544fdccc9">GetCurrentBufferPointer</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> buf_.data(); }</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;<span class="comment">  /// @brief Get the released pointer to the serialized buffer.</span></div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;<span class="comment">  /// @warning Do NOT attempt to use this FlatBufferBuilder afterwards!</span></div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;<span class="comment">  /// @return A `FlatBuffer` that owns the buffer and its allocator and</span></div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;<span class="comment">  /// behaves similar to a `unique_ptr` with a deleter.</span></div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;<span class="comment">  /// Deprecated: use Release() instead</span></div>
+<div class="line"><a name="l00740"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8">  740</a></span>&#160;<span class="comment"></span>  <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8">ReleaseBufferPointer</a>() {</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;    Finished();</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;    <span class="keywordflow">return</span> buf_.release();</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;  }</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;<span class="comment">  /// @brief Get the released DetachedBuffer.</span></div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;<span class="comment">  /// @return A `DetachedBuffer` that owns the buffer and its allocator.</span></div>
+<div class="line"><a name="l00747"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45">  747</a></span>&#160;<span class="comment"></span>  <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45">Release</a>() {</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;    Finished();</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;    <span class="keywordflow">return</span> buf_.release();</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;  }</div>
 <div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;<span class="comment">  /// @brief Get the released pointer to the serialized buffer.</span></div>
-<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;<span class="comment">  /// @warning Do NOT attempt to use this FlatBufferBuilder afterwards!</span></div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;<span class="comment">  /// @return A `FlatBuffer` that owns the buffer and its allocator and</span></div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;<span class="comment">  /// behaves similar to a `unique_ptr` with a deleter.</span></div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;<span class="comment">  /// Deprecated: use Release() instead</span></div>
-<div class="line"><a name="l00757"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8">  757</a></span>&#160;<span class="comment"></span>  <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8">ReleaseBufferPointer</a>() {</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;<span class="comment">  /// @brief get the minimum alignment this buffer needs to be accessed</span></div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;<span class="comment">  /// properly. This is only known once all elements have been written (after</span></div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;<span class="comment">  /// you call Finish()). You can use this information if you need to embed</span></div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;<span class="comment">  /// a FlatBuffer in some other buffer, such that you can later read it</span></div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;<span class="comment">  /// without first having to copy it into its own buffer.</span></div>
+<div class="line"><a name="l00757"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#aa1ebce1f3f46832946a95952af1e9c2b">  757</a></span>&#160;<span class="comment"></span>  <span class="keywordtype">size_t</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aa1ebce1f3f46832946a95952af1e9c2b">GetBufferMinAlignment</a>() {</div>
 <div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;    Finished();</div>
-<div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;    <span class="keywordflow">return</span> buf_.release();</div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;    <span class="keywordflow">return</span> minalign_;</div>
 <div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;  }</div>
 <div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;<span class="comment">  /// @brief Get the released DetachedBuffer.</span></div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;<span class="comment">  /// @return A `DetachedBuffer` that owns the buffer and its allocator.</span></div>
-<div class="line"><a name="l00764"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45">  764</a></span>&#160;<span class="comment"></span>  <a class="code" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45">Release</a>() {</div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;    Finished();</div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;    <span class="keywordflow">return</span> buf_.release();</div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;  }</div>
-<div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;<span class="comment">  /// @brief get the minimum alignment this buffer needs to be accessed</span></div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;<span class="comment">  /// properly. This is only known once all elements have been written (after</span></div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;<span class="comment">  /// you call Finish()). You can use this information if you need to embed</span></div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;<span class="comment">  /// a FlatBuffer in some other buffer, such that you can later read it</span></div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;<span class="comment">  /// without first having to copy it into its own buffer.</span></div>
-<div class="line"><a name="l00774"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#aa1ebce1f3f46832946a95952af1e9c2b">  774</a></span>&#160;<span class="comment"></span>  <span class="keywordtype">size_t</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aa1ebce1f3f46832946a95952af1e9c2b">GetBufferMinAlignment</a>() {</div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;    Finished();</div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;    <span class="keywordflow">return</span> minalign_;</div>
-<div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;  }</div>
-<div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;<span class="comment"></span>  <span class="keywordtype">void</span> Finished()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;    <span class="comment">// If you get this assert, you&#39;re attempting to get access a buffer</span></div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;    <span class="comment">// which hasn&#39;t been finished yet. Be sure to call</span></div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;    <span class="comment">// FlatBufferBuilder::Finish with your root table.</span></div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;    <span class="comment">// If you really need to access an unfinished buffer, call</span></div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;    <span class="comment">// GetCurrentBufferPointer instead.</span></div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;    assert(finished);</div>
-<div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;  }<span class="comment"></span></div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;<span class="comment">  /// @endcond</span></div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;<span class="comment">  /// @brief In order to save space, fields that are set to their default value</span></div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;<span class="comment">  /// don&#39;t get serialized into the buffer.</span></div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;<span class="comment">  /// @param[in] bool fd When set to `true`, always serializes default values.</span></div>
-<div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a">  793</a></span>&#160;<span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a">ForceDefaults</a>(<span class="keywordtype">bool</span> fd) { force_defaults_ = fd; }</div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;<span class="comment">  /// @brief By default vtables are deduped in order to save space.</span></div>
-<div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;<span class="comment">  /// @param[in] bool dedup When set to `true`, dedup vtables.</span></div>
-<div class="line"><a name="l00797"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961">  797</a></span>&#160;<span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961">DedupVtables</a>(<span class="keywordtype">bool</span> dedup) { dedup_vtables_ = dedup; }</div>
-<div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;<span class="comment"></span>  <span class="keywordtype">void</span> Pad(<span class="keywordtype">size_t</span> num_bytes) { buf_.fill(num_bytes); }</div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;</div>
-<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;  <span class="keywordtype">void</span> Align(<span class="keywordtype">size_t</span> elem_size) {</div>
-<div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;    <span class="keywordflow">if</span> (elem_size &gt; minalign_) minalign_ = elem_size;</div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;    buf_.fill(PaddingBytes(buf_.size(), elem_size));</div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;  }</div>
-<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;</div>
-<div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;  <span class="keywordtype">void</span> PushFlatBuffer(<span class="keyword">const</span> uint8_t *bytes, <span class="keywordtype">size_t</span> size) {</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;    PushBytes(bytes, size);</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;    finished = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;  }</div>
-<div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;</div>
-<div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;  <span class="keywordtype">void</span> PushBytes(<span class="keyword">const</span> uint8_t *bytes, <span class="keywordtype">size_t</span> size) {</div>
-<div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;    buf_.push(bytes, size);</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;  }</div>
-<div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;</div>
-<div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;  <span class="keywordtype">void</span> PopBytes(<span class="keywordtype">size_t</span> amount) { buf_.pop(amount); }</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;</div>
-<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> AssertScalarT() {</div>
-<div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;<span class="preprocessor">    #ifndef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;    <span class="comment">// The code assumes power of 2 sizes and endian-swap-ability.</span></div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;    static_assert(std::is_scalar&lt;T&gt;::value, <span class="stringliteral">&quot;T must be a scalar type&quot;</span>);</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;<span class="preprocessor">    #endif</span></div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;  }</div>
-<div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;</div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;  <span class="comment">// Write a single aligned scalar to the buffer</span></div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; uoffset_t PushElement(T element) {</div>
-<div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;    AssertScalarT&lt;T&gt;();</div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;    T litle_endian_element = EndianScalar(element);</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;    Align(<span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;    buf_.push_small(litle_endian_element);</div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>();</div>
-<div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;  }</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; uoffset_t PushElement(Offset&lt;T&gt; off) {</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;    <span class="comment">// Special case for offsets: see ReferTo below.</span></div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;    <span class="keywordflow">return</span> PushElement(ReferTo(off.o));</div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;  }</div>
-<div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;  <span class="comment">// When writing fields, we track where they are, so we can create correct</span></div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;  <span class="comment">// vtables later.</span></div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;  <span class="keywordtype">void</span> TrackField(voffset_t field, uoffset_t off) {</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;    FieldLoc fl = { off, field };</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;    offsetbuf_.push_back(fl);</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;  }</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;  <span class="comment">// Like PushElement, but additionally tracks the field this represents.</span></div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> AddElement(voffset_t field, T e, T def) {</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;    <span class="comment">// We don&#39;t serialize values equal to the default.</span></div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;    <span class="keywordflow">if</span> (e == def &amp;&amp; !force_defaults_) <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;    <span class="keyword">auto</span> off = PushElement(e);</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;    TrackField(field, off);</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;  }</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;</div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> AddOffset(voffset_t field, Offset&lt;T&gt; off) {</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;    <span class="keywordflow">if</span> (off.IsNull()) <span class="keywordflow">return</span>;  <span class="comment">// Don&#39;t store.</span></div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;    AddElement(field, ReferTo(off.o), static_cast&lt;uoffset_t&gt;(0));</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;  }</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;</div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> AddStruct(voffset_t field, <span class="keyword">const</span> T *structptr) {</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;    <span class="keywordflow">if</span> (!structptr) <span class="keywordflow">return</span>;  <span class="comment">// Default, don&#39;t store.</span></div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;    Align(AlignOf&lt;T&gt;());</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;    buf_.push_small(*structptr);</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;    TrackField(field, <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>());</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;  }</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;  <span class="keywordtype">void</span> AddStructOffset(voffset_t field, uoffset_t off) {</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;    TrackField(field, off);</div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;  }</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;  <span class="comment">// Offsets initially are relative to the end of the buffer (downwards).</span></div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;  <span class="comment">// This function converts them to be relative to the current location</span></div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;  <span class="comment">// in the buffer (when stored here), pointing upwards.</span></div>
-<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;  uoffset_t ReferTo(uoffset_t off) {</div>
-<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;    <span class="comment">// Align to ensure GetSize() below is correct.</span></div>
-<div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;    Align(<span class="keyword">sizeof</span>(uoffset_t));</div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;    <span class="comment">// Offset must refer to something already in buffer.</span></div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;    assert(off &amp;&amp; off &lt;= <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>());</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>() - off + <span class="keyword">static_cast&lt;</span>uoffset_t<span class="keyword">&gt;</span>(<span class="keyword">sizeof</span>(uoffset_t));</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;  }</div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;  <span class="keywordtype">void</span> NotNested() {</div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;    <span class="comment">// If you hit this, you&#39;re trying to construct a Table/Vector/String</span></div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;    <span class="comment">// during the construction of its parent table (between the MyTableBuilder</span></div>
-<div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;    <span class="comment">// and table.Finish().</span></div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;    <span class="comment">// Move the creation of these sub-objects to above the MyTableBuilder to</span></div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;    <span class="comment">// not get this assert.</span></div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;    <span class="comment">// Ignoring this assert may appear to work in simple cases, but the reason</span></div>
-<div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;    <span class="comment">// it is here is that storing objects in-line may cause vtable offsets</span></div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;    <span class="comment">// to not fit anymore. It also leads to vtable duplication.</span></div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;    assert(!nested);</div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;  }</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;  <span class="comment">// From generated code (or from the parser), we call StartTable/EndTable</span></div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;  <span class="comment">// with a sequence of AddElement calls in between.</span></div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;  uoffset_t StartTable() {</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;    NotNested();</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;    nested = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>();</div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;  }</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;  <span class="comment">// This finishes one serialized object by generating the vtable if it&#39;s a</span></div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;  <span class="comment">// table, comparing it against existing vtables, and writing the</span></div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;  <span class="comment">// resulting vtable offset.</span></div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;  uoffset_t EndTable(uoffset_t start, voffset_t numfields) {</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;    <span class="comment">// If you get this assert, a corresponding StartTable wasn&#39;t called.</span></div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;    assert(nested);</div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;    <span class="comment">// Write the vtable offset, which is the start of any Table.</span></div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;    <span class="comment">// We fill it&#39;s value later.</span></div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;    <span class="keyword">auto</span> vtableoffsetloc = PushElement&lt;soffset_t&gt;(0);</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;    <span class="comment">// Write a vtable, which consists entirely of voffset_t elements.</span></div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;    <span class="comment">// It starts with the number of offsets, followed by a type id, followed</span></div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;    <span class="comment">// by the offsets themselves. In reverse:</span></div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;    buf_.fill_big(numfields * <span class="keyword">sizeof</span>(voffset_t));</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;    <span class="keyword">auto</span> table_object_size = vtableoffsetloc - start;</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;    assert(table_object_size &lt; 0x10000);  <span class="comment">// Vtable use 16bit offsets.</span></div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;    PushElement&lt;voffset_t&gt;(<span class="keyword">static_cast&lt;</span>voffset_t<span class="keyword">&gt;</span>(table_object_size));</div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;    PushElement&lt;voffset_t&gt;(FieldIndexToOffset(numfields));</div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;    <span class="comment">// Write the offsets into the table</span></div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> field_location = offsetbuf_.begin();</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;              field_location != offsetbuf_.end();</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;            ++field_location) {</div>
-<div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;      <span class="keyword">auto</span> pos = <span class="keyword">static_cast&lt;</span>voffset_t<span class="keyword">&gt;</span>(vtableoffsetloc - field_location-&gt;off);</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;      <span class="comment">// If this asserts, it means you&#39;ve set a field twice.</span></div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;      assert(!ReadScalar&lt;voffset_t&gt;(buf_.data() + field_location-&gt;id));</div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;      WriteScalar&lt;voffset_t&gt;(buf_.data() + field_location-&gt;id, pos);</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;    }</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;    offsetbuf_.clear();</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;    <span class="keyword">auto</span> vt1 = <span class="keyword">reinterpret_cast&lt;</span>voffset_t *<span class="keyword">&gt;</span>(buf_.data());</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;    <span class="keyword">auto</span> vt1_size = ReadScalar&lt;voffset_t&gt;(vt1);</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;    <span class="keyword">auto</span> vt_use = <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>();</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;    <span class="comment">// See if we already have generated a vtable with this exact same</span></div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;    <span class="comment">// layout before. If so, make it point to the old one, remove this one.</span></div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;    <span class="keywordflow">if</span> (dedup_vtables_) {</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = vtables_.begin(); it != vtables_.end(); ++it) {</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;        <span class="keyword">auto</span> vt2 = <span class="keyword">reinterpret_cast&lt;</span>voffset_t *<span class="keyword">&gt;</span>(buf_.data_at(*it));</div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;        <span class="keyword">auto</span> vt2_size = *vt2;</div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;        <span class="keywordflow">if</span> (vt1_size != vt2_size || memcmp(vt2, vt1, vt1_size)) <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;        vt_use = *it;</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;        buf_.pop(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>() - vtableoffsetloc);</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;        <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;      }</div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;    }</div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;    <span class="comment">// If this is a new vtable, remember it.</span></div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;    <span class="keywordflow">if</span> (vt_use == <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>()) {</div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;      vtables_.push_back(vt_use);</div>
-<div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;    }</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;    <span class="comment">// Fill the vtable offset we created above.</span></div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;    <span class="comment">// The offset points from the beginning of the object to where the</span></div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;    <span class="comment">// vtable is stored.</span></div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;    <span class="comment">// Offsets default direction is downward in memory for future format</span></div>
-<div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;    <span class="comment">// flexibility (storing all vtables at the start of the file).</span></div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;    WriteScalar(buf_.data_at(vtableoffsetloc),</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;                <span class="keyword">static_cast&lt;</span>soffset_t<span class="keyword">&gt;</span>(vt_use) -</div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;                  static_cast&lt;soffset_t&gt;(vtableoffsetloc));</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;    nested = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;    <span class="keywordflow">return</span> vtableoffsetloc;</div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;  }</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;  <span class="comment">// This checks a required field has been set in a given table that has</span></div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;  <span class="comment">// just been constructed.</span></div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> Required(Offset&lt;T&gt; table, voffset_t field) {</div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;    <span class="keyword">auto</span> table_ptr = buf_.data_at(table.o);</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;    <span class="keyword">auto</span> vtable_ptr = table_ptr - ReadScalar&lt;soffset_t&gt;(table_ptr);</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;    <span class="keywordtype">bool</span> ok = ReadScalar&lt;voffset_t&gt;(vtable_ptr + field) != 0;</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;    <span class="comment">// If this fails, the caller will show what field needs to be set.</span></div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;    assert(ok);</div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;    (void)ok;</div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;  }</div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;<span class="comment"></span>  <span class="keywordtype">void</span> Finished()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;    <span class="comment">// If you get this assert, you&#39;re attempting to get access a buffer</span></div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;    <span class="comment">// which hasn&#39;t been finished yet. Be sure to call</span></div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;    <span class="comment">// FlatBufferBuilder::Finish with your root table.</span></div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;    <span class="comment">// If you really need to access an unfinished buffer, call</span></div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;    <span class="comment">// GetCurrentBufferPointer instead.</span></div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;    assert(finished);</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;  }<span class="comment"></span></div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;<span class="comment">  /// @endcond</span></div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;<span class="comment"></span><span class="comment"></span></div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;<span class="comment">  /// @brief In order to save space, fields that are set to their default value</span></div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;<span class="comment">  /// don&#39;t get serialized into the buffer.</span></div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;<span class="comment">  /// @param[in] bool fd When set to `true`, always serializes default values.</span></div>
+<div class="line"><a name="l00776"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a">  776</a></span>&#160;<span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a">ForceDefaults</a>(<span class="keywordtype">bool</span> fd) { force_defaults_ = fd; }</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;<span class="comment">  /// @brief By default vtables are deduped in order to save space.</span></div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;<span class="comment">  /// @param[in] bool dedup When set to `true`, dedup vtables.</span></div>
+<div class="line"><a name="l00780"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961">  780</a></span>&#160;<span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961">DedupVtables</a>(<span class="keywordtype">bool</span> dedup) { dedup_vtables_ = dedup; }</div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;<span class="comment"></span>  <span class="keywordtype">void</span> Pad(<span class="keywordtype">size_t</span> num_bytes) { buf_.fill(num_bytes); }</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;</div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;  <span class="keywordtype">void</span> Align(<span class="keywordtype">size_t</span> elem_size) {</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;    <span class="keywordflow">if</span> (elem_size &gt; minalign_) minalign_ = elem_size;</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;    buf_.fill(PaddingBytes(buf_.size(), elem_size));</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;  }</div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;  <span class="keywordtype">void</span> PushFlatBuffer(<span class="keyword">const</span> uint8_t *bytes, <span class="keywordtype">size_t</span> size) {</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;    PushBytes(bytes, size);</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;    finished = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;  }</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;  <span class="keywordtype">void</span> PushBytes(<span class="keyword">const</span> uint8_t *bytes, <span class="keywordtype">size_t</span> size) {</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;    buf_.push(bytes, size);</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;  }</div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;</div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;  <span class="keywordtype">void</span> PopBytes(<span class="keywordtype">size_t</span> amount) { buf_.pop(amount); }</div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> AssertScalarT() {</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;    <span class="comment">// The code assumes power of 2 sizes and endian-swap-ability.</span></div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;    static_assert(flatbuffers::is_scalar&lt;T&gt;::value, <span class="stringliteral">&quot;T must be a scalar type&quot;</span>);</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;  }</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;  <span class="comment">// Write a single aligned scalar to the buffer</span></div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; uoffset_t PushElement(T element) {</div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;    AssertScalarT&lt;T&gt;();</div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;    T litle_endian_element = EndianScalar(element);</div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;    Align(<span class="keyword">sizeof</span>(T));</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;    buf_.push_small(litle_endian_element);</div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>();</div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;  }</div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;</div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; uoffset_t PushElement(Offset&lt;T&gt; off) {</div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;    <span class="comment">// Special case for offsets: see ReferTo below.</span></div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;    <span class="keywordflow">return</span> PushElement(ReferTo(off.o));</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;  }</div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;  <span class="comment">// When writing fields, we track where they are, so we can create correct</span></div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;  <span class="comment">// vtables later.</span></div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;  <span class="keywordtype">void</span> TrackField(voffset_t field, uoffset_t off) {</div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;    FieldLoc fl = { off, field };</div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;    offsetbuf_.push_back(fl);</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;    max_voffset_ = (std::max)(max_voffset_, field);</div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;  }</div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;  <span class="comment">// Like PushElement, but additionally tracks the field this represents.</span></div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> AddElement(voffset_t field, T e, T def) {</div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;    <span class="comment">// We don&#39;t serialize values equal to the default.</span></div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;    <span class="keywordflow">if</span> (e == def &amp;&amp; !force_defaults_) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;    <span class="keyword">auto</span> off = PushElement(e);</div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;    TrackField(field, off);</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;  }</div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> AddOffset(voffset_t field, Offset&lt;T&gt; off) {</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;    <span class="keywordflow">if</span> (off.IsNull()) <span class="keywordflow">return</span>;  <span class="comment">// Don&#39;t store.</span></div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;    AddElement(field, ReferTo(off.o), static_cast&lt;uoffset_t&gt;(0));</div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;  }</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> AddStruct(voffset_t field, <span class="keyword">const</span> T *structptr) {</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;    <span class="keywordflow">if</span> (!structptr) <span class="keywordflow">return</span>;  <span class="comment">// Default, don&#39;t store.</span></div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;    Align(AlignOf&lt;T&gt;());</div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;    buf_.push_small(*structptr);</div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;    TrackField(field, <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>());</div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;  }</div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;</div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;  <span class="keywordtype">void</span> AddStructOffset(voffset_t field, uoffset_t off) {</div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;    TrackField(field, off);</div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;  }</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;  <span class="comment">// Offsets initially are relative to the end of the buffer (downwards).</span></div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;  <span class="comment">// This function converts them to be relative to the current location</span></div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;  <span class="comment">// in the buffer (when stored here), pointing upwards.</span></div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;  uoffset_t ReferTo(uoffset_t off) {</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;    <span class="comment">// Align to ensure GetSize() below is correct.</span></div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;    Align(<span class="keyword">sizeof</span>(uoffset_t));</div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;    <span class="comment">// Offset must refer to something already in buffer.</span></div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;    assert(off &amp;&amp; off &lt;= <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>());</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>() - off + <span class="keyword">static_cast&lt;</span>uoffset_t<span class="keyword">&gt;</span>(<span class="keyword">sizeof</span>(uoffset_t));</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;  }</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;  <span class="keywordtype">void</span> NotNested() {</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;    <span class="comment">// If you hit this, you&#39;re trying to construct a Table/Vector/String</span></div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;    <span class="comment">// during the construction of its parent table (between the MyTableBuilder</span></div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;    <span class="comment">// and table.Finish().</span></div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;    <span class="comment">// Move the creation of these sub-objects to above the MyTableBuilder to</span></div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;    <span class="comment">// not get this assert.</span></div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;    <span class="comment">// Ignoring this assert may appear to work in simple cases, but the reason</span></div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;    <span class="comment">// it is here is that storing objects in-line may cause vtable offsets</span></div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;    <span class="comment">// to not fit anymore. It also leads to vtable duplication.</span></div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;    assert(!nested);</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;  }</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;</div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;  <span class="comment">// From generated code (or from the parser), we call StartTable/EndTable</span></div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;  <span class="comment">// with a sequence of AddElement calls in between.</span></div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;  uoffset_t StartTable() {</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;    NotNested();</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;    nested = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>();</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;  }</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;  <span class="comment">// This finishes one serialized object by generating the vtable if it&#39;s a</span></div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;  <span class="comment">// table, comparing it against existing vtables, and writing the</span></div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;  <span class="comment">// resulting vtable offset.</span></div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;  uoffset_t EndTable(uoffset_t start) {</div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;    <span class="comment">// If you get this assert, a corresponding StartTable wasn&#39;t called.</span></div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;    assert(nested);</div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;    <span class="comment">// Write the vtable offset, which is the start of any Table.</span></div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;    <span class="comment">// We fill it&#39;s value later.</span></div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;    <span class="keyword">auto</span> vtableoffsetloc = PushElement&lt;soffset_t&gt;(0);</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;    <span class="comment">// Write a vtable, which consists entirely of voffset_t elements.</span></div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;    <span class="comment">// It starts with the number of offsets, followed by a type id, followed</span></div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;    <span class="comment">// by the offsets themselves. In reverse:</span></div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;    <span class="comment">// Include space for the last offset and ensure empty tables have a</span></div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;    <span class="comment">// minimum size.</span></div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;    max_voffset_ = (std::max)(static_cast&lt;voffset_t&gt;(max_voffset_ +</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;                                                     <span class="keyword">sizeof</span>(voffset_t)),</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;                              FieldIndexToOffset(0));</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;    buf_.fill_big(max_voffset_);</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;    <span class="keyword">auto</span> table_object_size = vtableoffsetloc - start;</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;    assert(table_object_size &lt; 0x10000);  <span class="comment">// Vtable use 16bit offsets.</span></div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;    WriteScalar&lt;voffset_t&gt;(buf_.data() + <span class="keyword">sizeof</span>(voffset_t),</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;                           static_cast&lt;voffset_t&gt;(table_object_size));</div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;    WriteScalar&lt;voffset_t&gt;(buf_.data(), max_voffset_);</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;    <span class="comment">// Write the offsets into the table</span></div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> field_location = offsetbuf_.begin();</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;              field_location != offsetbuf_.end();</div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;            ++field_location) {</div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;      <span class="keyword">auto</span> pos = <span class="keyword">static_cast&lt;</span>voffset_t<span class="keyword">&gt;</span>(vtableoffsetloc - field_location-&gt;off);</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;      <span class="comment">// If this asserts, it means you&#39;ve set a field twice.</span></div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;      assert(!ReadScalar&lt;voffset_t&gt;(buf_.data() + field_location-&gt;id));</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;      WriteScalar&lt;voffset_t&gt;(buf_.data() + field_location-&gt;id, pos);</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;    }</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;    ClearOffsets();</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;    <span class="keyword">auto</span> vt1 = <span class="keyword">reinterpret_cast&lt;</span>voffset_t *<span class="keyword">&gt;</span>(buf_.data());</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;    <span class="keyword">auto</span> vt1_size = ReadScalar&lt;voffset_t&gt;(vt1);</div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;    <span class="keyword">auto</span> vt_use = <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>();</div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;    <span class="comment">// See if we already have generated a vtable with this exact same</span></div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;    <span class="comment">// layout before. If so, make it point to the old one, remove this one.</span></div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;    <span class="keywordflow">if</span> (dedup_vtables_) {</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = vtables_.begin(); it != vtables_.end(); ++it) {</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;        <span class="keyword">auto</span> vt2 = <span class="keyword">reinterpret_cast&lt;</span>voffset_t *<span class="keyword">&gt;</span>(buf_.data_at(*it));</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;        <span class="keyword">auto</span> vt2_size = *vt2;</div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;        <span class="keywordflow">if</span> (vt1_size != vt2_size || memcmp(vt2, vt1, vt1_size)) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;        vt_use = *it;</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;        buf_.pop(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>() - vtableoffsetloc);</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;        <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;      }</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;    }</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;    <span class="comment">// If this is a new vtable, remember it.</span></div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;    <span class="keywordflow">if</span> (vt_use == <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>()) {</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;      vtables_.push_back(vt_use);</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;    }</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;    <span class="comment">// Fill the vtable offset we created above.</span></div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;    <span class="comment">// The offset points from the beginning of the object to where the</span></div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;    <span class="comment">// vtable is stored.</span></div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;    <span class="comment">// Offsets default direction is downward in memory for future format</span></div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;    <span class="comment">// flexibility (storing all vtables at the start of the file).</span></div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;    WriteScalar(buf_.data_at(vtableoffsetloc),</div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;                <span class="keyword">static_cast&lt;</span>soffset_t<span class="keyword">&gt;</span>(vt_use) -</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;                  static_cast&lt;soffset_t&gt;(vtableoffsetloc));</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;    nested = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;    <span class="keywordflow">return</span> vtableoffsetloc;</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;  }</div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;  <span class="comment">// DEPRECATED: call the version above instead.</span></div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;  uoffset_t EndTable(uoffset_t start, voffset_t <span class="comment">/*numfields*/</span>) {</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;    <span class="keywordflow">return</span> EndTable(start);</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;  }</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;  <span class="comment">// This checks a required field has been set in a given table that has</span></div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;  <span class="comment">// just been constructed.</span></div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> Required(Offset&lt;T&gt; table, voffset_t field) {</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;    <span class="keyword">auto</span> table_ptr = buf_.data_at(table.o);</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;    <span class="keyword">auto</span> vtable_ptr = table_ptr - ReadScalar&lt;soffset_t&gt;(table_ptr);</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;    <span class="keywordtype">bool</span> ok = ReadScalar&lt;voffset_t&gt;(vtable_ptr + field) != 0;</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;    <span class="comment">// If this fails, the caller will show what field needs to be set.</span></div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;    assert(ok);</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;    (void)ok;</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;  }</div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;  uoffset_t StartStruct(<span class="keywordtype">size_t</span> alignment) {</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;    Align(alignment);</div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>();</div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;  }</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;</div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;  uoffset_t EndStruct() { <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>(); }</div>
 <div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;</div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;  uoffset_t StartStruct(<span class="keywordtype">size_t</span> alignment) {</div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;    Align(alignment);</div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>();</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;  <span class="keywordtype">void</span> ClearOffsets() {</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;    offsetbuf_.clear();</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;    max_voffset_ = 0;</div>
 <div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;  }</div>
 <div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;  uoffset_t EndStruct() { <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>(); }</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;  <span class="keywordtype">void</span> ClearOffsets() { offsetbuf_.clear(); }</div>
-<div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;  <span class="comment">// Aligns such that when &quot;len&quot; bytes are written, an object can be written</span></div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;  <span class="comment">// after it with &quot;alignment&quot; without padding.</span></div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;  <span class="keywordtype">void</span> PreAlign(<span class="keywordtype">size_t</span> len, <span class="keywordtype">size_t</span> alignment) {</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;    buf_.fill(PaddingBytes(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>() + len, alignment));</div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;  }</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> PreAlign(<span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;    AssertScalarT&lt;T&gt;();</div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;    PreAlign(len, <span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;  }<span class="comment"></span></div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;<span class="comment">  /// @endcond</span></div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;<span class="comment">  /// @param[in] str A const char pointer to the data to be stored as a string.</span></div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;<span class="comment">  /// @param[in] len The number of bytes that should be stored from `str`.</span></div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
-<div class="line"><a name="l00995"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">  995</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;    NotNested();</div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;    PreAlign&lt;uoffset_t&gt;(len + 1);  <span class="comment">// Always 0-terminated.</span></div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;    buf_.fill(1);</div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;    PushBytes(reinterpret_cast&lt;const uint8_t *&gt;(str), len);</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;    PushElement(static_cast&lt;uoffset_t&gt;(len));</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a>(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>());</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;  }</div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which is null-terminated.</span></div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;<span class="comment">  /// @param[in] str A const char pointer to a C-string to add to the buffer.</span></div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
-<div class="line"><a name="l01007"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5"> 1007</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5">CreateString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str) {</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(str, strlen(str));</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;  }</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;<span class="comment">  /// @param[in] str A const reference to a std::string to store in the buffer.</span></div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
-<div class="line"><a name="l01014"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f"> 1014</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f">CreateString</a>(<span class="keyword">const</span> std::string &amp;str) {</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(str.c_str(), str.length());</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;  }</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;<span class="comment">  /// @param[in] str A const pointer to a `String` struct to add to the buffer.</span></div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts</span></div>
-<div class="line"><a name="l01021"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506"> 1021</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506">CreateString</a>(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_string.html">String</a> *str) {</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;    <span class="keywordflow">return</span> str ? <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(str-&gt;c_str(), str-&gt;Length()) : 0;</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;  }</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;<span class="comment">  /// @param[in] str A const reference to a std::string like type with support</span></div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;<span class="comment">  /// of T::c_str() and T::length() to store in the buffer.</span></div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01030"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685"> 1030</a></span>&#160;    <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685">CreateString</a>(<span class="keyword">const</span> T &amp;str) {</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(str.c_str(), str.length());</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;  }</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;<span class="comment">  /// If a string with this exact contents has already been serialized before,</span></div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;<span class="comment">  /// instead simply returns the offset of the existing string.</span></div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;<span class="comment">  /// @param[in] str A const char pointer to the data to be stored as a string.</span></div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;<span class="comment">  /// @param[in] len The number of bytes that should be stored from `str`.</span></div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
-<div class="line"><a name="l01040"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1"> 1040</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1">CreateSharedString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;    <span class="keywordflow">if</span> (!string_pool)</div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;      string_pool = <span class="keyword">new</span> StringOffsetMap(<a class="code" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">StringOffsetCompare</a>(buf_));</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;    <span class="keyword">auto</span> size_before_string = buf_.size();</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;    <span class="comment">// Must first serialize the string, since the set is all offsets into</span></div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;    <span class="comment">// buffer.</span></div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;    <span class="keyword">auto</span> off = <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(str, len);</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;    <span class="keyword">auto</span> it = string_pool-&gt;find(off);</div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;    <span class="comment">// If it exists we reuse existing serialized data!</span></div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;    <span class="keywordflow">if</span> (it != string_pool-&gt;end()) {</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;      <span class="comment">// We can remove the string we serialized.</span></div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;      buf_.pop(buf_.size() - size_before_string);</div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;      <span class="keywordflow">return</span> *it;</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;    }</div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;    <span class="comment">// Record this string for future use.</span></div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;    string_pool-&gt;insert(off);</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;    <span class="keywordflow">return</span> off;</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;  }</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which null-terminated.</span></div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;<span class="comment">  /// If a string with this exact contents has already been serialized before,</span></div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;<span class="comment">  /// instead simply returns the offset of the existing string.</span></div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;<span class="comment">  /// @param[in] str A const char pointer to a C-string to add to the buffer.</span></div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
-<div class="line"><a name="l01064"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7"> 1064</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7">CreateSharedString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str) {</div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1">CreateSharedString</a>(str, strlen(str));</div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;  }</div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;<span class="comment">  /// If a string with this exact contents has already been serialized before,</span></div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;<span class="comment">  /// instead simply returns the offset of the existing string.</span></div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;<span class="comment">  /// @param[in] str A const reference to a std::string to store in the buffer.</span></div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
-<div class="line"><a name="l01073"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a10e8ec7d1c8fbdc21b1c7047bbbe38d9"> 1073</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a10e8ec7d1c8fbdc21b1c7047bbbe38d9">CreateSharedString</a>(<span class="keyword">const</span> std::string &amp;str) {</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1">CreateSharedString</a>(str.c_str(), str.length());</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;  }</div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;<span class="comment">  /// If a string with this exact contents has already been serialized before,</span></div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;<span class="comment">  /// instead simply returns the offset of the existing string.</span></div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;<span class="comment">  /// @param[in] str A const pointer to a `String` struct to add to the buffer.</span></div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts</span></div>
-<div class="line"><a name="l01082"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3"> 1082</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3">CreateSharedString</a>(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_string.html">String</a> *str) {</div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1">CreateSharedString</a>(str-&gt;c_str(), str-&gt;Length());</div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;  }</div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;<span class="comment"></span>  uoffset_t EndVector(<span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;    assert(nested);  <span class="comment">// Hit if no corresponding StartVector.</span></div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;    nested = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;    <span class="keywordflow">return</span> PushElement(static_cast&lt;uoffset_t&gt;(len));</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;  }</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;  <span class="keywordtype">void</span> StartVector(<span class="keywordtype">size_t</span> len, <span class="keywordtype">size_t</span> elemsize) {</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;    NotNested();</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;    nested = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;    PreAlign&lt;uoffset_t&gt;(len * elemsize);</div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;    PreAlign(len * elemsize, elemsize);  <span class="comment">// Just in case elemsize &gt; uoffset_t.</span></div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;  }</div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;</div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;  <span class="comment">// Call this right before StartVector/CreateVector if you want to force the</span></div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;  <span class="comment">// alignment to be something different than what the element size would</span></div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;  <span class="comment">// normally dictate.</span></div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;  <span class="comment">// This is useful when storing a nested_flatbuffer in a vector of bytes,</span></div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;  <span class="comment">// or when storing SIMD floats, etc.</span></div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;  <span class="keywordtype">void</span> ForceVectorAlignment(<span class="keywordtype">size_t</span> len, <span class="keywordtype">size_t</span> elemsize, <span class="keywordtype">size_t</span> alignment) {</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;    PreAlign(len * elemsize, alignment);</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;  }</div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;</div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;  uint8_t *ReserveElements(<span class="keywordtype">size_t</span> len, <span class="keywordtype">size_t</span> elemsize) {</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;    <span class="keywordflow">return</span> buf_.make_space(len * elemsize);</div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;  }<span class="comment"></span></div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;<span class="comment">  /// @endcond</span></div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;<span class="comment">  /// @brief Serialize an array into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;<span class="comment">  /// @tparam T The data type of the array elements.</span></div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;<span class="comment">  /// @param[in] v A pointer to the array of type `T` to serialize into the</span></div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;<span class="comment">  /// @param[in] len The number of elements to serialize.</span></div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01121"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3"> 1121</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;T&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(<span class="keyword">const</span> T *v, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;    StartVector(len, <span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;<span class="preprocessor">    #if FLATBUFFERS_LITTLEENDIAN</span></div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;      PushBytes(reinterpret_cast&lt;const uint8_t *&gt;(v), len * <span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;<span class="preprocessor">    #else</span></div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;      <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(T) == 1) {</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;        PushBytes(reinterpret_cast&lt;const uint8_t *&gt;(v), len);</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;      } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> i = len; i &gt; 0; ) {</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;          PushElement(v[--i]);</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;        }</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;      }</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;<span class="preprocessor">    #endif</span></div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;T&gt;</a>&gt;(EndVector(len));</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;  }</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;Offset&lt;T&gt;</a>&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;T&gt;</a> *v, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;    StartVector(len, <span class="keyword">sizeof</span>(<a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;T&gt;</a>));</div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> i = len; i &gt; 0; ) {</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;      PushElement(v[--i]);</div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;    }</div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;    <span class="keywordflow">return</span> Offset&lt;Vector&lt;Offset&lt;T&gt;&gt;&gt;(EndVector(len));</div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;  }</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` elements.</span></div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;<span class="comment">  /// @param v A const reference to the `std::vector` to serialize into the</span></div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01151"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207"> 1151</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;T&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207">CreateVector</a>(<span class="keyword">const</span> std::vector&lt;T&gt; &amp;v) {</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(data(v), v.size());</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;  }</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;</div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;  <span class="comment">// vector&lt;bool&gt; may be implemented using a bit-set, so we can&#39;t access it as</span></div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;  <span class="comment">// an array. Instead, read elements manually.</span></div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;  <span class="comment">// Background: https://isocpp.org/blog/2012/11/on-vectorbool</span></div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;uint8_t&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(<span class="keyword">const</span> std::vector&lt;bool&gt; &amp;v) {</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;    StartVector(v.size(), <span class="keyword">sizeof</span>(uint8_t));</div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> i = v.size(); i &gt; 0; ) {</div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;      PushElement(static_cast&lt;uint8_t&gt;(v[--i]));</div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;    }</div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;    <span class="keywordflow">return</span> Offset&lt;Vector&lt;uint8_t&gt;&gt;(EndVector(v.size()));</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;  }</div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;</div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;<span class="preprocessor">  #ifndef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;<span class="comment">  /// @brief Serialize values returned by a function into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;<span class="comment"></span><span class="comment">  /// This is a convenience function that takes care of iteration for you.</span></div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;<span class="comment"></span><span class="comment">  /// @tparam T The data type of the `std::vector` elements.</span></div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;<span class="comment"></span><span class="comment">  /// @param f A function that takes the current iteration 0..vector_size-1 and</span></div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;<span class="comment"></span><span class="comment">  /// returns any type that you can construct a FlatBuffers vector out of.</span></div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;<span class="comment"></span><span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;<span class="comment"></span><span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01174"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b"> 1174</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;T&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b">CreateVector</a>(<span class="keywordtype">size_t</span> vector_size,</div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;      <span class="keyword">const</span> std::function&lt;T (<span class="keywordtype">size_t</span> i)&gt; &amp;f) {</div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;    std::vector&lt;T&gt; elems(vector_size);</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; vector_size; i++) elems[i] = f(i);</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(elems);</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;  }</div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector&lt;std::string&gt;` into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;<span class="comment">  /// This is a convenience function for a common case.</span></div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;<span class="comment">  /// @param v A const reference to the `std::vector` to serialize into the</span></div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01188"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6"> 1188</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;Offset&lt;String&gt;</a>&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6">CreateVectorOfStrings</a>(</div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;      <span class="keyword">const</span> std::vector&lt;std::string&gt; &amp;v) {</div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;    std::vector&lt;Offset&lt;String&gt;&gt; offsets(v.size());</div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; v.size(); i++) offsets[i] = <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(v[i]);</div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(offsets);</div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;  }</div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;<span class="comment">  /// @brief Serialize an array of structs into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;<span class="comment">  /// @tparam T The data type of the struct array elements.</span></div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;<span class="comment">  /// @param[in] v A pointer to the array of type `T` to serialize into the</span></div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;<span class="comment">  /// @param[in] len The number of elements to serialize.</span></div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01202"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7"> 1202</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7">CreateVectorOfStructs</a>(</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;      <span class="keyword">const</span> T *v, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;    StartVector(len * <span class="keyword">sizeof</span>(T) / AlignOf&lt;T&gt;(), AlignOf&lt;T&gt;());</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;    PushBytes(reinterpret_cast&lt;const uint8_t *&gt;(v), <span class="keyword">sizeof</span>(T) * len);</div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt;(EndVector(len));</div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;  }</div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;<span class="comment">  /// @brief Serialize an array of native structs into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;<span class="comment">  /// @tparam T The data type of the struct array elements.</span></div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;<span class="comment">  /// @tparam S The data type of the native struct array elements.</span></div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;<span class="comment">  /// @param[in] v A pointer to the array of type `S` to serialize into the</span></div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;  <span class="comment">// Aligns such that when &quot;len&quot; bytes are written, an object can be written</span></div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;  <span class="comment">// after it with &quot;alignment&quot; without padding.</span></div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;  <span class="keywordtype">void</span> PreAlign(<span class="keywordtype">size_t</span> len, <span class="keywordtype">size_t</span> alignment) {</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;    buf_.fill(PaddingBytes(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>() + len, alignment));</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;  }</div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> PreAlign(<span class="keywordtype">size_t</span> len) {</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;    AssertScalarT&lt;T&gt;();</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;    PreAlign(len, <span class="keyword">sizeof</span>(T));</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;  }<span class="comment"></span></div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;<span class="comment">  /// @endcond</span></div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;<span class="comment"></span><span class="comment"></span></div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;<span class="comment">  /// @param[in] str A const char pointer to the data to be stored as a string.</span></div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;<span class="comment">  /// @param[in] len The number of bytes that should be stored from `str`.</span></div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
+<div class="line"><a name="l00991"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">  991</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> len) {</div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;    NotNested();</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;    PreAlign&lt;uoffset_t&gt;(len + 1);  <span class="comment">// Always 0-terminated.</span></div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;    buf_.fill(1);</div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;    PushBytes(reinterpret_cast&lt;const uint8_t *&gt;(str), len);</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;    PushElement(static_cast&lt;uoffset_t&gt;(len));</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a>(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>());</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;  }</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which is null-terminated.</span></div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;<span class="comment">  /// @param[in] str A const char pointer to a C-string to add to the buffer.</span></div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
+<div class="line"><a name="l01003"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5"> 1003</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5">CreateString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str) {</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(str, strlen(str));</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;  }</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;<span class="comment">  /// @param[in] str A const reference to a std::string to store in the buffer.</span></div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
+<div class="line"><a name="l01010"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f"> 1010</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f">CreateString</a>(<span class="keyword">const</span> std::string &amp;str) {</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(str.c_str(), str.length());</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;  }</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;<span class="comment">  /// @param[in] str A const pointer to a `String` struct to add to the buffer.</span></div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts</span></div>
+<div class="line"><a name="l01017"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506"> 1017</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506">CreateString</a>(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_string.html">String</a> *str) {</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;    <span class="keywordflow">return</span> str ? <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(str-&gt;c_str(), str-&gt;Length()) : 0;</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;  }</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;<span class="comment">  /// @param[in] str A const reference to a std::string like type with support</span></div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;<span class="comment">  /// of T::c_str() and T::length() to store in the buffer.</span></div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l01026"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685"> 1026</a></span>&#160;    <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685">CreateString</a>(<span class="keyword">const</span> T &amp;str) {</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(str.c_str(), str.length());</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;  }</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;<span class="comment">  /// If a string with this exact contents has already been serialized before,</span></div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;<span class="comment">  /// instead simply returns the offset of the existing string.</span></div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;<span class="comment">  /// @param[in] str A const char pointer to the data to be stored as a string.</span></div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;<span class="comment">  /// @param[in] len The number of bytes that should be stored from `str`.</span></div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
+<div class="line"><a name="l01036"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1"> 1036</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1">CreateSharedString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str, <span class="keywordtype">size_t</span> len) {</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;    <span class="keywordflow">if</span> (!string_pool)</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;      string_pool = <span class="keyword">new</span> StringOffsetMap(<a class="code" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">StringOffsetCompare</a>(buf_));</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;    <span class="keyword">auto</span> size_before_string = buf_.size();</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;    <span class="comment">// Must first serialize the string, since the set is all offsets into</span></div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;    <span class="comment">// buffer.</span></div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;    <span class="keyword">auto</span> off = <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(str, len);</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;    <span class="keyword">auto</span> it = string_pool-&gt;find(off);</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;    <span class="comment">// If it exists we reuse existing serialized data!</span></div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;    <span class="keywordflow">if</span> (it != string_pool-&gt;end()) {</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;      <span class="comment">// We can remove the string we serialized.</span></div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;      buf_.pop(buf_.size() - size_before_string);</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;      <span class="keywordflow">return</span> *it;</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;    }</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;    <span class="comment">// Record this string for future use.</span></div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;    string_pool-&gt;insert(off);</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;    <span class="keywordflow">return</span> off;</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;  }</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which null-terminated.</span></div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;<span class="comment">  /// If a string with this exact contents has already been serialized before,</span></div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;<span class="comment">  /// instead simply returns the offset of the existing string.</span></div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;<span class="comment">  /// @param[in] str A const char pointer to a C-string to add to the buffer.</span></div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
+<div class="line"><a name="l01060"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7"> 1060</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7">CreateSharedString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *str) {</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1">CreateSharedString</a>(str, strlen(str));</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;  }</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;<span class="comment">  /// If a string with this exact contents has already been serialized before,</span></div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;<span class="comment">  /// instead simply returns the offset of the existing string.</span></div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;<span class="comment">  /// @param[in] str A const reference to a std::string to store in the buffer.</span></div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
+<div class="line"><a name="l01069"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a10e8ec7d1c8fbdc21b1c7047bbbe38d9"> 1069</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a10e8ec7d1c8fbdc21b1c7047bbbe38d9">CreateSharedString</a>(<span class="keyword">const</span> std::string &amp;str) {</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1">CreateSharedString</a>(str.c_str(), str.length());</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;  }</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;<span class="comment">  /// If a string with this exact contents has already been serialized before,</span></div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;<span class="comment">  /// instead simply returns the offset of the existing string.</span></div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;<span class="comment">  /// @param[in] str A const pointer to a `String` struct to add to the buffer.</span></div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts</span></div>
+<div class="line"><a name="l01078"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3"> 1078</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3">CreateSharedString</a>(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_string.html">String</a> *str) {</div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1">CreateSharedString</a>(str-&gt;c_str(), str-&gt;Length());</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;  }</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;<span class="comment"></span>  uoffset_t EndVector(<span class="keywordtype">size_t</span> len) {</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;    assert(nested);  <span class="comment">// Hit if no corresponding StartVector.</span></div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;    nested = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;    <span class="keywordflow">return</span> PushElement(static_cast&lt;uoffset_t&gt;(len));</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;  }</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;  <span class="keywordtype">void</span> StartVector(<span class="keywordtype">size_t</span> len, <span class="keywordtype">size_t</span> elemsize) {</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;    NotNested();</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;    nested = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;    PreAlign&lt;uoffset_t&gt;(len * elemsize);</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;    PreAlign(len * elemsize, elemsize);  <span class="comment">// Just in case elemsize &gt; uoffset_t.</span></div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;  }</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;  <span class="comment">// Call this right before StartVector/CreateVector if you want to force the</span></div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;  <span class="comment">// alignment to be something different than what the element size would</span></div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;  <span class="comment">// normally dictate.</span></div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;  <span class="comment">// This is useful when storing a nested_flatbuffer in a vector of bytes,</span></div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;  <span class="comment">// or when storing SIMD floats, etc.</span></div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;  <span class="keywordtype">void</span> ForceVectorAlignment(<span class="keywordtype">size_t</span> len, <span class="keywordtype">size_t</span> elemsize, <span class="keywordtype">size_t</span> alignment) {</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;    PreAlign(len * elemsize, alignment);</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;  }</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;  uint8_t *ReserveElements(<span class="keywordtype">size_t</span> len, <span class="keywordtype">size_t</span> elemsize) {</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;    <span class="keywordflow">return</span> buf_.make_space(len * elemsize);</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;  }<span class="comment"></span></div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;<span class="comment">  /// @endcond</span></div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;<span class="comment"></span><span class="comment"></span></div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;<span class="comment">  /// @brief Serialize an array into a FlatBuffer `vector`.</span></div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;<span class="comment">  /// @tparam T The data type of the array elements.</span></div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;<span class="comment">  /// @param[in] v A pointer to the array of type `T` to serialize into the</span></div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;<span class="comment">  /// @param[in] len The number of elements to serialize.</span></div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01117"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3"> 1117</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;T&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(<span class="keyword">const</span> T *v, <span class="keywordtype">size_t</span> len) {</div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;    <span class="comment">// If this assert hits, you&#39;re specifying a template argument that is</span></div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;    <span class="comment">// causing the wrong overload to be selected, remove it.</span></div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;    AssertScalarT&lt;T&gt;();</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;    StartVector(len, <span class="keyword">sizeof</span>(T));</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;<span class="preprocessor">    #if FLATBUFFERS_LITTLEENDIAN</span></div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;      PushBytes(reinterpret_cast&lt;const uint8_t *&gt;(v), len * <span class="keyword">sizeof</span>(T));</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;<span class="preprocessor">    #else</span></div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;      <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(T) == 1) {</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;        PushBytes(reinterpret_cast&lt;const uint8_t *&gt;(v), len);</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;      } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> i = len; i &gt; 0; ) {</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;          PushElement(v[--i]);</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;        }</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;      }</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;<span class="preprocessor">    #endif</span></div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;T&gt;</a>&gt;(EndVector(len));</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;  }</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;Offset&lt;T&gt;</a>&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;T&gt;</a> *v, <span class="keywordtype">size_t</span> len) {</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;    StartVector(len, <span class="keyword">sizeof</span>(<a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;T&gt;</a>));</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> i = len; i &gt; 0; ) {</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;      PushElement(v[--i]);</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;    }</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;    <span class="keywordflow">return</span> Offset&lt;Vector&lt;Offset&lt;T&gt;&gt;&gt;(EndVector(len));</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;  }</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` into a FlatBuffer `vector`.</span></div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` elements.</span></div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;<span class="comment">  /// @param v A const reference to the `std::vector` to serialize into the</span></div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01150"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207"> 1150</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;T&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207">CreateVector</a>(<span class="keyword">const</span> std::vector&lt;T&gt; &amp;v) {</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(data(v), v.size());</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;  }</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;  <span class="comment">// vector&lt;bool&gt; may be implemented using a bit-set, so we can&#39;t access it as</span></div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;  <span class="comment">// an array. Instead, read elements manually.</span></div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;  <span class="comment">// Background: https://isocpp.org/blog/2012/11/on-vectorbool</span></div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;uint8_t&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(<span class="keyword">const</span> std::vector&lt;bool&gt; &amp;v) {</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;    StartVector(v.size(), <span class="keyword">sizeof</span>(uint8_t));</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> i = v.size(); i &gt; 0; ) {</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;      PushElement(static_cast&lt;uint8_t&gt;(v[--i]));</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;    }</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;    <span class="keywordflow">return</span> Offset&lt;Vector&lt;uint8_t&gt;&gt;(EndVector(v.size()));</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;  }</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;<span class="preprocessor">  #ifndef FLATBUFFERS_CPP98_STL</span></div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;<span class="comment">  /// @brief Serialize values returned by a function into a FlatBuffer `vector`.</span></div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;<span class="comment"></span><span class="comment">  /// This is a convenience function that takes care of iteration for you.</span></div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;<span class="comment"></span><span class="comment">  /// @tparam T The data type of the `std::vector` elements.</span></div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;<span class="comment"></span><span class="comment">  /// @param f A function that takes the current iteration 0..vector_size-1 and</span></div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;<span class="comment"></span><span class="comment">  /// returns any type that you can construct a FlatBuffers vector out of.</span></div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;<span class="comment"></span><span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;<span class="comment"></span><span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01173"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b"> 1173</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;T&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b">CreateVector</a>(<span class="keywordtype">size_t</span> vector_size,</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;      <span class="keyword">const</span> std::function&lt;T (<span class="keywordtype">size_t</span> i)&gt; &amp;f) {</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;    std::vector&lt;T&gt; elems(vector_size);</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; vector_size; i++) elems[i] = f(i);</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(elems);</div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;  }</div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;<span class="preprocessor">  #endif</span></div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;<span class="comment">  /// @brief Serialize values returned by a function into a FlatBuffer `vector`.</span></div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;<span class="comment">  /// This is a convenience function that takes care of iteration for you.</span></div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` elements.</span></div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;<span class="comment">  /// @param f A function that takes the current iteration 0..vector_size-1,</span></div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;<span class="comment">  /// and the state parameter returning any type that you can construct a</span></div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;<span class="comment">  /// FlatBuffers vector out of.</span></div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;<span class="comment">  /// @param state State passed to f.</span></div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01190"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a53504fc2cab681a7980b03260f8b2f7a"> 1190</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> F, <span class="keyword">typename</span> S&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;T&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a53504fc2cab681a7980b03260f8b2f7a">CreateVector</a>(</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;      <span class="keywordtype">size_t</span> vector_size, F f, S *state) {</div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;    std::vector&lt;T&gt; elems(vector_size);</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; vector_size; i++) elems[i] = f(i, state);</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(elems);</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;  }</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector&lt;std::string&gt;` into a FlatBuffer `vector`.</span></div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;<span class="comment">  /// This is a convenience function for a common case.</span></div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;<span class="comment">  /// @param v A const reference to the `std::vector` to serialize into the</span></div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01203"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6"> 1203</a></span>&#160;<span class="comment"></span>  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;Offset&lt;String&gt;</a>&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6">CreateVectorOfStrings</a>(</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;      <span class="keyword">const</span> std::vector&lt;std::string&gt; &amp;v) {</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;    std::vector&lt;Offset&lt;String&gt;&gt; offsets(v.size());</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; v.size(); i++) offsets[i] = <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(v[i]);</div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(offsets);</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;  }</div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;<span class="comment">  /// @brief Serialize an array of structs into a FlatBuffer `vector`.</span></div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;<span class="comment">  /// @tparam T The data type of the struct array elements.</span></div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;<span class="comment">  /// @param[in] v A pointer to the array of type `T` to serialize into the</span></div>
 <div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
 <div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;<span class="comment">  /// @param[in] len The number of elements to serialize.</span></div>
 <div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
 <div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01217"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53"> 1217</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> S&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53">CreateVectorOfNativeStructs</a>(</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;      <span class="keyword">const</span> S *v, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;    <span class="keyword">extern</span> T Pack(<span class="keyword">const</span> S&amp;);</div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;    <span class="keyword">typedef</span> T (*Pack_t)(<span class="keyword">const</span> S&amp;);</div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;    std::vector&lt;T&gt; vv(len);</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;    std::transform(v, v+len, vv.begin(), *(Pack_t)&amp;Pack);</div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;    <span class="keywordflow">return</span> CreateVectorOfStructs&lt;T&gt;(vv.data(), vv.size());</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;  }</div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;</div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;<span class="preprocessor">  #ifndef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;<span class="comment">  /// @brief Serialize an array of structs into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;<span class="comment"></span><span class="comment">  /// @tparam T The data type of the struct array elements.</span></div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;<span class="comment"></span><span class="comment">  /// @param[in] f A function that takes the current iteration 0..vector_size-1</span></div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;<span class="comment"></span><span class="comment">  /// and a pointer to the struct that must be filled.</span></div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;<span class="comment"></span><span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;<span class="comment"></span><span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;<span class="comment"></span><span class="comment">  /// This is mostly useful when flatbuffers are generated with mutation</span></div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;<span class="comment"></span><span class="comment">  /// accessors.</span></div>
-<div class="line"><a name="l01236"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72"> 1236</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72">CreateVectorOfStructs</a>(</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;      <span class="keywordtype">size_t</span> vector_size, <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>(<span class="keywordtype">size_t</span> i, T *)&gt; &amp;filler) {</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;    StartVector(vector_size * <span class="keyword">sizeof</span>(T) / AlignOf&lt;T&gt;(), AlignOf&lt;T&gt;());</div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;    T *structs = <span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(buf_.make_space(vector_size * <span class="keyword">sizeof</span>(T)));</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; vector_size; i++) {</div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;      filler(i, structs);</div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;      structs++;</div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;    }</div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt;(EndVector(vector_size));</div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;  }</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` of structs into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` struct elements.</span></div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;<span class="comment">  /// @param[in]] v A const reference to the `std::vector` of structs to</span></div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;<span class="comment">  /// serialize into the buffer as a `vector`.</span></div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01254"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1"> 1254</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1">CreateVectorOfStructs</a>(</div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;      <span class="keyword">const</span> std::vector&lt;T&gt; &amp;v) {</div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7">CreateVectorOfStructs</a>(data(v), v.size());</div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;  }</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` of native structs into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` struct elements.</span></div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;<span class="comment">  /// @tparam S The data type of the `std::vector` native struct elements.</span></div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;<span class="comment">  /// @param[in]] v A const reference to the `std::vector` of structs to</span></div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;<span class="comment">  /// serialize into the buffer as a `vector`.</span></div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01266"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95"> 1266</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> S&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95">CreateVectorOfNativeStructs</a>(</div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;      <span class="keyword">const</span> std::vector&lt;S&gt; &amp;v) {</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;    <span class="keywordflow">return</span> CreateVectorOfNativeStructs&lt;T, S&gt;(data(v), v.size());</div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;  }</div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;</div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;  <span class="keyword">struct </span>StructKeyComparator {</div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;    <span class="keywordtype">bool</span> operator()(<span class="keyword">const</span> T &amp;a, <span class="keyword">const</span> T &amp;b)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;      <span class="keywordflow">return</span> a.KeyCompareLessThan(&amp;b);</div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;    }</div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;  <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;    StructKeyComparator&amp; operator= (<span class="keyword">const</span> StructKeyComparator&amp;);</div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;  };<span class="comment"></span></div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;<span class="comment">  /// @endcond</span></div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` of structs into a FlatBuffer `vector`</span></div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;<span class="comment">  /// in sorted order.</span></div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` struct elements.</span></div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;<span class="comment">  /// @param[in]] v A const reference to the `std::vector` of structs to</span></div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;<span class="comment">  /// serialize into the buffer as a `vector`.</span></div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01291"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15"> 1291</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15">CreateVectorOfSortedStructs</a>(</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;      std::vector&lt;T&gt; *v) {</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15">CreateVectorOfSortedStructs</a>(data(*v), v-&gt;size());</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;  }</div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` of native structs into a FlatBuffer `vector`</span></div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;<span class="comment">  /// in sorted order.</span></div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` struct elements.</span></div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;<span class="comment">  /// @tparam S The data type of the `std::vector` native struct elements.</span></div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;<span class="comment">  /// @param[in]] v A const reference to the `std::vector` of structs to</span></div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;<span class="comment">  /// serialize into the buffer as a `vector`.</span></div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01304"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54"> 1304</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> S&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54">CreateVectorOfSortedNativeStructs</a>(</div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;      std::vector&lt;S&gt; *v) {</div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;    <span class="keywordflow">return</span> CreateVectorOfSortedNativeStructs&lt;T, S&gt;(data(*v), v-&gt;size());</div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;  }</div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;<span class="comment">  /// @brief Serialize an array of structs into a FlatBuffer `vector` in sorted</span></div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;<span class="comment">  /// order.</span></div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;<span class="comment">  /// @tparam T The data type of the struct array elements.</span></div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;<span class="comment">  /// @param[in] v A pointer to the array of type `T` to serialize into the</span></div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;<span class="comment">  /// @param[in] len The number of elements to serialize.</span></div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01317"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf"> 1317</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf">CreateVectorOfSortedStructs</a>(</div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;      T *v, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;    std::sort(v, v + len, StructKeyComparator&lt;T&gt;());</div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7">CreateVectorOfStructs</a>(v, len);</div>
-<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;  }</div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;<span class="comment">  /// @brief Serialize an array of native structs into a FlatBuffer `vector` in sorted</span></div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;<span class="comment">  /// order.</span></div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;<span class="comment">  /// @tparam T The data type of the struct array elements.</span></div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;<span class="comment">  /// @tparam S The data type of the native struct array elements.</span></div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;<span class="comment">  /// @param[in] v A pointer to the array of type `S` to serialize into the</span></div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;<span class="comment">  /// @param[in] len The number of elements to serialize.</span></div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01332"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf"> 1332</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> S&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf">CreateVectorOfSortedNativeStructs</a>(</div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;      S *v, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;    <span class="keyword">extern</span> T Pack(<span class="keyword">const</span> S&amp;);</div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;    <span class="keyword">typedef</span> T (*Pack_t)(<span class="keyword">const</span> S&amp;);</div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;    std::vector&lt;T&gt; vv(len);</div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;    std::transform(v, v+len, vv.begin(), *(Pack_t)&amp;Pack);</div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;    <span class="keywordflow">return</span> CreateVectorOfSortedStructs&lt;T&gt;(vv, len);</div>
+<div class="line"><a name="l01217"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7"> 1217</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7">CreateVectorOfStructs</a>(</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;      <span class="keyword">const</span> T *v, <span class="keywordtype">size_t</span> len) {</div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;    StartVector(len * <span class="keyword">sizeof</span>(T) / AlignOf&lt;T&gt;(), AlignOf&lt;T&gt;());</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;    PushBytes(reinterpret_cast&lt;const uint8_t *&gt;(v), <span class="keyword">sizeof</span>(T) * len);</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt;(EndVector(len));</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;  }</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;<span class="comment">  /// @brief Serialize an array of native structs into a FlatBuffer `vector`.</span></div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;<span class="comment">  /// @tparam T The data type of the struct array elements.</span></div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;<span class="comment">  /// @tparam S The data type of the native struct array elements.</span></div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;<span class="comment">  /// @param[in] v A pointer to the array of type `S` to serialize into the</span></div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;<span class="comment">  /// @param[in] len The number of elements to serialize.</span></div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01232"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53"> 1232</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> S&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53">CreateVectorOfNativeStructs</a>(</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;      <span class="keyword">const</span> S *v, <span class="keywordtype">size_t</span> len) {</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;    <span class="keyword">extern</span> T Pack(<span class="keyword">const</span> S&amp;);</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;    <span class="keyword">typedef</span> T (*Pack_t)(<span class="keyword">const</span> S&amp;);</div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;    std::vector&lt;T&gt; vv(len);</div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;    std::transform(v, v+len, vv.begin(), *(Pack_t)&amp;Pack);</div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;    <span class="keywordflow">return</span> CreateVectorOfStructs&lt;T&gt;(vv.data(), vv.size());</div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;  }</div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;<span class="preprocessor">  #ifndef FLATBUFFERS_CPP98_STL</span></div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;<span class="comment">  /// @brief Serialize an array of structs into a FlatBuffer `vector`.</span></div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;<span class="comment"></span><span class="comment">  /// @tparam T The data type of the struct array elements.</span></div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;<span class="comment"></span><span class="comment">  /// @param[in] f A function that takes the current iteration 0..vector_size-1</span></div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;<span class="comment"></span><span class="comment">  /// and a pointer to the struct that must be filled.</span></div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;<span class="comment"></span><span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;<span class="comment"></span><span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;<span class="comment"></span><span class="comment">  /// This is mostly useful when flatbuffers are generated with mutation</span></div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;<span class="comment"></span><span class="comment">  /// accessors.</span></div>
+<div class="line"><a name="l01250"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72"> 1250</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72">CreateVectorOfStructs</a>(</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;      <span class="keywordtype">size_t</span> vector_size, <span class="keyword">const</span> std::function&lt;<span class="keywordtype">void</span>(<span class="keywordtype">size_t</span> i, T *)&gt; &amp;filler) {</div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;    T* structs = StartVectorOfStructs&lt;T&gt;(vector_size);</div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; vector_size; i++) {</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;      filler(i, structs);</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;      structs++;</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;    }</div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;    <span class="keywordflow">return</span> EndVectorOfStructs&lt;T&gt;(vector_size);</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;  }</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;<span class="preprocessor">  #endif</span></div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;<span class="comment">  /// @brief Serialize an array of structs into a FlatBuffer `vector`.</span></div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;<span class="comment">  /// @tparam T The data type of the struct array elements.</span></div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;<span class="comment">  /// @param[in] f A function that takes the current iteration 0..vector_size-1,</span></div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;<span class="comment">  /// a pointer to the struct that must be filled and the state argument.</span></div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;<span class="comment">  /// @param[in] state Arbitrary state to pass to f.</span></div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;<span class="comment">  /// This is mostly useful when flatbuffers are generated with mutation</span></div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;<span class="comment">  /// accessors.</span></div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;<span class="comment"></span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> F, <span class="keyword">typename</span> S&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt;</div>
+<div class="line"><a name="l01271"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a9cc09fa59ff9732e972877cfe911c8a5"> 1271</a></span>&#160;      <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a9cc09fa59ff9732e972877cfe911c8a5">CreateVectorOfStructs</a>(<span class="keywordtype">size_t</span> vector_size, F f, S *state) {</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;    T* structs = StartVectorOfStructs&lt;T&gt;(vector_size);</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; vector_size; i++) {</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;      f(i, structs, state);</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;      structs++;</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;    }</div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;    <span class="keywordflow">return</span> EndVectorOfStructs&lt;T&gt;(vector_size);</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;  }</div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` of structs into a FlatBuffer `vector`.</span></div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` struct elements.</span></div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;<span class="comment">  /// @param[in]] v A const reference to the `std::vector` of structs to</span></div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;<span class="comment">  /// serialize into the buffer as a `vector`.</span></div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01286"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1"> 1286</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1">CreateVectorOfStructs</a>(</div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;      <span class="keyword">const</span> std::vector&lt;T&gt; &amp;v) {</div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7">CreateVectorOfStructs</a>(data(v), v.size());</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;  }</div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` of native structs into a FlatBuffer `vector`.</span></div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` struct elements.</span></div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;<span class="comment">  /// @tparam S The data type of the `std::vector` native struct elements.</span></div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;<span class="comment">  /// @param[in]] v A const reference to the `std::vector` of structs to</span></div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;<span class="comment">  /// serialize into the buffer as a `vector`.</span></div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01298"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95"> 1298</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> S&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95">CreateVectorOfNativeStructs</a>(</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;      <span class="keyword">const</span> std::vector&lt;S&gt; &amp;v) {</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;    <span class="keywordflow">return</span> CreateVectorOfNativeStructs&lt;T, S&gt;(data(v), v.size());</div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;  }</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;  <span class="keyword">struct </span>StructKeyComparator {</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;    <span class="keywordtype">bool</span> operator()(<span class="keyword">const</span> T &amp;a, <span class="keyword">const</span> T &amp;b)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;      <span class="keywordflow">return</span> a.KeyCompareLessThan(&amp;b);</div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;    }</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;  <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;    StructKeyComparator&amp; operator= (<span class="keyword">const</span> StructKeyComparator&amp;);</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;  };<span class="comment"></span></div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;<span class="comment">  /// @endcond</span></div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;<span class="comment"></span><span class="comment"></span></div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` of structs into a FlatBuffer `vector`</span></div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;<span class="comment">  /// in sorted order.</span></div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` struct elements.</span></div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;<span class="comment">  /// @param[in]] v A const reference to the `std::vector` of structs to</span></div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;<span class="comment">  /// serialize into the buffer as a `vector`.</span></div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01323"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15"> 1323</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15">CreateVectorOfSortedStructs</a>(</div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;      std::vector&lt;T&gt; *v) {</div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15">CreateVectorOfSortedStructs</a>(data(*v), v-&gt;size());</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;  }</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` of native structs into a FlatBuffer `vector`</span></div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;<span class="comment">  /// in sorted order.</span></div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` struct elements.</span></div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;<span class="comment">  /// @tparam S The data type of the `std::vector` native struct elements.</span></div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;<span class="comment">  /// @param[in]] v A const reference to the `std::vector` of structs to</span></div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;<span class="comment">  /// serialize into the buffer as a `vector`.</span></div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01336"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54"> 1336</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> S&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54">CreateVectorOfSortedNativeStructs</a>(</div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;      std::vector&lt;S&gt; *v) {</div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;    <span class="keywordflow">return</span> CreateVectorOfSortedNativeStructs&lt;T, S&gt;(data(*v), v-&gt;size());</div>
 <div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;  }</div>
 <div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;  <span class="keyword">struct </span>TableKeyComparator {</div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;  TableKeyComparator(<a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a>&amp; buf) : buf_(buf) {}</div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;    <span class="keywordtype">bool</span> operator()(<span class="keyword">const</span> Offset&lt;T&gt; &amp;a, <span class="keyword">const</span> Offset&lt;T&gt; &amp;b)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;      <span class="keyword">auto</span> table_a = <span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(buf_.data_at(a.o));</div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;      <span class="keyword">auto</span> table_b = <span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(buf_.data_at(b.o));</div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;      <span class="keywordflow">return</span> table_a-&gt;KeyCompareLessThan(table_b);</div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;    }</div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;    vector_downward&amp; buf_;</div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;</div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;  <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;    TableKeyComparator&amp; operator= (<span class="keyword">const</span> TableKeyComparator&amp;);</div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;  };<span class="comment"></span></div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;<span class="comment">  /// @endcond</span></div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;<span class="comment">  /// @brief Serialize an array of `table` offsets as a `vector` in the buffer</span></div>
-<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;<span class="comment">  /// in sorted order.</span></div>
-<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;<span class="comment">  /// @tparam T The data type that the offset refers to.</span></div>
-<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;<span class="comment">  /// @param[in] v An array of type `Offset&lt;T&gt;` that contains the `table`</span></div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;<span class="comment">  /// offsets to store in the buffer in sorted order.</span></div>
-<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;<span class="comment">  /// @param[in] len The number of elements to store in the `vector`.</span></div>
-<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01365"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6"> 1365</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;Offset&lt;T&gt;</a>&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6">CreateVectorOfSortedTables</a>(</div>
-<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;      <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;T&gt;</a> *v, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;    std::sort(v, v + len, TableKeyComparator&lt;T&gt;(buf_));</div>
-<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(v, len);</div>
-<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;  }</div>
-<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;<span class="comment">  /// @brief Serialize an array of `table` offsets as a `vector` in the buffer</span></div>
-<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;<span class="comment">  /// in sorted order.</span></div>
-<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;<span class="comment">  /// @tparam T The data type that the offset refers to.</span></div>
-<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;<span class="comment">  /// @param[in] v An array of type `Offset&lt;T&gt;` that contains the `table`</span></div>
-<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;<span class="comment">  /// offsets to store in the buffer in sorted order.</span></div>
-<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01378"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135"> 1378</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;Offset&lt;T&gt;</a>&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135">CreateVectorOfSortedTables</a>(</div>
-<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;      std::vector&lt;<a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;T&gt;</a>&gt; *v) {</div>
-<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6">CreateVectorOfSortedTables</a>(data(*v), v-&gt;size());</div>
-<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;  }</div>
-<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;<span class="comment">  /// @brief Specialized version of `CreateVector` for non-copying use cases.</span></div>
-<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;<span class="comment">  /// Write the data any time later to the returned buffer pointer `buf`.</span></div>
-<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;<span class="comment">  /// @param[in] len The number of elements to store in the `vector`.</span></div>
-<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;<span class="comment">  /// @param[in] elemsize The size of each element in the `vector`.</span></div>
-<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;<span class="comment">  /// @param[out] buf A pointer to a `uint8_t` pointer that can be</span></div>
-<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;<span class="comment">  /// written to at a later time to serialize the data into a `vector`</span></div>
-<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;<span class="comment">  /// in the buffer.</span></div>
-<div class="line"><a name="l01390"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c"> 1390</a></span>&#160;<span class="comment"></span>  uoffset_t <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c">CreateUninitializedVector</a>(<span class="keywordtype">size_t</span> len, <span class="keywordtype">size_t</span> elemsize,</div>
-<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;                                      uint8_t **buf) {</div>
-<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;    NotNested();</div>
-<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;    StartVector(len, elemsize);</div>
-<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;    buf_.make_space(len * elemsize);</div>
-<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;    <span class="keyword">auto</span> vec_start = <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>();</div>
-<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;    <span class="keyword">auto</span> vec_end = EndVector(len);</div>
-<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;    *buf = buf_.data_at(vec_start);</div>
-<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;    <span class="keywordflow">return</span> vec_end;</div>
-<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;  }</div>
-<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;<span class="comment">  /// @brief Specialized version of `CreateVector` for non-copying use cases.</span></div>
-<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;<span class="comment">  /// Write the data any time later to the returned buffer pointer `buf`.</span></div>
-<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;<span class="comment">  /// @tparam T The data type of the data that will be stored in the buffer</span></div>
-<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;<span class="comment">  /// as a `vector`.</span></div>
-<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;<span class="comment">  /// @param[in] len The number of elements to store in the `vector`.</span></div>
-<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;<span class="comment">  /// @param[out] buf A pointer to a pointer of type `T` that can be</span></div>
-<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;<span class="comment">  /// written to at a later time to serialize the data into a `vector`</span></div>
-<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;<span class="comment">  /// in the buffer.</span></div>
-<div class="line"><a name="l01409"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50"> 1409</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;T&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50">CreateUninitializedVector</a>(</div>
-<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;      <span class="keywordtype">size_t</span> len, T **buf) {</div>
-<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c">CreateUninitializedVector</a>(len, <span class="keyword">sizeof</span>(T),</div>
-<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;                                     reinterpret_cast&lt;uint8_t **&gt;(buf));</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;<span class="comment">  /// @brief Serialize an array of structs into a FlatBuffer `vector` in sorted</span></div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;<span class="comment">  /// order.</span></div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;<span class="comment">  /// @tparam T The data type of the struct array elements.</span></div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;<span class="comment">  /// @param[in] v A pointer to the array of type `T` to serialize into the</span></div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;<span class="comment">  /// @param[in] len The number of elements to serialize.</span></div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01349"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf"> 1349</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf">CreateVectorOfSortedStructs</a>(</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;      T *v, <span class="keywordtype">size_t</span> len) {</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;    std::sort(v, v + len, StructKeyComparator&lt;T&gt;());</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7">CreateVectorOfStructs</a>(v, len);</div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;  }</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;<span class="comment">  /// @brief Serialize an array of native structs into a FlatBuffer `vector` in sorted</span></div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;<span class="comment">  /// order.</span></div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;<span class="comment">  /// @tparam T The data type of the struct array elements.</span></div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;<span class="comment">  /// @tparam S The data type of the native struct array elements.</span></div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;<span class="comment">  /// @param[in] v A pointer to the array of type `S` to serialize into the</span></div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;<span class="comment">  /// @param[in] len The number of elements to serialize.</span></div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01364"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf"> 1364</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> S&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf">CreateVectorOfSortedNativeStructs</a>(</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;      S *v, <span class="keywordtype">size_t</span> len) {</div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;    <span class="keyword">extern</span> T Pack(<span class="keyword">const</span> S&amp;);</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;    <span class="keyword">typedef</span> T (*Pack_t)(<span class="keyword">const</span> S&amp;);</div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;    std::vector&lt;T&gt; vv(len);</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;    std::transform(v, v+len, vv.begin(), *(Pack_t)&amp;Pack);</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;    <span class="keywordflow">return</span> CreateVectorOfSortedStructs&lt;T&gt;(vv, len);</div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;  }</div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;  <span class="keyword">struct </span>TableKeyComparator {</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;  TableKeyComparator(<a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a>&amp; buf) : buf_(buf) {}</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;    <span class="keywordtype">bool</span> operator()(<span class="keyword">const</span> Offset&lt;T&gt; &amp;a, <span class="keyword">const</span> Offset&lt;T&gt; &amp;b)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;      <span class="keyword">auto</span> table_a = <span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(buf_.data_at(a.o));</div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;      <span class="keyword">auto</span> table_b = <span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(buf_.data_at(b.o));</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;      <span class="keywordflow">return</span> table_a-&gt;KeyCompareLessThan(table_b);</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;    }</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;    vector_downward&amp; buf_;</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;  <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;    TableKeyComparator&amp; operator= (<span class="keyword">const</span> TableKeyComparator&amp;);</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;  };<span class="comment"></span></div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;<span class="comment">  /// @endcond</span></div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;<span class="comment"></span><span class="comment"></span></div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;<span class="comment">  /// @brief Serialize an array of `table` offsets as a `vector` in the buffer</span></div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;<span class="comment">  /// in sorted order.</span></div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;<span class="comment">  /// @tparam T The data type that the offset refers to.</span></div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;<span class="comment">  /// @param[in] v An array of type `Offset&lt;T&gt;` that contains the `table`</span></div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;<span class="comment">  /// offsets to store in the buffer in sorted order.</span></div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;<span class="comment">  /// @param[in] len The number of elements to store in the `vector`.</span></div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01397"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6"> 1397</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;Offset&lt;T&gt;</a>&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6">CreateVectorOfSortedTables</a>(</div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;      <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;T&gt;</a> *v, <span class="keywordtype">size_t</span> len) {</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;    std::sort(v, v + len, TableKeyComparator&lt;T&gt;(buf_));</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a>(v, len);</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;  }</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;<span class="comment">  /// @brief Serialize an array of `table` offsets as a `vector` in the buffer</span></div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;<span class="comment">  /// in sorted order.</span></div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;<span class="comment">  /// @tparam T The data type that the offset refers to.</span></div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;<span class="comment">  /// @param[in] v An array of type `Offset&lt;T&gt;` that contains the `table`</span></div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;<span class="comment">  /// offsets to store in the buffer in sorted order.</span></div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
+<div class="line"><a name="l01410"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135"> 1410</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;Offset&lt;T&gt;</a>&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135">CreateVectorOfSortedTables</a>(</div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;      std::vector&lt;<a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;T&gt;</a>&gt; *v) {</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6">CreateVectorOfSortedTables</a>(data(*v), v-&gt;size());</div>
 <div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;  }</div>
 <div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;<span class="comment">  /// @brief Write a struct by itself, typically to be part of a union.</span></div>
-<div class="line"><a name="l01416"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a43f51ba9c8f4f24ea2247a3979d095b8"> 1416</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;const T *&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a43f51ba9c8f4f24ea2247a3979d095b8">CreateStruct</a>(<span class="keyword">const</span> T &amp;structobj) {</div>
-<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;    Align(AlignOf&lt;T&gt;());</div>
-<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;    buf_.push_small(structobj);</div>
-<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;const T *&gt;</a>(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>());</div>
-<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;  }</div>
-<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;<span class="comment">  /// @brief The length of a FlatBuffer file header.</span></div>
-<div class="line"><a name="l01423"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19"> 1423</a></span>&#160;<span class="comment"></span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">kFileIdentifierLength</a> = 4;</div>
-<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;<span class="comment">  /// @brief Finish serializing a buffer by writing the root offset.</span></div>
-<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;<span class="comment">  /// @param[in] file_identifier If a `file_identifier` is given, the buffer</span></div>
-<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;<span class="comment">  /// will be prefixed with a standard FlatBuffers file header.</span></div>
-<div class="line"><a name="l01428"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912"> 1428</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">Finish</a>(<a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;T&gt;</a> root,</div>
-<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;                                   <span class="keyword">const</span> <span class="keywordtype">char</span> *file_identifier = <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;</div>
-<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;    <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">Finish</a>(root.o, file_identifier, <span class="keyword">false</span>);</div>
-<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;  }</div>
-<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;<span class="comment">  /// @brief Finish a buffer with a 32 bit size field pre-fixed (size of the</span></div>
-<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;<span class="comment">  /// buffer following the size field). These buffers are NOT compatible</span></div>
-<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;<span class="comment">  /// with standard buffers created by Finish, i.e. you can&#39;t call GetRoot</span></div>
-<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;<span class="comment">  /// on them, you have to use GetSizePrefixedRoot instead.</span></div>
-<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;<span class="comment">  /// All &gt;32 bit quantities in this buffer will be aligned when the whole</span></div>
-<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;<span class="comment">  /// size pre-fixed buffer is aligned.</span></div>
-<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;<span class="comment">  /// These kinds of buffers are useful for creating a stream of FlatBuffers.</span></div>
-<div class="line"><a name="l01441"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220"> 1441</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220">FinishSizePrefixed</a>(<a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;T&gt;</a> root,</div>
-<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;                                   <span class="keyword">const</span> <span class="keywordtype">char</span> *file_identifier = <span class="keyword">nullptr</span>) {</div>
-<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;    <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">Finish</a>(root.o, file_identifier, <span class="keyword">true</span>);</div>
-<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;  }</div>
-<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;</div>
-<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;  <span class="comment">// You shouldn&#39;t really be copying instances of this class.</span></div>
-<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;  <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4">FlatBufferBuilder</a>(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> &amp;);</div>
-<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;  <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> &amp;);</div>
-<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;</div>
-<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">Finish</a>(uoffset_t root, <span class="keyword">const</span> <span class="keywordtype">char</span> *file_identifier, <span class="keywordtype">bool</span> size_prefix) {</div>
-<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;    NotNested();</div>
-<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;    <span class="comment">// This will cause the whole buffer to be aligned.</span></div>
-<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;    PreAlign((size_prefix ? <span class="keyword">sizeof</span>(uoffset_t) : 0) +</div>
-<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;             <span class="keyword">sizeof</span>(uoffset_t) +</div>
-<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;             (file_identifier ? <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">kFileIdentifierLength</a> : 0),</div>
-<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;             minalign_);</div>
-<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;    <span class="keywordflow">if</span> (file_identifier) {</div>
-<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;      assert(strlen(file_identifier) == <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">kFileIdentifierLength</a>);</div>
-<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;      PushBytes(reinterpret_cast&lt;const uint8_t *&gt;(file_identifier),</div>
-<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;                <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">kFileIdentifierLength</a>);</div>
-<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;    }</div>
-<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;    PushElement(ReferTo(root));  <span class="comment">// Location of root.</span></div>
-<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;    <span class="keywordflow">if</span> (size_prefix) {</div>
-<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;      PushElement(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>());</div>
-<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;    }</div>
-<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;    finished = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;  }</div>
-<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;</div>
-<div class="line"><a name="l01470"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html"> 1470</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html">FieldLoc</a> {</div>
-<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;    uoffset_t off;</div>
-<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;    voffset_t id;</div>
-<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;  };</div>
-<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;</div>
-<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;  <a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> buf_;</div>
-<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;</div>
-<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;  <span class="comment">// Accumulating offsets of table members while it is being built.</span></div>
-<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;  std::vector&lt;FieldLoc&gt; offsetbuf_;</div>
-<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;</div>
-<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;  <span class="comment">// Ensure objects are not nested.</span></div>
-<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;  <span class="keywordtype">bool</span> nested;</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;<span class="comment">  /// @brief Specialized version of `CreateVector` for non-copying use cases.</span></div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;<span class="comment">  /// Write the data any time later to the returned buffer pointer `buf`.</span></div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;<span class="comment">  /// @param[in] len The number of elements to store in the `vector`.</span></div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;<span class="comment">  /// @param[in] elemsize The size of each element in the `vector`.</span></div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;<span class="comment">  /// @param[out] buf A pointer to a `uint8_t` pointer that can be</span></div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;<span class="comment">  /// written to at a later time to serialize the data into a `vector`</span></div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;<span class="comment">  /// in the buffer.</span></div>
+<div class="line"><a name="l01422"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c"> 1422</a></span>&#160;<span class="comment"></span>  uoffset_t <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c">CreateUninitializedVector</a>(<span class="keywordtype">size_t</span> len, <span class="keywordtype">size_t</span> elemsize,</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;                                      uint8_t **buf) {</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;    NotNested();</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;    StartVector(len, elemsize);</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;    buf_.make_space(len * elemsize);</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;    <span class="keyword">auto</span> vec_start = <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>();</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;    <span class="keyword">auto</span> vec_end = EndVector(len);</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;    *buf = buf_.data_at(vec_start);</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;    <span class="keywordflow">return</span> vec_end;</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;  }</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;<span class="comment">  /// @brief Specialized version of `CreateVector` for non-copying use cases.</span></div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;<span class="comment">  /// Write the data any time later to the returned buffer pointer `buf`.</span></div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;<span class="comment">  /// @tparam T The data type of the data that will be stored in the buffer</span></div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;<span class="comment">  /// as a `vector`.</span></div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;<span class="comment">  /// @param[in] len The number of elements to store in the `vector`.</span></div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;<span class="comment">  /// @param[out] buf A pointer to a pointer of type `T` that can be</span></div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;<span class="comment">  /// written to at a later time to serialize the data into a `vector`</span></div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;<span class="comment">  /// in the buffer.</span></div>
+<div class="line"><a name="l01441"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50"> 1441</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;T&gt;</a>&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50">CreateUninitializedVector</a>(</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;      <span class="keywordtype">size_t</span> len, T **buf) {</div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c">CreateUninitializedVector</a>(len, <span class="keyword">sizeof</span>(T),</div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;                                     reinterpret_cast&lt;uint8_t **&gt;(buf));</div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;  }</div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;<span class="comment">  /// @brief Write a struct by itself, typically to be part of a union.</span></div>
+<div class="line"><a name="l01448"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a43f51ba9c8f4f24ea2247a3979d095b8"> 1448</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;const T *&gt;</a> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a43f51ba9c8f4f24ea2247a3979d095b8">CreateStruct</a>(<span class="keyword">const</span> T &amp;structobj) {</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;    Align(AlignOf&lt;T&gt;());</div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;    buf_.push_small(structobj);</div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;const T *&gt;</a>(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>());</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;  }</div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;<span class="comment">  /// @brief The length of a FlatBuffer file header.</span></div>
+<div class="line"><a name="l01455"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19"> 1455</a></span>&#160;<span class="comment"></span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">kFileIdentifierLength</a> = 4;</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;<span class="comment">  /// @brief Finish serializing a buffer by writing the root offset.</span></div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;<span class="comment">  /// @param[in] file_identifier If a `file_identifier` is given, the buffer</span></div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;<span class="comment">  /// will be prefixed with a standard FlatBuffers file header.</span></div>
+<div class="line"><a name="l01460"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912"> 1460</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">Finish</a>(<a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;T&gt;</a> root,</div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;                                   <span class="keyword">const</span> <span class="keywordtype">char</span> *file_identifier = <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;    <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">Finish</a>(root.o, file_identifier, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;  }</div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;<span class="comment">  /// @brief Finish a buffer with a 32 bit size field pre-fixed (size of the</span></div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;<span class="comment">  /// buffer following the size field). These buffers are NOT compatible</span></div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;<span class="comment">  /// with standard buffers created by Finish, i.e. you can&#39;t call GetRoot</span></div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;<span class="comment">  /// on them, you have to use GetSizePrefixedRoot instead.</span></div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;<span class="comment">  /// All &gt;32 bit quantities in this buffer will be aligned when the whole</span></div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;<span class="comment">  /// size pre-fixed buffer is aligned.</span></div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;<span class="comment">  /// These kinds of buffers are useful for creating a stream of FlatBuffers.</span></div>
+<div class="line"><a name="l01473"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220"> 1473</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220">FinishSizePrefixed</a>(<a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;T&gt;</a> root,</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;                                   <span class="keyword">const</span> <span class="keywordtype">char</span> *file_identifier = <span class="keyword">nullptr</span>) {</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;    <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">Finish</a>(root.o, file_identifier, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;  }</div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;  <span class="comment">// You shouldn&#39;t really be copying instances of this class.</span></div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;  <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4">FlatBufferBuilder</a>(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> &amp;);</div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;  <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> &amp;);</div>
 <div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;</div>
-<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;  <span class="comment">// Ensure the buffer is finished before it is being accessed.</span></div>
-<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;  <span class="keywordtype">bool</span> finished;</div>
-<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;</div>
-<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;  std::vector&lt;uoffset_t&gt; vtables_;  <span class="comment">// todo: Could make this into a map?</span></div>
-<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;</div>
-<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;  <span class="keywordtype">size_t</span> minalign_;</div>
-<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;</div>
-<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;  <span class="keywordtype">bool</span> force_defaults_;  <span class="comment">// Serialize values equal to their defaults anyway.</span></div>
-<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;</div>
-<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;  <span class="keywordtype">bool</span> dedup_vtables_;</div>
-<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;</div>
-<div class="line"><a name="l01494"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html"> 1494</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">StringOffsetCompare</a> {</div>
-<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;    <a class="code" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">StringOffsetCompare</a>(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> &amp;buf) : buf_(&amp;buf) {}</div>
-<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;    <span class="keywordtype">bool</span> operator() (<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> &amp;a, <span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> &amp;b)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;      <span class="keyword">auto</span> stra = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><a class="code" href="structflatbuffers_1_1_string.html">String</a> *<span class="keyword">&gt;</span>(buf_-&gt;data_at(a.o));</div>
-<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;      <span class="keyword">auto</span> strb = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><a class="code" href="structflatbuffers_1_1_string.html">String</a> *<span class="keyword">&gt;</span>(buf_-&gt;data_at(b.o));</div>
-<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;      <span class="keywordflow">return</span> strncmp(stra-&gt;c_str(), strb-&gt;c_str(),</div>
-<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;                     std::min(stra-&gt;size(), strb-&gt;size()) + 1) &lt; 0;</div>
-<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;    }</div>
-<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;    <span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> *buf_;</div>
-<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;  };</div>
-<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;</div>
-<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;  <span class="comment">// For use with CreateSharedString. Instantiated on first use only.</span></div>
-<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;  <span class="keyword">typedef</span> std::set&lt;Offset&lt;String&gt;, <a class="code" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">StringOffsetCompare</a>&gt; StringOffsetMap;</div>
-<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;  StringOffsetMap *string_pool;</div>
-<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;};<span class="comment"></span></div>
-<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;<span class="comment">/// @}</span></div>
-<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;<span class="comment">/// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;<span class="comment"></span><span class="comment">// Helpers to get a typed pointer to the root object contained in the buffer.</span></div>
-<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T *GetMutableRoot(<span class="keywordtype">void</span> *buf) {</div>
-<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;  EndianCheck();</div>
-<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(<span class="keyword">reinterpret_cast&lt;</span>uint8_t *<span class="keyword">&gt;</span>(buf) +</div>
-<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;    EndianScalar(*reinterpret_cast&lt;uoffset_t *&gt;(buf)));</div>
-<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;}</div>
-<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;</div>
-<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">const</span> T *GetRoot(<span class="keyword">const</span> <span class="keywordtype">void</span> *buf) {</div>
-<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;  <span class="keywordflow">return</span> GetMutableRoot&lt;T&gt;(<span class="keyword">const_cast&lt;</span><span class="keywordtype">void</span> *<span class="keyword">&gt;</span>(buf));</div>
-<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;}</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">Finish</a>(uoffset_t root, <span class="keyword">const</span> <span class="keywordtype">char</span> *file_identifier, <span class="keywordtype">bool</span> size_prefix) {</div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;    NotNested();</div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;    <span class="comment">// This will cause the whole buffer to be aligned.</span></div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;    PreAlign((size_prefix ? <span class="keyword">sizeof</span>(uoffset_t) : 0) +</div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;             <span class="keyword">sizeof</span>(uoffset_t) +</div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;             (file_identifier ? <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">kFileIdentifierLength</a> : 0),</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;             minalign_);</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;    <span class="keywordflow">if</span> (file_identifier) {</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;      assert(strlen(file_identifier) == <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">kFileIdentifierLength</a>);</div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;      PushBytes(reinterpret_cast&lt;const uint8_t *&gt;(file_identifier),</div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;                <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">kFileIdentifierLength</a>);</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;    }</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;    PushElement(ReferTo(root));  <span class="comment">// Location of root.</span></div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;    <span class="keywordflow">if</span> (size_prefix) {</div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;      PushElement(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>());</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;    }</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;    finished = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;  }</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;</div>
+<div class="line"><a name="l01502"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html"> 1502</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html">FieldLoc</a> {</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;    uoffset_t off;</div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;    voffset_t id;</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;  };</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;</div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;  <a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> buf_;</div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;</div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;  <span class="comment">// Accumulating offsets of table members while it is being built.</span></div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;  std::vector&lt;FieldLoc&gt; offsetbuf_;</div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;  <span class="comment">// Track how much of the vtable is in use, so we can output the most compact</span></div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;  <span class="comment">// possible vtable.</span></div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;  voffset_t max_voffset_;</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;  <span class="comment">// Ensure objects are not nested.</span></div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;  <span class="keywordtype">bool</span> nested;</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;  <span class="comment">// Ensure the buffer is finished before it is being accessed.</span></div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;  <span class="keywordtype">bool</span> finished;</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;  std::vector&lt;uoffset_t&gt; vtables_;  <span class="comment">// todo: Could make this into a map?</span></div>
 <div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;</div>
-<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">const</span> T *GetSizePrefixedRoot(<span class="keyword">const</span> <span class="keywordtype">void</span> *buf) {</div>
-<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;  <span class="keywordflow">return</span> GetRoot&lt;T&gt;(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(buf) + <span class="keyword">sizeof</span>(uoffset_t));</div>
-<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;}</div>
-<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;<span class="comment">/// Helpers to get a typed pointer to objects that are currently being built.</span></div>
-<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;<span class="comment">/// @warning Creating new objects will lead to reallocations and invalidates</span></div>
-<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;<span class="comment">/// the pointer!</span></div>
-<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T *GetMutableTemporaryPointer(FlatBufferBuilder &amp;fbb,</div>
-<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;                                                   Offset&lt;T&gt; offset) {</div>
-<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(fbb.GetCurrentBufferPointer() +</div>
-<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;    fbb.GetSize() - offset.o);</div>
-<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;}</div>
-<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;</div>
-<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">const</span> T *GetTemporaryPointer(FlatBufferBuilder &amp;fbb,</div>
-<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;                                                  Offset&lt;T&gt; offset) {</div>
-<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;  <span class="keywordflow">return</span> GetMutableTemporaryPointer&lt;T&gt;(fbb, offset);</div>
-<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;}</div>
-<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;</div>
-<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;<span class="comment">/// @brief Get a pointer to the the file_identifier section of the buffer.</span></div>
-<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;<span class="comment">/// @return Returns a const char pointer to the start of the file_identifier</span></div>
-<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;<span class="comment">/// characters in the buffer.  The returned char * has length</span></div>
-<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;<span class="comment">/// &#39;flatbuffers::FlatBufferBuilder::kFileIdentifierLength&#39;.</span></div>
-<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;<span class="comment">/// This function is UNDEFINED for FlatBuffers whose schema does not include</span></div>
-<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;<span class="comment">/// a file_identifier (likely points at padding or the start of a the root</span></div>
-<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;<span class="comment">/// vtable).</span></div>
-<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;<span class="comment"></span><span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *GetBufferIdentifier(<span class="keyword">const</span> <span class="keywordtype">void</span> *buf) {</div>
-<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span> *<span class="keyword">&gt;</span>(buf) + <span class="keyword">sizeof</span>(uoffset_t);</div>
-<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;}</div>
-<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;</div>
-<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;<span class="comment">// Helper to see if the identifier in a buffer has the expected value.</span></div>
-<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> BufferHasIdentifier(<span class="keyword">const</span> <span class="keywordtype">void</span> *buf, <span class="keyword">const</span> <span class="keywordtype">char</span> *identifier) {</div>
-<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;  <span class="keywordflow">return</span> strncmp(GetBufferIdentifier(buf),</div>
-<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;                 identifier, <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">FlatBufferBuilder::kFileIdentifierLength</a>) == 0;</div>
-<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;}</div>
-<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;</div>
-<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;<span class="comment">// Helper class to verify the integrity of a FlatBuffer</span></div>
-<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;<span class="keyword">class </span>Verifier FLATBUFFERS_FINAL_CLASS {</div>
-<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;  Verifier(<span class="keyword">const</span> uint8_t *buf, <span class="keywordtype">size_t</span> buf_len, uoffset_t _max_depth = 64,</div>
-<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;           uoffset_t _max_tables = 1000000)</div>
-<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;    : buf_(buf), end_(buf + buf_len), depth_(0), max_depth_(_max_depth),</div>
-<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;      num_tables_(0), max_tables_(_max_tables)</div>
-<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;    #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</div>
-<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;        , upper_bound_(buf)</div>
-<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;    #endif</div>
-<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;    {}</div>
-<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;</div>
-<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;  <span class="comment">// Central location where any verification failures register.</span></div>
-<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;  <span class="keywordtype">bool</span> Check(<span class="keywordtype">bool</span> ok)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;<span class="preprocessor">    #ifdef FLATBUFFERS_DEBUG_VERIFICATION_FAILURE</span></div>
-<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;      assert(ok);</div>
-<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;<span class="preprocessor">    #endif</span></div>
-<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;<span class="preprocessor">    #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</span></div>
-<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;      <span class="keywordflow">if</span> (!ok)</div>
-<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;        upper_bound_ = buf_;</div>
-<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;<span class="preprocessor">    #endif</span></div>
-<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;    <span class="keywordflow">return</span> ok;</div>
-<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;  }</div>
-<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;</div>
-<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;  <span class="comment">// Verify any range within the buffer.</span></div>
-<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;  <span class="keywordtype">bool</span> Verify(<span class="keyword">const</span> <span class="keywordtype">void</span> *elem, <span class="keywordtype">size_t</span> elem_len)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;<span class="preprocessor">    #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</span></div>
-<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;      <span class="keyword">auto</span> upper_bound = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(elem) + elem_len;</div>
-<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;      <span class="keywordflow">if</span> (upper_bound_ &lt; upper_bound)</div>
-<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;        upper_bound_ =  upper_bound;</div>
-<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;<span class="preprocessor">    #endif</span></div>
-<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;    <span class="keywordflow">return</span> Check(elem_len &lt;= (<span class="keywordtype">size_t</span>) (end_ - buf_) &amp;&amp;</div>
-<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;                 elem &gt;= buf_ &amp;&amp;</div>
-<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;                 elem &lt;= end_ - elem_len);</div>
-<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;  }</div>
-<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;</div>
-<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;  <span class="comment">// Verify a range indicated by sizeof(T).</span></div>
-<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> Verify(<span class="keyword">const</span> <span class="keywordtype">void</span> *elem)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;    <span class="keywordflow">return</span> Verify(elem, <span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;  }</div>
-<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;</div>
-<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;  <span class="comment">// Verify a pointer (may be NULL) of a table type.</span></div>
-<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifyTable(<span class="keyword">const</span> T *table) {</div>
-<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;    <span class="keywordflow">return</span> !table || table-&gt;Verify(*<span class="keyword">this</span>);</div>
-<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160;  }</div>
-<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;</div>
-<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;  <span class="comment">// Verify a pointer (may be NULL) of any vector type.</span></div>
-<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> Verify(<span class="keyword">const</span> Vector&lt;T&gt; *vec)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;    <span class="keyword">const</span> uint8_t *end;</div>
-<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;    <span class="keywordflow">return</span> !vec ||</div>
-<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;           VerifyVector(reinterpret_cast&lt;const uint8_t *&gt;(vec), <span class="keyword">sizeof</span>(T),</div>
-<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;                        &amp;end);</div>
-<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;  }</div>
-<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;</div>
-<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;  <span class="comment">// Verify a pointer (may be NULL) of a vector to struct.</span></div>
-<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> Verify(<span class="keyword">const</span> Vector&lt;const T *&gt; *vec)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;    <span class="keywordflow">return</span> Verify(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Vector&lt;T&gt; *<span class="keyword">&gt;</span>(vec));</div>
-<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;  }</div>
-<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;</div>
-<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;  <span class="comment">// Verify a pointer (may be NULL) to string.</span></div>
-<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;  <span class="keywordtype">bool</span> Verify(<span class="keyword">const</span> String *str)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;    <span class="keyword">const</span> uint8_t *end;</div>
-<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;    <span class="keywordflow">return</span> !str ||</div>
-<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;           (VerifyVector(reinterpret_cast&lt;const uint8_t *&gt;(str), 1, &amp;end) &amp;&amp;</div>
-<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;            Verify(end, 1) &amp;&amp;      <span class="comment">// Must have terminator</span></div>
-<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;            Check(*end == <span class="charliteral">&#39;\0&#39;</span>));  <span class="comment">// Terminating byte must be 0.</span></div>
-<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;  }</div>
-<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;</div>
-<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;  <span class="comment">// Common code between vectors and strings.</span></div>
-<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;  <span class="keywordtype">bool</span> VerifyVector(<span class="keyword">const</span> uint8_t *vec, <span class="keywordtype">size_t</span> elem_size,</div>
-<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;                    <span class="keyword">const</span> uint8_t **end)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;    <span class="comment">// Check we can read the size field.</span></div>
-<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;    <span class="keywordflow">if</span> (!Verify&lt;uoffset_t&gt;(vec)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;    <span class="comment">// Check the whole array. If this is a string, the byte past the array</span></div>
-<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;    <span class="comment">// must be 0.</span></div>
-<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;    <span class="keyword">auto</span> size = ReadScalar&lt;uoffset_t&gt;(vec);</div>
-<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;    <span class="keyword">auto</span> max_elems = FLATBUFFERS_MAX_BUFFER_SIZE / elem_size;</div>
-<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;    <span class="keywordflow">if</span> (!Check(size &lt; max_elems))</div>
-<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;  <span class="comment">// Protect against byte_size overflowing.</span></div>
-<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;    <span class="keyword">auto</span> byte_size = <span class="keyword">sizeof</span>(size) + elem_size * size;</div>
-<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;    *end = vec + byte_size;</div>
-<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;    <span class="keywordflow">return</span> Verify(vec, byte_size);</div>
-<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;  }</div>
-<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;</div>
-<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;  <span class="comment">// Special case for string contents, after the above has been called.</span></div>
-<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;  <span class="keywordtype">bool</span> VerifyVectorOfStrings(<span class="keyword">const</span> Vector&lt;Offset&lt;String&gt;&gt; *vec)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;      <span class="keywordflow">if</span> (vec) {</div>
-<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160;        <span class="keywordflow">for</span> (uoffset_t i = 0; i &lt; vec-&gt;size(); i++) {</div>
-<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;          <span class="keywordflow">if</span> (!Verify(vec-&gt;Get(i))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;        }</div>
-<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;      }</div>
-<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;  }</div>
-<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;</div>
-<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;  <span class="comment">// Special case for table contents, after the above has been called.</span></div>
-<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifyVectorOfTables(<span class="keyword">const</span> Vector&lt;Offset&lt;T&gt;&gt; *vec) {</div>
-<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;    <span class="keywordflow">if</span> (vec) {</div>
-<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;      <span class="keywordflow">for</span> (uoffset_t i = 0; i &lt; vec-&gt;size(); i++) {</div>
-<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160;        <span class="keywordflow">if</span> (!vec-&gt;Get(i)-&gt;Verify(*<span class="keyword">this</span>)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;      }</div>
-<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;    }</div>
-<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;  <span class="keywordtype">size_t</span> minalign_;</div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;</div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;  <span class="keywordtype">bool</span> force_defaults_;  <span class="comment">// Serialize values equal to their defaults anyway.</span></div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;</div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;  <span class="keywordtype">bool</span> dedup_vtables_;</div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;</div>
+<div class="line"><a name="l01529"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html"> 1529</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">StringOffsetCompare</a> {</div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;    <a class="code" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">StringOffsetCompare</a>(<span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> &amp;buf) : buf_(&amp;buf) {}</div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;    <span class="keywordtype">bool</span> operator() (<span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> &amp;a, <span class="keyword">const</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;String&gt;</a> &amp;b)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;      <span class="keyword">auto</span> stra = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><a class="code" href="structflatbuffers_1_1_string.html">String</a> *<span class="keyword">&gt;</span>(buf_-&gt;data_at(a.o));</div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;      <span class="keyword">auto</span> strb = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><a class="code" href="structflatbuffers_1_1_string.html">String</a> *<span class="keyword">&gt;</span>(buf_-&gt;data_at(b.o));</div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;      <span class="keywordflow">return</span> strncmp(stra-&gt;c_str(), strb-&gt;c_str(),</div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;                     (std::min)(stra-&gt;size(), strb-&gt;size()) + 1) &lt; 0;</div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;    }</div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;    <span class="keyword">const</span> <a class="code" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> *buf_;</div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;  };</div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;</div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;  <span class="comment">// For use with CreateSharedString. Instantiated on first use only.</span></div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;  <span class="keyword">typedef</span> std::set&lt;Offset&lt;String&gt;, <a class="code" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">StringOffsetCompare</a>&gt; StringOffsetMap;</div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;  StringOffsetMap *string_pool;</div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;</div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;  <span class="comment">// Allocates space for a vector of structures.</span></div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;  <span class="comment">// Must be completed with EndVectorOfStructs().</span></div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T* StartVectorOfStructs(<span class="keywordtype">size_t</span> vector_size) {</div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;    StartVector(vector_size * <span class="keyword">sizeof</span>(T) / AlignOf&lt;T&gt;(), AlignOf&lt;T&gt;());</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(buf_.make_space(vector_size * <span class="keyword">sizeof</span>(T)));</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;  }</div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;</div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;  <span class="comment">// End the vector of structues in the flatbuffers.</span></div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;  <span class="comment">// Vector should have previously be started with StartVectorOfStructs().</span></div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt; EndVectorOfStructs(</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;      <span class="keywordtype">size_t</span> vector_size) {</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;Vector&lt;const T *&gt;</a>&gt;(EndVector(vector_size));</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;  }</div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;};<span class="comment"></span></div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;<span class="comment">/// @}</span></div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;<span class="comment"></span><span class="comment"></span></div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;<span class="comment">/// @cond FLATBUFFERS_INTERNAL</span></div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;<span class="comment"></span><span class="comment">// Helpers to get a typed pointer to the root object contained in the buffer.</span></div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T *GetMutableRoot(<span class="keywordtype">void</span> *buf) {</div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;  EndianCheck();</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(<span class="keyword">reinterpret_cast&lt;</span>uint8_t *<span class="keyword">&gt;</span>(buf) +</div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;    EndianScalar(*reinterpret_cast&lt;uoffset_t *&gt;(buf)));</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;}</div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;</div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">const</span> T *GetRoot(<span class="keyword">const</span> <span class="keywordtype">void</span> *buf) {</div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;  <span class="keywordflow">return</span> GetMutableRoot&lt;T&gt;(<span class="keyword">const_cast&lt;</span><span class="keywordtype">void</span> *<span class="keyword">&gt;</span>(buf));</div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;}</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">const</span> T *GetSizePrefixedRoot(<span class="keyword">const</span> <span class="keywordtype">void</span> *buf) {</div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;  <span class="keywordflow">return</span> GetRoot&lt;T&gt;(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(buf) + <span class="keyword">sizeof</span>(uoffset_t));</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;}</div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;<span class="comment">/// Helpers to get a typed pointer to objects that are currently being built.</span></div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;<span class="comment">/// @warning Creating new objects will lead to reallocations and invalidates</span></div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;<span class="comment">/// the pointer!</span></div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T *GetMutableTemporaryPointer(FlatBufferBuilder &amp;fbb,</div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;                                                   Offset&lt;T&gt; offset) {</div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(fbb.GetCurrentBufferPointer() +</div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;    fbb.GetSize() - offset.o);</div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;}</div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;</div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">const</span> T *GetTemporaryPointer(FlatBufferBuilder &amp;fbb,</div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;                                                  Offset&lt;T&gt; offset) {</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;  <span class="keywordflow">return</span> GetMutableTemporaryPointer&lt;T&gt;(fbb, offset);</div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;}</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;<span class="comment">/// @brief Get a pointer to the the file_identifier section of the buffer.</span></div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;<span class="comment">/// @return Returns a const char pointer to the start of the file_identifier</span></div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;<span class="comment">/// characters in the buffer.  The returned char * has length</span></div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;<span class="comment">/// &#39;flatbuffers::FlatBufferBuilder::kFileIdentifierLength&#39;.</span></div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;<span class="comment">/// This function is UNDEFINED for FlatBuffers whose schema does not include</span></div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;<span class="comment">/// a file_identifier (likely points at padding or the start of a the root</span></div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;<span class="comment">/// vtable).</span></div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;<span class="comment"></span><span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *GetBufferIdentifier(<span class="keyword">const</span> <span class="keywordtype">void</span> *buf) {</div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span> *<span class="keyword">&gt;</span>(buf) + <span class="keyword">sizeof</span>(uoffset_t);</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;}</div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160;<span class="comment">// Helper to see if the identifier in a buffer has the expected value.</span></div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> BufferHasIdentifier(<span class="keyword">const</span> <span class="keywordtype">void</span> *buf, <span class="keyword">const</span> <span class="keywordtype">char</span> *identifier) {</div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;  <span class="keywordflow">return</span> strncmp(GetBufferIdentifier(buf),</div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;                 identifier, <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">FlatBufferBuilder::kFileIdentifierLength</a>) == 0;</div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;}</div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;</div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;<span class="comment">// Helper class to verify the integrity of a FlatBuffer</span></div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;<span class="keyword">class </span>Verifier FLATBUFFERS_FINAL_CLASS {</div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;  Verifier(<span class="keyword">const</span> uint8_t *buf, <span class="keywordtype">size_t</span> buf_len, uoffset_t _max_depth = 64,</div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;           uoffset_t _max_tables = 1000000)</div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;    : buf_(buf), end_(buf + buf_len), depth_(0), max_depth_(_max_depth),</div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;      num_tables_(0), max_tables_(_max_tables)</div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;    #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;        , upper_bound_(buf)</div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;    #endif</div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;    {}</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;  <span class="comment">// Central location where any verification failures register.</span></div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;  <span class="keywordtype">bool</span> Check(<span class="keywordtype">bool</span> ok)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;<span class="preprocessor">    #ifdef FLATBUFFERS_DEBUG_VERIFICATION_FAILURE</span></div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;      assert(ok);</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;<span class="preprocessor">    #endif</span></div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;<span class="preprocessor">    #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</span></div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;      <span class="keywordflow">if</span> (!ok)</div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;        upper_bound_ = buf_;</div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;<span class="preprocessor">    #endif</span></div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;    <span class="keywordflow">return</span> ok;</div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;  }</div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;  <span class="comment">// Verify any range within the buffer.</span></div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;  <span class="keywordtype">bool</span> Verify(<span class="keyword">const</span> <span class="keywordtype">void</span> *elem, <span class="keywordtype">size_t</span> elem_len)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;<span class="preprocessor">    #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</span></div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;      <span class="keyword">auto</span> upper_bound = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(elem) + elem_len;</div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;      <span class="keywordflow">if</span> (upper_bound_ &lt; upper_bound)</div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;        upper_bound_ =  upper_bound;</div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;<span class="preprocessor">    #endif</span></div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;    <span class="keywordflow">return</span> Check(elem_len &lt;= (<span class="keywordtype">size_t</span>) (end_ - buf_) &amp;&amp;</div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;                 elem &gt;= buf_ &amp;&amp;</div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;                 elem &lt;= end_ - elem_len);</div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;  }</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;</div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;  <span class="comment">// Verify a range indicated by sizeof(T).</span></div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> Verify(<span class="keyword">const</span> <span class="keywordtype">void</span> *elem)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;    <span class="keywordflow">return</span> Verify(elem, <span class="keyword">sizeof</span>(T));</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;  }</div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;</div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;  <span class="comment">// Verify a pointer (may be NULL) of a table type.</span></div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifyTable(<span class="keyword">const</span> T *table) {</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;    <span class="keywordflow">return</span> !table || table-&gt;Verify(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;  }</div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;  <span class="comment">// Verify a pointer (may be NULL) of any vector type.</span></div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> Verify(<span class="keyword">const</span> Vector&lt;T&gt; *vec)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160;    <span class="keyword">const</span> uint8_t *end;</div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;    <span class="keywordflow">return</span> !vec ||</div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;           VerifyVector(reinterpret_cast&lt;const uint8_t *&gt;(vec), <span class="keyword">sizeof</span>(T),</div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;                        &amp;end);</div>
 <div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;  }</div>
 <div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;</div>
-<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifyBufferFromStart(<span class="keyword">const</span> <span class="keywordtype">char</span> *identifier,</div>
-<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;                                                  <span class="keyword">const</span> uint8_t *start) {</div>
-<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;    <span class="keywordflow">if</span> (identifier &amp;&amp;</div>
-<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;        (<span class="keywordtype">size_t</span>(end_ - start) &lt; 2 * <span class="keyword">sizeof</span>(flatbuffers::uoffset_t) ||</div>
-<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;         !BufferHasIdentifier(start, identifier))) {</div>
-<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160;    }</div>
-<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;</div>
-<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;    <span class="comment">// Call T::Verify, which must be in the generated code for this type.</span></div>
-<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;    <span class="keyword">auto</span> o = VerifyOffset(start);</div>
-<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;    <span class="keywordflow">return</span> o &amp;&amp;</div>
-<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;      <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>T *<span class="keyword">&gt;</span>(start + o)-&gt;</div>
-<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;        Verify(*<span class="keyword">this</span>)</div>
-<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;        <span class="preprocessor">#ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</span></div>
-<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;          &amp;&amp; GetComputedSize()</div>
-<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;        <span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;            ;</div>
-<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;  }</div>
-<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;</div>
-<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;  <span class="comment">// Verify this whole buffer, starting with root type T.</span></div>
-<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifyBuffer() {</div>
-<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;    <span class="keywordflow">return</span> VerifyBuffer&lt;T&gt;(<span class="keyword">nullptr</span>);</div>
-<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;  }</div>
-<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;</div>
-<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifyBuffer(<span class="keyword">const</span> <span class="keywordtype">char</span> *identifier) {</div>
-<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;    <span class="keywordflow">return</span> VerifyBufferFromStart&lt;T&gt;(identifier, buf_);</div>
-<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;  }</div>
-<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;</div>
-<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifySizePrefixedBuffer(<span class="keyword">const</span> <span class="keywordtype">char</span> *identifier) {</div>
-<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;    <span class="keywordflow">return</span> Verify&lt;uoffset_t&gt;(buf_) &amp;&amp;</div>
-<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;           ReadScalar&lt;uoffset_t&gt;(buf_) == end_ - buf_ - <span class="keyword">sizeof</span>(uoffset_t) &amp;&amp;</div>
-<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;           VerifyBufferFromStart&lt;T&gt;(identifier, buf_ + <span class="keyword">sizeof</span>(uoffset_t));</div>
-<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;  }</div>
-<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;</div>
-<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;  uoffset_t VerifyOffset(<span class="keyword">const</span> uint8_t *start)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;    <span class="keywordflow">if</span> (!Verify&lt;uoffset_t&gt;(start)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;    <span class="keyword">auto</span> o = ReadScalar&lt;uoffset_t&gt;(start);</div>
-<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;    Check(o != 0);</div>
-<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;    <span class="keywordflow">return</span> o;</div>
-<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;  }</div>
-<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;</div>
-<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;  <span class="comment">// Called at the start of a table to increase counters measuring data</span></div>
-<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;  <span class="comment">// structure depth and amount, and possibly bails out with false if</span></div>
-<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;  <span class="comment">// limits set by the constructor have been hit. Needs to be balanced</span></div>
-<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;  <span class="comment">// with EndTable().</span></div>
-<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;  <span class="keywordtype">bool</span> VerifyComplexity() {</div>
-<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;    depth_++;</div>
-<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;    num_tables_++;</div>
-<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;    <span class="keywordflow">return</span> Check(depth_ &lt;= max_depth_ &amp;&amp; num_tables_ &lt;= max_tables_);</div>
-<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;  }</div>
-<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;</div>
-<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;  <span class="comment">// Called at the end of a table to pop the depth count.</span></div>
-<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;  <span class="keywordtype">bool</span> EndTable() {</div>
-<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;    depth_--;</div>
-<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;  }</div>
-<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;</div>
-<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;<span class="preprocessor">  #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</span></div>
-<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;  <span class="comment">// Returns the message size in bytes</span></div>
-<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;  <span class="keywordtype">size_t</span> GetComputedSize()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;    uintptr_t size = upper_bound_ - buf_;</div>
-<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;    <span class="comment">// Align the size to uoffset_t</span></div>
-<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;    size = (size - 1 + <span class="keyword">sizeof</span>(uoffset_t)) &amp; ~(<span class="keyword">sizeof</span>(uoffset_t) - 1);</div>
-<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;    <span class="keywordflow">return</span> (buf_  + size &gt; end_) ?  0 : size;</div>
-<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;  }</div>
-<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;</div>
-<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;  <span class="keyword">const</span> uint8_t *buf_;</div>
-<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;  <span class="keyword">const</span> uint8_t *end_;</div>
-<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;  uoffset_t depth_;</div>
-<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;  uoffset_t max_depth_;</div>
-<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;  uoffset_t num_tables_;</div>
-<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;  uoffset_t max_tables_;</div>
-<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;<span class="preprocessor">#ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</span></div>
-<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;  <span class="keyword">mutable</span> <span class="keyword">const</span> uint8_t *upper_bound_;</div>
-<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;};</div>
-<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;</div>
-<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;<span class="comment">// Convenient way to bundle a buffer and its length, to pass it around</span></div>
-<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;<span class="comment">// typed by its root.</span></div>
-<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;<span class="comment">// A BufferRef does not own its buffer.</span></div>
-<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;<span class="keyword">struct </span>BufferRefBase {};  <span class="comment">// for std::is_base_of</span></div>
-<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>BufferRef : BufferRefBase {</div>
-<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;  BufferRef() : buf(nullptr), len(0), must_free(false) {}</div>
-<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;  BufferRef(uint8_t *_buf, uoffset_t _len)</div>
-<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;    : buf(_buf), len(_len), must_free(false) {}</div>
-<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;</div>
-<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;  ~BufferRef() { <span class="keywordflow">if</span> (must_free) free(buf); }</div>
-<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;</div>
-<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160;  <span class="keyword">const</span> T *GetRoot()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> flatbuffers::GetRoot&lt;T&gt;(buf); }</div>
-<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;</div>
-<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;  <span class="keywordtype">bool</span> Verify() {</div>
-<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;    Verifier verifier(buf, len);</div>
-<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;    <span class="keywordflow">return</span> verifier.VerifyBuffer&lt;T&gt;(<span class="keyword">nullptr</span>);</div>
-<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;  }</div>
-<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;</div>
-<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;  uint8_t *buf;</div>
-<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;  uoffset_t len;</div>
-<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;  <span class="keywordtype">bool</span> must_free;</div>
-<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;};</div>
-<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;</div>
-<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;<span class="comment">// &quot;structs&quot; are flat structures that do not have an offset table, thus</span></div>
-<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;<span class="comment">// always have all members present and do not support forwards/backwards</span></div>
-<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;<span class="comment">// compatible extensions.</span></div>
-<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;</div>
-<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;<span class="keyword">class </span>Struct FLATBUFFERS_FINAL_CLASS {</div>
-<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T GetField(uoffset_t o)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;    <span class="keywordflow">return</span> ReadScalar&lt;T&gt;(&amp;data_[o]);</div>
-<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;  }</div>
-<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;</div>
-<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T GetStruct(uoffset_t o)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T<span class="keyword">&gt;</span>(&amp;data_[o]);</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;  <span class="comment">// Verify a pointer (may be NULL) of a vector to struct.</span></div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> Verify(<span class="keyword">const</span> Vector&lt;const T *&gt; *vec)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;    <span class="keywordflow">return</span> Verify(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Vector&lt;T&gt; *<span class="keyword">&gt;</span>(vec));</div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;  }</div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;  <span class="comment">// Verify a pointer (may be NULL) to string.</span></div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160;  <span class="keywordtype">bool</span> Verify(<span class="keyword">const</span> String *str)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;    <span class="keyword">const</span> uint8_t *end;</div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;    <span class="keywordflow">return</span> !str ||</div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;           (VerifyVector(reinterpret_cast&lt;const uint8_t *&gt;(str), 1, &amp;end) &amp;&amp;</div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;            Verify(end, 1) &amp;&amp;      <span class="comment">// Must have terminator</span></div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;            Check(*end == <span class="charliteral">&#39;\0&#39;</span>));  <span class="comment">// Terminating byte must be 0.</span></div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;  }</div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;</div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;  <span class="comment">// Common code between vectors and strings.</span></div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;  <span class="keywordtype">bool</span> VerifyVector(<span class="keyword">const</span> uint8_t *vec, <span class="keywordtype">size_t</span> elem_size,</div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;                    <span class="keyword">const</span> uint8_t **end)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;    <span class="comment">// Check we can read the size field.</span></div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;    <span class="keywordflow">if</span> (!Verify&lt;uoffset_t&gt;(vec)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;    <span class="comment">// Check the whole array. If this is a string, the byte past the array</span></div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;    <span class="comment">// must be 0.</span></div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;    <span class="keyword">auto</span> size = ReadScalar&lt;uoffset_t&gt;(vec);</div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;    <span class="keyword">auto</span> max_elems = FLATBUFFERS_MAX_BUFFER_SIZE / elem_size;</div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;    <span class="keywordflow">if</span> (!Check(size &lt; max_elems))</div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;  <span class="comment">// Protect against byte_size overflowing.</span></div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;    <span class="keyword">auto</span> byte_size = <span class="keyword">sizeof</span>(size) + elem_size * size;</div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;    *end = vec + byte_size;</div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;    <span class="keywordflow">return</span> Verify(vec, byte_size);</div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;  }</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;</div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;  <span class="comment">// Special case for string contents, after the above has been called.</span></div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;  <span class="keywordtype">bool</span> VerifyVectorOfStrings(<span class="keyword">const</span> Vector&lt;Offset&lt;String&gt;&gt; *vec)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;      <span class="keywordflow">if</span> (vec) {</div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;        <span class="keywordflow">for</span> (uoffset_t i = 0; i &lt; vec-&gt;size(); i++) {</div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;          <span class="keywordflow">if</span> (!Verify(vec-&gt;Get(i))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;        }</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;      }</div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;  }</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;  <span class="comment">// Special case for table contents, after the above has been called.</span></div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifyVectorOfTables(<span class="keyword">const</span> Vector&lt;Offset&lt;T&gt;&gt; *vec) {</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;    <span class="keywordflow">if</span> (vec) {</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;      <span class="keywordflow">for</span> (uoffset_t i = 0; i &lt; vec-&gt;size(); i++) {</div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;        <span class="keywordflow">if</span> (!vec-&gt;Get(i)-&gt;Verify(*<span class="keyword">this</span>)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;      }</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;    }</div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;  }</div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifyBufferFromStart(<span class="keyword">const</span> <span class="keywordtype">char</span> *identifier,</div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;                                                  <span class="keyword">const</span> uint8_t *start) {</div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;    <span class="keywordflow">if</span> (identifier &amp;&amp;</div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;        (<span class="keywordtype">size_t</span>(end_ - start) &lt; 2 * <span class="keyword">sizeof</span>(flatbuffers::uoffset_t) ||</div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;         !BufferHasIdentifier(start, identifier))) {</div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;    }</div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;    <span class="comment">// Call T::Verify, which must be in the generated code for this type.</span></div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;    <span class="keyword">auto</span> o = VerifyOffset(start);</div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;    <span class="keywordflow">return</span> o &amp;&amp;</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;      <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>T *<span class="keyword">&gt;</span>(start + o)-&gt;</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;        Verify(*<span class="keyword">this</span>)</div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;        <span class="preprocessor">#ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</span></div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;          &amp;&amp; GetComputedSize()</div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;        <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;            ;</div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160;  }</div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;</div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;  <span class="comment">// Verify this whole buffer, starting with root type T.</span></div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifyBuffer() {</div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;    <span class="keywordflow">return</span> VerifyBuffer&lt;T&gt;(<span class="keyword">nullptr</span>);</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;  }</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;</div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifyBuffer(<span class="keyword">const</span> <span class="keywordtype">char</span> *identifier) {</div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;    <span class="keywordflow">return</span> VerifyBufferFromStart&lt;T&gt;(identifier, buf_);</div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;  }</div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;</div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifySizePrefixedBuffer(<span class="keyword">const</span> <span class="keywordtype">char</span> *identifier) {</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;    <span class="keywordflow">return</span> Verify&lt;uoffset_t&gt;(buf_) &amp;&amp;</div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;           ReadScalar&lt;uoffset_t&gt;(buf_) == end_ - buf_ - <span class="keyword">sizeof</span>(uoffset_t) &amp;&amp;</div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;           VerifyBufferFromStart&lt;T&gt;(identifier, buf_ + <span class="keyword">sizeof</span>(uoffset_t));</div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;  }</div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;</div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;  uoffset_t VerifyOffset(<span class="keyword">const</span> uint8_t *start)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;    <span class="keywordflow">if</span> (!Verify&lt;uoffset_t&gt;(start)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;    <span class="keyword">auto</span> o = ReadScalar&lt;uoffset_t&gt;(start);</div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;    Check(o != 0);</div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;    <span class="keywordflow">return</span> o;</div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;  }</div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160;</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;  <span class="comment">// Called at the start of a table to increase counters measuring data</span></div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;  <span class="comment">// structure depth and amount, and possibly bails out with false if</span></div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;  <span class="comment">// limits set by the constructor have been hit. Needs to be balanced</span></div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;  <span class="comment">// with EndTable().</span></div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;  <span class="keywordtype">bool</span> VerifyComplexity() {</div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;    depth_++;</div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;    num_tables_++;</div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;    <span class="keywordflow">return</span> Check(depth_ &lt;= max_depth_ &amp;&amp; num_tables_ &lt;= max_tables_);</div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;  }</div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;</div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;  <span class="comment">// Called at the end of a table to pop the depth count.</span></div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;  <span class="keywordtype">bool</span> EndTable() {</div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;    depth_--;</div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;  }</div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;</div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160;<span class="preprocessor">  #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</span></div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;  <span class="comment">// Returns the message size in bytes</span></div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;  <span class="keywordtype">size_t</span> GetComputedSize()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;    uintptr_t size = upper_bound_ - buf_;</div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;    <span class="comment">// Align the size to uoffset_t</span></div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;    size = (size - 1 + <span class="keyword">sizeof</span>(uoffset_t)) &amp; ~(<span class="keyword">sizeof</span>(uoffset_t) - 1);</div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;    <span class="keywordflow">return</span> (buf_  + size &gt; end_) ?  0 : size;</div>
 <div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;  }</div>
-<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;</div>
-<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;  <span class="keyword">const</span> uint8_t *GetAddressOf(uoffset_t o)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> &amp;data_[o]; }</div>
-<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160;  uint8_t *GetAddressOf(uoffset_t o) { <span class="keywordflow">return</span> &amp;data_[o]; }</div>
-<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;</div>
-<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;  uint8_t data_[1];</div>
-<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;};</div>
-<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;</div>
-<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;<span class="comment">// &quot;tables&quot; use an offset table (possibly shared) that allows fields to be</span></div>
-<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160;<span class="comment">// omitted and added at will, but uses an extra indirection to read.</span></div>
-<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;<span class="keyword">class </span>Table {</div>
-<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;  <span class="keyword">const</span> uint8_t *GetVTable()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;    <span class="keywordflow">return</span> data_ - ReadScalar&lt;soffset_t&gt;(data_);</div>
-<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;  }</div>
-<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;</div>
-<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;  <span class="comment">// This gets the field offset for any of the functions below it, or 0</span></div>
-<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;  <span class="comment">// if the field was not present.</span></div>
-<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;  voffset_t GetOptionalFieldOffset(voffset_t field)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;    <span class="comment">// The vtable offset is always at the start.</span></div>
-<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160;    <span class="keyword">auto</span> vtable = GetVTable();</div>
-<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;    <span class="comment">// The first element is the size of the vtable (fields + type id + itself).</span></div>
-<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;    <span class="keyword">auto</span> vtsize = ReadScalar&lt;voffset_t&gt;(vtable);</div>
-<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;    <span class="comment">// If the field we&#39;re accessing is outside the vtable, we&#39;re reading older</span></div>
-<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160;    <span class="comment">// data, so it&#39;s the same as if the offset was 0 (not present).</span></div>
-<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;    <span class="keywordflow">return</span> field &lt; vtsize ? ReadScalar&lt;voffset_t&gt;(vtable + field) : 0;</div>
-<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;  }</div>
-<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;</div>
-<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T GetField(voffset_t field, T defaultval)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;    <span class="keywordflow">return</span> field_offset ? ReadScalar&lt;T&gt;(data_ + field_offset) : defaultval;</div>
-<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160;  }</div>
-<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160;</div>
-<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P&gt; P GetPointer(voffset_t field) {</div>
-<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160;    <span class="keyword">auto</span> p = data_ + field_offset;</div>
-<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;    <span class="keywordflow">return</span> field_offset</div>
-<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;      ? <span class="keyword">reinterpret_cast&lt;</span>P<span class="keyword">&gt;</span>(p + ReadScalar&lt;uoffset_t&gt;(p))</div>
-<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160;      : nullptr;</div>
-<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;  }</div>
-<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P&gt; P GetPointer(voffset_t field)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span>Table *<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;GetPointer&lt;P&gt;(field);</div>
-<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;  }</div>
-<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160;</div>
-<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P&gt; P GetStruct(voffset_t field)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;    <span class="keyword">auto</span> p = <span class="keyword">const_cast&lt;</span>uint8_t *<span class="keyword">&gt;</span>(data_ + field_offset);</div>
-<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;    <span class="keywordflow">return</span> field_offset ? <span class="keyword">reinterpret_cast&lt;</span>P<span class="keyword">&gt;</span>(p) : <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;  }</div>
-<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;</div>
-<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> SetField(voffset_t field, T val, T def) {</div>
-<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;    <span class="keywordflow">if</span> (!field_offset) <span class="keywordflow">return</span> val == def;</div>
-<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;    WriteScalar(data_ + field_offset, val);</div>
-<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;  }</div>
-<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;</div>
-<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;  <span class="keywordtype">bool</span> SetPointer(voffset_t field, <span class="keyword">const</span> uint8_t *val) {</div>
-<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;    <span class="keywordflow">if</span> (!field_offset) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;    WriteScalar(data_ + field_offset,</div>
-<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;                static_cast&lt;uoffset_t&gt;(val - (data_ + field_offset)));</div>
-<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;  }</div>
-<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;</div>
-<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160;  uint8_t *GetAddressOf(voffset_t field) {</div>
-<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;    <span class="keywordflow">return</span> field_offset ? data_ + field_offset : <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;  }</div>
-<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;  <span class="keyword">const</span> uint8_t *GetAddressOf(voffset_t field)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span>Table *<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;GetAddressOf(field);</div>
-<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;  }</div>
-<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;</div>
-<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;  <span class="keywordtype">bool</span> CheckField(voffset_t field)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160;    <span class="keywordflow">return</span> GetOptionalFieldOffset(field) != 0;</div>
-<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;  }</div>
-<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;</div>
-<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;  <span class="comment">// Verify the vtable of this table.</span></div>
-<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;  <span class="comment">// Call this once per table, followed by VerifyField once per field.</span></div>
-<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;  <span class="keywordtype">bool</span> VerifyTableStart(Verifier &amp;verifier)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;    <span class="comment">// Check the vtable offset.</span></div>
-<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;    <span class="keywordflow">if</span> (!verifier.Verify&lt;soffset_t&gt;(data_)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160;    <span class="keyword">auto</span> vtable = GetVTable();</div>
-<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;    <span class="comment">// Check the vtable size field, then check vtable fits in its entirety.</span></div>
-<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;    <span class="keywordflow">return</span> verifier.VerifyComplexity() &amp;&amp;</div>
-<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;           verifier.Verify&lt;voffset_t&gt;(vtable) &amp;&amp;</div>
-<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;           (ReadScalar&lt;voffset_t&gt;(vtable) &amp; (<span class="keyword">sizeof</span>(voffset_t) - 1)) == 0 &amp;&amp;</div>
-<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;           verifier.Verify(vtable, ReadScalar&lt;voffset_t&gt;(vtable));</div>
-<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;  }</div>
-<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;</div>
-<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160;  <span class="comment">// Verify a particular field.</span></div>
-<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifyField(<span class="keyword">const</span> Verifier &amp;verifier,</div>
-<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;                                        voffset_t field)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;    <span class="comment">// Calling GetOptionalFieldOffset should be safe now thanks to</span></div>
-<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;    <span class="comment">// VerifyTable().</span></div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;<span class="preprocessor">  #endif</span></div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;</div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;  <span class="keyword">const</span> uint8_t *buf_;</div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;  <span class="keyword">const</span> uint8_t *end_;</div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;  uoffset_t depth_;</div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;  uoffset_t max_depth_;</div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;  uoffset_t num_tables_;</div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;  uoffset_t max_tables_;</div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160;<span class="preprocessor">#ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</span></div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;  <span class="keyword">mutable</span> <span class="keyword">const</span> uint8_t *upper_bound_;</div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;};</div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;</div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;<span class="comment">// Convenient way to bundle a buffer and its length, to pass it around</span></div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;<span class="comment">// typed by its root.</span></div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;<span class="comment">// A BufferRef does not own its buffer.</span></div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;<span class="keyword">struct </span>BufferRefBase {};  <span class="comment">// for std::is_base_of</span></div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>BufferRef : BufferRefBase {</div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;  BufferRef() : buf(nullptr), len(0), must_free(false) {}</div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160;  BufferRef(uint8_t *_buf, uoffset_t _len)</div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;    : buf(_buf), len(_len), must_free(false) {}</div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;</div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;  ~BufferRef() { <span class="keywordflow">if</span> (must_free) free(buf); }</div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160;</div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;  <span class="keyword">const</span> T *GetRoot()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> flatbuffers::GetRoot&lt;T&gt;(buf); }</div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;</div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;  <span class="keywordtype">bool</span> Verify() {</div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;    Verifier verifier(buf, len);</div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;    <span class="keywordflow">return</span> verifier.VerifyBuffer&lt;T&gt;(<span class="keyword">nullptr</span>);</div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;  }</div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160;</div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160;  uint8_t *buf;</div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160;  uoffset_t len;</div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160;  <span class="keywordtype">bool</span> must_free;</div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160;};</div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;</div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;<span class="comment">// &quot;structs&quot; are flat structures that do not have an offset table, thus</span></div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160;<span class="comment">// always have all members present and do not support forwards/backwards</span></div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;<span class="comment">// compatible extensions.</span></div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160;</div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160;<span class="keyword">class </span>Struct FLATBUFFERS_FINAL_CLASS {</div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T GetField(uoffset_t o)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;    <span class="keywordflow">return</span> ReadScalar&lt;T&gt;(&amp;data_[o]);</div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;  }</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;</div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T GetStruct(uoffset_t o)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T<span class="keyword">&gt;</span>(&amp;data_[o]);</div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;  }</div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;  <span class="keyword">const</span> uint8_t *GetAddressOf(uoffset_t o)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> &amp;data_[o]; }</div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;  uint8_t *GetAddressOf(uoffset_t o) { <span class="keywordflow">return</span> &amp;data_[o]; }</div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;</div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;  uint8_t data_[1];</div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;};</div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;</div>
+<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;<span class="comment">// &quot;tables&quot; use an offset table (possibly shared) that allows fields to be</span></div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;<span class="comment">// omitted and added at will, but uses an extra indirection to read.</span></div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;<span class="keyword">class </span>Table {</div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;  <span class="keyword">const</span> uint8_t *GetVTable()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;    <span class="keywordflow">return</span> data_ - ReadScalar&lt;soffset_t&gt;(data_);</div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;  }</div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160;</div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;  <span class="comment">// This gets the field offset for any of the functions below it, or 0</span></div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;  <span class="comment">// if the field was not present.</span></div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;  voffset_t GetOptionalFieldOffset(voffset_t field)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;    <span class="comment">// The vtable offset is always at the start.</span></div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;    <span class="keyword">auto</span> vtable = GetVTable();</div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;    <span class="comment">// The first element is the size of the vtable (fields + type id + itself).</span></div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;    <span class="keyword">auto</span> vtsize = ReadScalar&lt;voffset_t&gt;(vtable);</div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;    <span class="comment">// If the field we&#39;re accessing is outside the vtable, we&#39;re reading older</span></div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160;    <span class="comment">// data, so it&#39;s the same as if the offset was 0 (not present).</span></div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;    <span class="keywordflow">return</span> field &lt; vtsize ? ReadScalar&lt;voffset_t&gt;(vtable + field) : 0;</div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;  }</div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;</div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T GetField(voffset_t field, T defaultval)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;    <span class="keywordflow">return</span> field_offset ? ReadScalar&lt;T&gt;(data_ + field_offset) : defaultval;</div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;  }</div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160;</div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P&gt; P GetPointer(voffset_t field) {</div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;    <span class="keyword">auto</span> p = data_ + field_offset;</div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;    <span class="keywordflow">return</span> field_offset</div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;      ? <span class="keyword">reinterpret_cast&lt;</span>P<span class="keyword">&gt;</span>(p + ReadScalar&lt;uoffset_t&gt;(p))</div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;      : nullptr;</div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;  }</div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P&gt; P GetPointer(voffset_t field)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span>Table *<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;GetPointer&lt;P&gt;(field);</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;  }</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;</div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> P&gt; P GetStruct(voffset_t field)<span class="keyword"> const </span>{</div>
 <div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;    <span class="comment">// Check the actual field.</span></div>
-<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;    <span class="keywordflow">return</span> !field_offset || verifier.Verify&lt;T&gt;(data_ + field_offset);</div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;    <span class="keyword">auto</span> p = <span class="keyword">const_cast&lt;</span>uint8_t *<span class="keyword">&gt;</span>(data_ + field_offset);</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;    <span class="keywordflow">return</span> field_offset ? <span class="keyword">reinterpret_cast&lt;</span>P<span class="keyword">&gt;</span>(p) : <span class="keyword">nullptr</span>;</div>
 <div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;  }</div>
 <div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;</div>
-<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160;  <span class="comment">// VerifyField for required fields.</span></div>
-<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifyFieldRequired(<span class="keyword">const</span> Verifier &amp;verifier,</div>
-<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;                                                voffset_t field)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;    <span class="keywordflow">return</span> verifier.Check(field_offset != 0) &amp;&amp;</div>
-<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;           verifier.Verify&lt;T&gt;(data_ + field_offset);</div>
-<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;  }</div>
-<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160;</div>
-<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;  <span class="comment">// Versions for offsets.</span></div>
-<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;  <span class="keywordtype">bool</span> VerifyOffset(<span class="keyword">const</span> Verifier &amp;verifier, voffset_t field)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;    <span class="keywordflow">return</span> !field_offset || verifier.VerifyOffset(data_ + field_offset);</div>
-<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;  }</div>
-<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160;</div>
-<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;  <span class="keywordtype">bool</span> VerifyOffsetRequired(<span class="keyword">const</span> Verifier &amp;verifier, voffset_t field)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160;    <span class="keywordflow">return</span> verifier.Check(field_offset != 0) &amp;&amp;</div>
-<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160;           verifier.VerifyOffset(data_ + field_offset);</div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> SetField(voffset_t field, T val, T def) {</div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;    <span class="keywordflow">if</span> (!field_offset) <span class="keywordflow">return</span> val == def;</div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160;    WriteScalar(data_ + field_offset, val);</div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;  }</div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;</div>
+<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160;  <span class="keywordtype">bool</span> SetPointer(voffset_t field, <span class="keyword">const</span> uint8_t *val) {</div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;    <span class="keywordflow">if</span> (!field_offset) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;    WriteScalar(data_ + field_offset,</div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;                static_cast&lt;uoffset_t&gt;(val - (data_ + field_offset)));</div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160;  }</div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;</div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160;  uint8_t *GetAddressOf(voffset_t field) {</div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160;    <span class="keywordflow">return</span> field_offset ? data_ + field_offset : <span class="keyword">nullptr</span>;</div>
 <div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160;  }</div>
-<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;</div>
-<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;  <span class="comment">// private constructor &amp; copy constructor: you obtain instances of this</span></div>
-<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160;  <span class="comment">// class by pointing to existing data only</span></div>
-<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160;  Table();</div>
-<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;  Table(<span class="keyword">const</span> Table &amp;other);</div>
-<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;</div>
-<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160;  uint8_t data_[1];</div>
-<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160;};</div>
-<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;<span class="comment">/// @brief This can compute the start of a FlatBuffer from a root pointer, i.e.</span></div>
-<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160;<span class="comment">/// it is the opposite transformation of GetRoot().</span></div>
-<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160;<span class="comment">/// This may be useful if you want to pass on a root and have the recipient</span></div>
-<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160;<span class="comment">/// delete the buffer afterwards.</span></div>
-<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160;<span class="comment"></span><span class="keyword">inline</span> <span class="keyword">const</span> uint8_t *GetBufferStartFromRootPointer(<span class="keyword">const</span> <span class="keywordtype">void</span> *root) {</div>
-<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160;  <span class="keyword">auto</span> table = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Table *<span class="keyword">&gt;</span>(root);</div>
-<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160;  <span class="keyword">auto</span> vtable = table-&gt;GetVTable();</div>
-<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;  <span class="comment">// Either the vtable is before the root or after the root.</span></div>
-<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160;  <span class="keyword">auto</span> start = std::min(vtable, reinterpret_cast&lt;const uint8_t *&gt;(root));</div>
-<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;  <span class="comment">// Align to at least sizeof(uoffset_t).</span></div>
-<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160;  start = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(</div>
-<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160;            <span class="keyword">reinterpret_cast&lt;</span>uintptr_t<span class="keyword">&gt;</span>(start) &amp; ~(<span class="keyword">sizeof</span>(uoffset_t) - 1));</div>
-<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160;  <span class="comment">// Additionally, there may be a file_identifier in the buffer, and the root</span></div>
-<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160;  <span class="comment">// offset. The buffer may have been aligned to any size between</span></div>
-<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160;  <span class="comment">// sizeof(uoffset_t) and FLATBUFFERS_MAX_ALIGNMENT (see &quot;force_align&quot;).</span></div>
-<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160;  <span class="comment">// Sadly, the exact alignment is only known when constructing the buffer,</span></div>
-<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160;  <span class="comment">// since it depends on the presence of values with said alignment properties.</span></div>
-<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160;  <span class="comment">// So instead, we simply look at the next uoffset_t values (root,</span></div>
-<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;  <span class="comment">// file_identifier, and alignment padding) to see which points to the root.</span></div>
-<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160;  <span class="comment">// None of the other values can &quot;impersonate&quot; the root since they will either</span></div>
-<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;  <span class="comment">// be 0 or four ASCII characters.</span></div>
-<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160;  static_assert(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">FlatBufferBuilder::kFileIdentifierLength</a> == <span class="keyword">sizeof</span>(uoffset_t),</div>
-<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160;                <span class="stringliteral">&quot;file_identifier is assumed to be the same size as uoffset_t&quot;</span>);</div>
-<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">auto</span> possible_roots = FLATBUFFERS_MAX_ALIGNMENT / <span class="keyword">sizeof</span>(uoffset_t) + 1;</div>
-<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160;       possible_roots;</div>
-<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160;       possible_roots--) {</div>
-<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160;      start -= <span class="keyword">sizeof</span>(uoffset_t);</div>
-<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160;      <span class="keywordflow">if</span> (ReadScalar&lt;uoffset_t&gt;(start) + start ==</div>
-<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160;          <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(root)) <span class="keywordflow">return</span> start;</div>
-<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;  }</div>
-<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;  <span class="comment">// We didn&#39;t find the root, either the &quot;root&quot; passed isn&#39;t really a root,</span></div>
-<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160;  <span class="comment">// or the buffer is corrupt.</span></div>
-<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160;  <span class="comment">// Assert, because calling this function with bad data may cause reads</span></div>
-<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160;  <span class="comment">// outside of buffer boundaries.</span></div>
-<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160;  assert(<span class="keyword">false</span>);</div>
-<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;}</div>
-<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;</div>
-<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160;<span class="comment">// Base class for native objects (FlatBuffer data de-serialized into native</span></div>
-<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160;<span class="comment">// C++ data structures).</span></div>
-<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160;<span class="comment">// Contains no functionality, purely documentative.</span></div>
-<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;<span class="keyword">struct </span>NativeTable {</div>
-<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160;};</div>
-<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;<span class="comment">/// @brief Function types to be used with resolving hashes into objects and</span></div>
-<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160;<span class="comment">/// back again. The resolver gets a pointer to a field inside an object API</span></div>
-<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;<span class="comment">/// object that is of the type specified in the schema using the attribute</span></div>
-<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160;<span class="comment">/// `cpp_type` (it is thus important whatever you write to this address</span></div>
-<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;<span class="comment">/// matches that type). The value of this field is initially null, so you</span></div>
-<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;<span class="comment">/// may choose to implement a delayed binding lookup using this function</span></div>
-<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160;<span class="comment">/// if you wish. The resolver does the opposite lookup, for when the object</span></div>
-<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160;<span class="comment">/// is being serialized again.</span></div>
-<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> uint64_t hash_value_t;</div>
-<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;<span class="preprocessor">#ifdef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160;  <span class="keyword">typedef</span> void (*resolver_function_t)(<span class="keywordtype">void</span> **pointer_adr, hash_value_t hash);</div>
-<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;  <span class="keyword">typedef</span> hash_value_t (*rehasher_function_t)(<span class="keywordtype">void</span> *pointer);</div>
-<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160;  <span class="keyword">typedef</span> std::function&lt;void (void **pointer_adr, hash_value_t hash)&gt;</div>
-<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;          resolver_function_t;</div>
-<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160;  <span class="keyword">typedef</span> std::function&lt;hash_value_t (void *pointer)&gt; rehasher_function_t;</div>
-<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160;</div>
-<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160;<span class="comment">// Helper function to test if a field is present, using any of the field</span></div>
-<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160;<span class="comment">// enums in the generated code.</span></div>
-<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160;<span class="comment">// `table` must be a generated table type. Since this is a template parameter,</span></div>
-<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;<span class="comment">// this is not typechecked to be a subclass of Table, so beware!</span></div>
-<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160;<span class="comment">// Note: this function will return false for fields equal to the default</span></div>
-<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160;<span class="comment">// value, since they&#39;re not stored in the buffer (unless force_defaults was</span></div>
-<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160;<span class="comment">// used).</span></div>
-<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> IsFieldPresent(<span class="keyword">const</span> T *table, voffset_t field) {</div>
-<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160;  <span class="comment">// Cast, since Table is a private baseclass of any table types.</span></div>
-<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Table *<span class="keyword">&gt;</span>(table)-&gt;CheckField(field);</div>
-<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;}</div>
-<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160;</div>
-<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;<span class="comment">// Utility function for reverse lookups on the EnumNames*() functions</span></div>
-<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;<span class="comment">// (in the generated C++ code)</span></div>
-<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;<span class="comment">// names must be NULL terminated.</span></div>
-<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> LookupEnum(<span class="keyword">const</span> <span class="keywordtype">char</span> **names, <span class="keyword">const</span> <span class="keywordtype">char</span> *name) {</div>
-<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span> **p = names; *p; p++)</div>
-<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160;    <span class="keywordflow">if</span> (!strcmp(*p, name))</div>
-<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(p - names);</div>
-<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;  <span class="keywordflow">return</span> -1;</div>
-<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;}</div>
-<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;</div>
-<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;<span class="comment">// These macros allow us to layout a struct with a guarantee that they&#39;ll end</span></div>
-<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160;<span class="comment">// up looking the same on different compilers and platforms.</span></div>
-<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;<span class="comment">// It does this by disallowing the compiler to do any padding, and then</span></div>
-<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;<span class="comment">// does padding itself by inserting extra padding fields that make every</span></div>
-<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160;<span class="comment">// element aligned to its own size.</span></div>
-<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;<span class="comment">// Additionally, it manually sets the alignment of the struct as a whole,</span></div>
-<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160;<span class="comment">// which is typically its largest element, or a custom size set in the schema</span></div>
-<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160;<span class="comment">// by the force_align attribute.</span></div>
-<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;<span class="comment">// These are used in the generated code only.</span></div>
-<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160;</div>
-<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160;<span class="preprocessor">#if defined(_MSC_VER)</span></div>
-<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;<span class="preprocessor">  #define MANUALLY_ALIGNED_STRUCT(alignment) \</span></div>
-<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160;<span class="preprocessor">    __pragma(pack(1)); \</span></div>
-<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160;<span class="preprocessor">    struct __declspec(align(alignment))</span></div>
-<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;<span class="preprocessor">  #define STRUCT_END(name, size) \</span></div>
-<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160;<span class="preprocessor">    __pragma(pack()); \</span></div>
-<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160;<span class="preprocessor">    static_assert(sizeof(name) == size, &quot;compiler breaks packing rules&quot;)</span></div>
-<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160;<span class="preprocessor">#elif defined(__GNUC__) || defined(__clang__)</span></div>
-<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160;<span class="preprocessor">  #define MANUALLY_ALIGNED_STRUCT(alignment) \</span></div>
-<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160;<span class="preprocessor">    _Pragma(&quot;pack(1)&quot;) \</span></div>
-<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;<span class="preprocessor">    struct __attribute__((aligned(alignment)))</span></div>
-<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;<span class="preprocessor">  #define STRUCT_END(name, size) \</span></div>
-<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160;<span class="preprocessor">    _Pragma(&quot;pack()&quot;) \</span></div>
-<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160;<span class="preprocessor">    static_assert(sizeof(name) == size, &quot;compiler breaks packing rules&quot;)</span></div>
-<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;<span class="preprocessor">  #error Unknown compiler, please define structure alignment macros</span></div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;  <span class="keyword">const</span> uint8_t *GetAddressOf(voffset_t field)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span>Table *<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;GetAddressOf(field);</div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;  }</div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160;</div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160;  <span class="keywordtype">bool</span> CheckField(voffset_t field)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;    <span class="keywordflow">return</span> GetOptionalFieldOffset(field) != 0;</div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;  }</div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160;</div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160;  <span class="comment">// Verify the vtable of this table.</span></div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;  <span class="comment">// Call this once per table, followed by VerifyField once per field.</span></div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;  <span class="keywordtype">bool</span> VerifyTableStart(Verifier &amp;verifier)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160;    <span class="comment">// Check the vtable offset.</span></div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160;    <span class="keywordflow">if</span> (!verifier.Verify&lt;soffset_t&gt;(data_)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160;    <span class="keyword">auto</span> vtable = GetVTable();</div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160;    <span class="comment">// Check the vtable size field, then check vtable fits in its entirety.</span></div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160;    <span class="keywordflow">return</span> verifier.VerifyComplexity() &amp;&amp;</div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160;           verifier.Verify&lt;voffset_t&gt;(vtable) &amp;&amp;</div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;           (ReadScalar&lt;voffset_t&gt;(vtable) &amp; (<span class="keyword">sizeof</span>(voffset_t) - 1)) == 0 &amp;&amp;</div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160;           verifier.Verify(vtable, ReadScalar&lt;voffset_t&gt;(vtable));</div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;  }</div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160;</div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160;  <span class="comment">// Verify a particular field.</span></div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifyField(<span class="keyword">const</span> Verifier &amp;verifier,</div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160;                                        voffset_t field)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160;    <span class="comment">// Calling GetOptionalFieldOffset should be safe now thanks to</span></div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160;    <span class="comment">// VerifyTable().</span></div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160;    <span class="comment">// Check the actual field.</span></div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;    <span class="keywordflow">return</span> !field_offset || verifier.Verify&lt;T&gt;(data_ + field_offset);</div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160;  }</div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;</div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160;  <span class="comment">// VerifyField for required fields.</span></div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160;  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> VerifyFieldRequired(<span class="keyword">const</span> Verifier &amp;verifier,</div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160;                                                voffset_t field)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160;    <span class="keywordflow">return</span> verifier.Check(field_offset != 0) &amp;&amp;</div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160;           verifier.Verify&lt;T&gt;(data_ + field_offset);</div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160;  }</div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160;</div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;  <span class="comment">// Versions for offsets.</span></div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;  <span class="keywordtype">bool</span> VerifyOffset(<span class="keyword">const</span> Verifier &amp;verifier, voffset_t field)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160;    <span class="keywordflow">return</span> !field_offset || verifier.VerifyOffset(data_ + field_offset);</div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160;  }</div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160;</div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160;  <span class="keywordtype">bool</span> VerifyOffsetRequired(<span class="keyword">const</span> Verifier &amp;verifier, voffset_t field)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;    <span class="keywordflow">return</span> verifier.Check(field_offset != 0) &amp;&amp;</div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160;           verifier.VerifyOffset(data_ + field_offset);</div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160;  }</div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160;</div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160;  <span class="comment">// private constructor &amp; copy constructor: you obtain instances of this</span></div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;  <span class="comment">// class by pointing to existing data only</span></div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;  Table();</div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160;  Table(<span class="keyword">const</span> Table &amp;other);</div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;</div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160;  uint8_t data_[1];</div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;};</div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160;<span class="comment">/// @brief This can compute the start of a FlatBuffer from a root pointer, i.e.</span></div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160;<span class="comment">/// it is the opposite transformation of GetRoot().</span></div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160;<span class="comment">/// This may be useful if you want to pass on a root and have the recipient</span></div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;<span class="comment">/// delete the buffer afterwards.</span></div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160;<span class="comment"></span><span class="keyword">inline</span> <span class="keyword">const</span> uint8_t *GetBufferStartFromRootPointer(<span class="keyword">const</span> <span class="keywordtype">void</span> *root) {</div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;  <span class="keyword">auto</span> table = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Table *<span class="keyword">&gt;</span>(root);</div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160;  <span class="keyword">auto</span> vtable = table-&gt;GetVTable();</div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160;  <span class="comment">// Either the vtable is before the root or after the root.</span></div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;  <span class="keyword">auto</span> start = (std::min)(vtable, reinterpret_cast&lt;const uint8_t *&gt;(root));</div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160;  <span class="comment">// Align to at least sizeof(uoffset_t).</span></div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;  start = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(</div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160;            <span class="keyword">reinterpret_cast&lt;</span>uintptr_t<span class="keyword">&gt;</span>(start) &amp; ~(<span class="keyword">sizeof</span>(uoffset_t) - 1));</div>
+<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160;  <span class="comment">// Additionally, there may be a file_identifier in the buffer, and the root</span></div>
+<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160;  <span class="comment">// offset. The buffer may have been aligned to any size between</span></div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160;  <span class="comment">// sizeof(uoffset_t) and FLATBUFFERS_MAX_ALIGNMENT (see &quot;force_align&quot;).</span></div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;  <span class="comment">// Sadly, the exact alignment is only known when constructing the buffer,</span></div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160;  <span class="comment">// since it depends on the presence of values with said alignment properties.</span></div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160;  <span class="comment">// So instead, we simply look at the next uoffset_t values (root,</span></div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160;  <span class="comment">// file_identifier, and alignment padding) to see which points to the root.</span></div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160;  <span class="comment">// None of the other values can &quot;impersonate&quot; the root since they will either</span></div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160;  <span class="comment">// be 0 or four ASCII characters.</span></div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;  static_assert(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">FlatBufferBuilder::kFileIdentifierLength</a> == <span class="keyword">sizeof</span>(uoffset_t),</div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;                <span class="stringliteral">&quot;file_identifier is assumed to be the same size as uoffset_t&quot;</span>);</div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">auto</span> possible_roots = FLATBUFFERS_MAX_ALIGNMENT / <span class="keyword">sizeof</span>(uoffset_t) + 1;</div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;       possible_roots;</div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;       possible_roots--) {</div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;      start -= <span class="keyword">sizeof</span>(uoffset_t);</div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160;      <span class="keywordflow">if</span> (ReadScalar&lt;uoffset_t&gt;(start) + start ==</div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;          <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>uint8_t *<span class="keyword">&gt;</span>(root)) <span class="keywordflow">return</span> start;</div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160;  }</div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;  <span class="comment">// We didn&#39;t find the root, either the &quot;root&quot; passed isn&#39;t really a root,</span></div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;  <span class="comment">// or the buffer is corrupt.</span></div>
+<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;  <span class="comment">// Assert, because calling this function with bad data may cause reads</span></div>
+<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;  <span class="comment">// outside of buffer boundaries.</span></div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;  assert(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;}</div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;</div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160;<span class="comment">// Base class for native objects (FlatBuffer data de-serialized into native</span></div>
+<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;<span class="comment">// C++ data structures).</span></div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160;<span class="comment">// Contains no functionality, purely documentative.</span></div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160;<span class="keyword">struct </span>NativeTable {</div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;};</div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160;<span class="comment">/// @brief Function types to be used with resolving hashes into objects and</span></div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;<span class="comment">/// back again. The resolver gets a pointer to a field inside an object API</span></div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160;<span class="comment">/// object that is of the type specified in the schema using the attribute</span></div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160;<span class="comment">/// `cpp_type` (it is thus important whatever you write to this address</span></div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;<span class="comment">/// matches that type). The value of this field is initially null, so you</span></div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160;<span class="comment">/// may choose to implement a delayed binding lookup using this function</span></div>
+<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160;<span class="comment">/// if you wish. The resolver does the opposite lookup, for when the object</span></div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160;<span class="comment">/// is being serialized again.</span></div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> uint64_t hash_value_t;</div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160;<span class="preprocessor">#ifdef FLATBUFFERS_CPP98_STL</span></div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;  <span class="keyword">typedef</span> void (*resolver_function_t)(<span class="keywordtype">void</span> **pointer_adr, hash_value_t hash);</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;  <span class="keyword">typedef</span> hash_value_t (*rehasher_function_t)(<span class="keywordtype">void</span> *pointer);</div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160;  <span class="keyword">typedef</span> std::function&lt;void (void **pointer_adr, hash_value_t hash)&gt;</div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160;          resolver_function_t;</div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;  <span class="keyword">typedef</span> std::function&lt;hash_value_t (void *pointer)&gt; rehasher_function_t;</div>
 <div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160;<span class="preprocessor">#endif</span></div>
 <div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160;</div>
-<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160;<span class="comment">// String which identifies the current version of FlatBuffers.</span></div>
-<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160;<span class="comment">// flatbuffer_version_string is used by Google developers to identify which</span></div>
-<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;<span class="comment">// applications uploaded to Google Play are using this library.  This allows</span></div>
-<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;<span class="comment">// the development team at Google to determine the popularity of the library.</span></div>
-<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160;<span class="comment">// How it works: Applications that are uploaded to the Google Play Store are</span></div>
-<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;<span class="comment">// scanned for this version string.  We track which applications are using it</span></div>
-<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160;<span class="comment">// to measure popularity.  You are free to remove it (of course) but we would</span></div>
-<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160;<span class="comment">// appreciate if you left it in.</span></div>
-<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160;</div>
-<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;<span class="comment">// Weak linkage is culled by VS &amp; doesn&#39;t work on cygwin.</span></div>
-<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;<span class="preprocessor">#if !defined(_WIN32) &amp;&amp; !defined(__CYGWIN__)</span></div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160;<span class="comment">// Helper function to test if a field is present, using any of the field</span></div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160;<span class="comment">// enums in the generated code.</span></div>
+<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;<span class="comment">// `table` must be a generated table type. Since this is a template parameter,</span></div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;<span class="comment">// this is not typechecked to be a subclass of Table, so beware!</span></div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160;<span class="comment">// Note: this function will return false for fields equal to the default</span></div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;<span class="comment">// value, since they&#39;re not stored in the buffer (unless force_defaults was</span></div>
+<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160;<span class="comment">// used).</span></div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">bool</span> IsFieldPresent(<span class="keyword">const</span> T *table, voffset_t field) {</div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160;  <span class="comment">// Cast, since Table is a private baseclass of any table types.</span></div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Table *<span class="keyword">&gt;</span>(table)-&gt;CheckField(field);</div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;}</div>
 <div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160;</div>
-<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;<span class="keyword">extern</span> <span class="keyword">volatile</span> __attribute__((weak)) const <span class="keywordtype">char</span> *flatbuffer_version_string;</div>
-<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;volatile __attribute__((weak)) const <span class="keywordtype">char</span> *flatbuffer_version_string =</div>
-<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;  &quot;FlatBuffers &quot;</div>
-<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;  FLATBUFFERS_STRING(FLATBUFFERS_VERSION_MAJOR) &quot;.&quot;</div>
-<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;  FLATBUFFERS_STRING(FLATBUFFERS_VERSION_MINOR) &quot;.&quot;</div>
-<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160;  FLATBUFFERS_STRING(FLATBUFFERS_VERSION_REVISION);</div>
-<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160;</div>
-<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160;<span class="preprocessor">#endif  // !defined(_WIN32) &amp;&amp; !defined(__CYGWIN__)</span></div>
-<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;</div>
-<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;<span class="preprocessor">#define DEFINE_BITMASK_OPERATORS(E, T)\</span></div>
-<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160;<span class="preprocessor">    inline E operator | (E lhs, E rhs){\</span></div>
-<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160;<span class="preprocessor">        return E(T(lhs) | T(rhs));\</span></div>
-<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;<span class="preprocessor">    }\</span></div>
-<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160;<span class="preprocessor">    inline E operator &amp; (E lhs, E rhs){\</span></div>
-<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160;<span class="preprocessor">        return E(T(lhs) &amp; T(rhs));\</span></div>
-<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160;<span class="preprocessor">    }\</span></div>
-<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160;<span class="preprocessor">    inline E operator ^ (E lhs, E rhs){\</span></div>
-<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160;<span class="preprocessor">        return E(T(lhs) ^ T(rhs));\</span></div>
-<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160;<span class="preprocessor">    }\</span></div>
-<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160;<span class="preprocessor">    inline E operator ~ (E lhs){\</span></div>
-<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160;<span class="preprocessor">        return E(~T(lhs));\</span></div>
-<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160;<span class="preprocessor">    }\</span></div>
-<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;<span class="preprocessor">    inline E operator |= (E &amp;lhs, E rhs){\</span></div>
-<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160;<span class="preprocessor">        lhs = lhs | rhs;\</span></div>
-<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;<span class="preprocessor">        return lhs;\</span></div>
-<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160;<span class="preprocessor">    }\</span></div>
-<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160;<span class="preprocessor">    inline E operator &amp;= (E &amp;lhs, E rhs){\</span></div>
-<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160;<span class="preprocessor">        lhs = lhs &amp; rhs;\</span></div>
-<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160;<span class="preprocessor">        return lhs;\</span></div>
-<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160;<span class="preprocessor">    }\</span></div>
-<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160;<span class="preprocessor">    inline E operator ^= (E &amp;lhs, E rhs){\</span></div>
-<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160;<span class="preprocessor">        lhs = lhs ^ rhs;\</span></div>
-<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160;<span class="preprocessor">        return lhs;\</span></div>
-<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160;<span class="preprocessor">    }\</span></div>
-<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160;<span class="preprocessor">    inline bool operator !(E rhs) \</span></div>
-<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160;<span class="preprocessor">    {\</span></div>
-<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160;<span class="preprocessor">        return !bool(T(rhs)); \</span></div>
-<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160;<span class="preprocessor">    }</span></div>
-<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160;<span class="comment">/// @endcond</span></div>
-<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160;<span class="comment"></span>}  <span class="comment">// namespace flatbuffers</span></div>
-<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;</div>
-<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160;<span class="preprocessor">#if defined(_MSC_VER)</span></div>
-<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;<span class="preprocessor">#pragma warning(pop)</span></div>
-<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;</div>
-<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160;<span class="preprocessor">#endif  // FLATBUFFERS_H_</span></div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;<span class="comment">// Utility function for reverse lookups on the EnumNames*() functions</span></div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;<span class="comment">// (in the generated C++ code)</span></div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;<span class="comment">// names must be NULL terminated.</span></div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> LookupEnum(<span class="keyword">const</span> <span class="keywordtype">char</span> **names, <span class="keyword">const</span> <span class="keywordtype">char</span> *name) {</div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span> **p = names; *p; p++)</div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160;    <span class="keywordflow">if</span> (!strcmp(*p, name))</div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(p - names);</div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160;  <span class="keywordflow">return</span> -1;</div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;}</div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;</div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160;<span class="comment">// These macros allow us to layout a struct with a guarantee that they&#39;ll end</span></div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160;<span class="comment">// up looking the same on different compilers and platforms.</span></div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;<span class="comment">// It does this by disallowing the compiler to do any padding, and then</span></div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160;<span class="comment">// does padding itself by inserting extra padding fields that make every</span></div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160;<span class="comment">// element aligned to its own size.</span></div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160;<span class="comment">// Additionally, it manually sets the alignment of the struct as a whole,</span></div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160;<span class="comment">// which is typically its largest element, or a custom size set in the schema</span></div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160;<span class="comment">// by the force_align attribute.</span></div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160;<span class="comment">// These are used in the generated code only.</span></div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160;</div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160;<span class="preprocessor">#if defined(_MSC_VER)</span></div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160;<span class="preprocessor">  #define MANUALLY_ALIGNED_STRUCT(alignment) \</span></div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;<span class="preprocessor">    __pragma(pack(1)); \</span></div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160;<span class="preprocessor">    struct __declspec(align(alignment))</span></div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;<span class="preprocessor">  #define STRUCT_END(name, size) \</span></div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160;<span class="preprocessor">    __pragma(pack()); \</span></div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160;<span class="preprocessor">    static_assert(sizeof(name) == size, &quot;compiler breaks packing rules&quot;)</span></div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160;<span class="preprocessor">#elif defined(__GNUC__) || defined(__clang__)</span></div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160;<span class="preprocessor">  #define MANUALLY_ALIGNED_STRUCT(alignment) \</span></div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160;<span class="preprocessor">    _Pragma(&quot;pack(1)&quot;) \</span></div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160;<span class="preprocessor">    struct __attribute__((aligned(alignment)))</span></div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160;<span class="preprocessor">  #define STRUCT_END(name, size) \</span></div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160;<span class="preprocessor">    _Pragma(&quot;pack()&quot;) \</span></div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160;<span class="preprocessor">    static_assert(sizeof(name) == size, &quot;compiler breaks packing rules&quot;)</span></div>
+<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160;<span class="preprocessor">  #error Unknown compiler, please define structure alignment macros</span></div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160;</div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160;<span class="comment">// Minimal reflection via code generation.</span></div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160;<span class="comment">// Besides full-fat reflection (see reflection.h) and parsing/printing by</span></div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;<span class="comment">// loading schemas (see idl.h), we can also have code generation for mimimal</span></div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160;<span class="comment">// reflection data which allows pretty-printing and other uses without needing</span></div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;<span class="comment">// a schema or a parser.</span></div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160;<span class="comment">// Generate code with --reflect-types (types only) or --reflect-names (names</span></div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;<span class="comment">// also) to enable.</span></div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160;<span class="comment">// See minireflect.h for utilities using this functionality.</span></div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160;</div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;<span class="comment">// These types are organized slightly differently as the ones in idl.h.</span></div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160;<span class="keyword">enum</span> SequenceType { ST_TABLE, ST_STRUCT, ST_UNION, ST_ENUM };</div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;</div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160;<span class="comment">// Scalars have the same order as in idl.h</span></div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160;<span class="preprocessor">#define FLATBUFFERS_GEN_ELEMENTARY_TYPES(ET) \</span></div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;<span class="preprocessor">  ET(ET_UTYPE) \</span></div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160;<span class="preprocessor">  ET(ET_BOOL) \</span></div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160;<span class="preprocessor">  ET(ET_CHAR) \</span></div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;<span class="preprocessor">  ET(ET_UCHAR) \</span></div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;<span class="preprocessor">  ET(ET_SHORT) \</span></div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;<span class="preprocessor">  ET(ET_USHORT) \</span></div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160;<span class="preprocessor">  ET(ET_INT) \</span></div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;<span class="preprocessor">  ET(ET_UINT) \</span></div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;<span class="preprocessor">  ET(ET_LONG) \</span></div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160;<span class="preprocessor">  ET(ET_ULONG) \</span></div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160;<span class="preprocessor">  ET(ET_FLOAT) \</span></div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;<span class="preprocessor">  ET(ET_DOUBLE) \</span></div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160;<span class="preprocessor">  ET(ET_STRING) \</span></div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;<span class="preprocessor">  ET(ET_SEQUENCE)  // See SequenceType.</span></div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;</div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160;<span class="keyword">enum</span> ElementaryType {</div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160;<span class="preprocessor">  #define FLATBUFFERS_ET(E) E,</span></div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160;    FLATBUFFERS_GEN_ELEMENTARY_TYPES(FLATBUFFERS_ET)</div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;  <span class="preprocessor">#undef FLATBUFFERS_ET</span></div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160;};</div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;</div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> **ElementaryTypeNames() {</div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160;  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *names[] = {</div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160;<span class="preprocessor">    #define FLATBUFFERS_ET(E) #E,</span></div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160;      FLATBUFFERS_GEN_ELEMENTARY_TYPES(FLATBUFFERS_ET)</div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160;    <span class="preprocessor">#undef FLATBUFFERS_ET</span></div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160;  };</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160;  <span class="keywordflow">return</span> names;</div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;}</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160;</div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160;<span class="comment">// Basic type info cost just 16bits per field!</span></div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160;<span class="keyword">struct </span>TypeCode {</div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;  uint16_t base_type : 4;      <span class="comment">// ElementaryType</span></div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160;  uint16_t is_vector : 1;</div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160;  int16_t sequence_ref : 11;   <span class="comment">// Index into type_refs below, or -1 for none.</span></div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160;};</div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160;</div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160;static_assert(<span class="keyword">sizeof</span>(TypeCode) == 2, <span class="stringliteral">&quot;TypeCode&quot;</span>);</div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160;</div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160;<span class="keyword">struct </span>TypeTable;</div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;</div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160;<span class="comment">// Signature of the static method present in each type.</span></div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160;<span class="keyword">typedef</span> TypeTable *(*TypeFunction)();</div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;</div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160;<span class="keyword">struct </span>TypeTable {</div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160;  SequenceType st;</div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160;  <span class="keywordtype">size_t</span> num_elems;  <span class="comment">// of each of the arrays below.</span></div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160;  <span class="keyword">const</span> TypeCode *type_codes;</div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160;  <span class="keyword">const</span> TypeFunction *type_refs;</div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;  <span class="keyword">const</span> int32_t *values;  <span class="comment">// Only set for non-consecutive enum/union or structs.</span></div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">char</span> **names;  <span class="comment">// Only set if compiled with --reflect-names.</span></div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160;};</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160;</div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160;<span class="comment">// String which identifies the current version of FlatBuffers.</span></div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;<span class="comment">// flatbuffer_version_string is used by Google developers to identify which</span></div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160;<span class="comment">// applications uploaded to Google Play are using this library.  This allows</span></div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160;<span class="comment">// the development team at Google to determine the popularity of the library.</span></div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160;<span class="comment">// How it works: Applications that are uploaded to the Google Play Store are</span></div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160;<span class="comment">// scanned for this version string.  We track which applications are using it</span></div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160;<span class="comment">// to measure popularity.  You are free to remove it (of course) but we would</span></div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;<span class="comment">// appreciate if you left it in.</span></div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160;</div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160;<span class="comment">// Weak linkage is culled by VS &amp; doesn&#39;t work on cygwin.</span></div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160;<span class="preprocessor">#if !defined(_WIN32) &amp;&amp; !defined(__CYGWIN__)</span></div>
+<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160;</div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160;<span class="keyword">extern</span> <span class="keyword">volatile</span> __attribute__((weak)) const <span class="keywordtype">char</span> *flatbuffer_version_string;</div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160;volatile __attribute__((weak)) const <span class="keywordtype">char</span> *flatbuffer_version_string =</div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160;  &quot;FlatBuffers &quot;</div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160;  FLATBUFFERS_STRING(FLATBUFFERS_VERSION_MAJOR) &quot;.&quot;</div>
+<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160;  FLATBUFFERS_STRING(FLATBUFFERS_VERSION_MINOR) &quot;.&quot;</div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;  FLATBUFFERS_STRING(FLATBUFFERS_VERSION_REVISION);</div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160;</div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;<span class="preprocessor">#endif  // !defined(_WIN32) &amp;&amp; !defined(__CYGWIN__)</span></div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;</div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;<span class="preprocessor">#define DEFINE_BITMASK_OPERATORS(E, T)\</span></div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160;<span class="preprocessor">    inline E operator | (E lhs, E rhs){\</span></div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160;<span class="preprocessor">        return E(T(lhs) | T(rhs));\</span></div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160;<span class="preprocessor">    }\</span></div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160;<span class="preprocessor">    inline E operator &amp; (E lhs, E rhs){\</span></div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160;<span class="preprocessor">        return E(T(lhs) &amp; T(rhs));\</span></div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160;<span class="preprocessor">    }\</span></div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160;<span class="preprocessor">    inline E operator ^ (E lhs, E rhs){\</span></div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160;<span class="preprocessor">        return E(T(lhs) ^ T(rhs));\</span></div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160;<span class="preprocessor">    }\</span></div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160;<span class="preprocessor">    inline E operator ~ (E lhs){\</span></div>
+<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160;<span class="preprocessor">        return E(~T(lhs));\</span></div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160;<span class="preprocessor">    }\</span></div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160;<span class="preprocessor">    inline E operator |= (E &amp;lhs, E rhs){\</span></div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160;<span class="preprocessor">        lhs = lhs | rhs;\</span></div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;<span class="preprocessor">        return lhs;\</span></div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160;<span class="preprocessor">    }\</span></div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160;<span class="preprocessor">    inline E operator &amp;= (E &amp;lhs, E rhs){\</span></div>
+<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160;<span class="preprocessor">        lhs = lhs &amp; rhs;\</span></div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160;<span class="preprocessor">        return lhs;\</span></div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160;<span class="preprocessor">    }\</span></div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160;<span class="preprocessor">    inline E operator ^= (E &amp;lhs, E rhs){\</span></div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160;<span class="preprocessor">        lhs = lhs ^ rhs;\</span></div>
+<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160;<span class="preprocessor">        return lhs;\</span></div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160;<span class="preprocessor">    }\</span></div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160;<span class="preprocessor">    inline bool operator !(E rhs) \</span></div>
+<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160;<span class="preprocessor">    {\</span></div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160;<span class="preprocessor">        return !bool(T(rhs)); \</span></div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160;<span class="preprocessor">    }</span></div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160;<span class="comment">/// @endcond</span></div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;<span class="comment"></span>}  <span class="comment">// namespace flatbuffers</span></div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160;</div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160;<span class="preprocessor">#if defined(_MSC_VER)</span></div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;<span class="preprocessor">#pragma warning(pop)</span></div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160;</div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160;<span class="preprocessor">#endif  // FLATBUFFERS_H_</span></div>
 <div class="ttc" id="structflatbuffers_1_1_offset_html"><div class="ttname"><a href="structflatbuffers_1_1_offset.html">flatbuffers::Offset</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:25</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a1080c9e370e2d9d9d872dadd1131436b"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b">flatbuffers::FlatBufferBuilder::CreateVector</a></div><div class="ttdeci">Offset&lt; Vector&lt; T &gt; &gt; CreateVector(size_t vector_size, const std::function&lt; T(size_t i)&gt; &amp;f)</div><div class="ttdoc">Serialize values returned by a function into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1174</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ac2b96292fa0fb1534fe7fd218a094d0c"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c">flatbuffers::FlatBufferBuilder::CreateUninitializedVector</a></div><div class="ttdeci">uoffset_t CreateUninitializedVector(size_t len, size_t elemsize, uint8_t **buf)</div><div class="ttdoc">Specialized version of CreateVector for non-copying use cases. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1390</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a6e90ada59d9553636f72ce8e4a892f72"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72">flatbuffers::FlatBufferBuilder::CreateVectorOfStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfStructs(size_t vector_size, const std::function&lt; void(size_t i, T *)&gt; &amp;filler)</div><div class="ttdoc">Serialize an array of structs into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1236</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ab1f44cc1b130e13b41e9a80de76e25cf"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf">flatbuffers::FlatBufferBuilder::CreateVectorOfSortedStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfSortedStructs(T *v, size_t len)</div><div class="ttdoc">Serialize an array of structs into a FlatBuffer vector in sorted order. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1317</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a23aa4c910e053446cc404bc486012e54"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54">flatbuffers::FlatBufferBuilder::CreateVectorOfSortedNativeStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfSortedNativeStructs(std::vector&lt; S &gt; *v)</div><div class="ttdoc">Serialize a std::vector of native structs into a FlatBuffer vector in sorted order. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1304</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ac64d11c219559ea51567eab556e13135"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135">flatbuffers::FlatBufferBuilder::CreateVectorOfSortedTables</a></div><div class="ttdeci">Offset&lt; Vector&lt; Offset&lt; T &gt; &gt; &gt; CreateVectorOfSortedTables(std::vector&lt; Offset&lt; T &gt;&gt; *v)</div><div class="ttdoc">Serialize an array of table offsets as a vector in the buffer in sorted order. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1378</div></div>
-<div class="ttc" id="structflatbuffers_1_1_vector_iterator_html"><div class="ttname"><a href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:121</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></div><div class="ttdoc">Helper class to hold data needed in creation of a FlatBuffer. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:694</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ac1bfd609f7f736e9a37cedae77448b63"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">flatbuffers::FlatBufferBuilder::GetSize</a></div><div class="ttdeci">uoffset_t GetSize() const </div><div class="ttdoc">The current size of the serialized buffer, counting from the end. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:738</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ae94b94ba71ea0aeb2d9a98c43b713412"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412">flatbuffers::FlatBufferBuilder::Clear</a></div><div class="ttdeci">void Clear()</div><div class="ttdoc">Reset all the state in this FlatBufferBuilder so it can be reused to construct another buffer...</div><div class="ttdef"><b>Definition:</b> flatbuffers.h:726</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a3d57074082aaab8cdeb8474ff9df0b53"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53">flatbuffers::FlatBufferBuilder::CreateVectorOfNativeStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfNativeStructs(const S *v, size_t len)</div><div class="ttdoc">Serialize an array of native structs into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1217</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a43f51ba9c8f4f24ea2247a3979d095b8"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a43f51ba9c8f4f24ea2247a3979d095b8">flatbuffers::FlatBufferBuilder::CreateStruct</a></div><div class="ttdeci">Offset&lt; const T * &gt; CreateStruct(const T &amp;structobj)</div><div class="ttdoc">Write a struct by itself, typically to be part of a union. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1416</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a7ba8462e408431054c99d25120326220"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220">flatbuffers::FlatBufferBuilder::FinishSizePrefixed</a></div><div class="ttdeci">void FinishSizePrefixed(Offset&lt; T &gt; root, const char *file_identifier=nullptr)</div><div class="ttdoc">Finish a buffer with a 32 bit size field pre-fixed (size of the buffer following the size field)...</div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1441</div></div>
-<div class="ttc" id="classflatbuffers_1_1_detached_buffer_html"><div class="ttname"><a href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:432</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a3eb68613e5883dc4b8fff6cf7d1223d7"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7">flatbuffers::FlatBufferBuilder::CreateSharedString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateSharedString(const char *str)</div><div class="ttdoc">Store a string in the buffer, which null-terminated. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1064</div></div>
-<div class="ttc" id="classflatbuffers_1_1_vector_of_any_html"><div class="ttname"><a href="classflatbuffers_1_1_vector_of_any.html">flatbuffers::VectorOfAny</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:339</div></div>
-<div class="ttc" id="structflatbuffers_1_1_indirect_helper_html"><div class="ttname"><a href="structflatbuffers_1_1_indirect_helper.html">flatbuffers::IndirectHelper</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:92</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_aec6f9df2a0366b540b24822414d92cbe"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">flatbuffers::FlatBufferBuilder::CreateString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateString(const char *str, size_t len)</div><div class="ttdoc">Store a string in the buffer, which can contain any binary data. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:995</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a16a8fd46b34ad7727406c37b65b6b27a"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a">flatbuffers::FlatBufferBuilder::ForceDefaults</a></div><div class="ttdeci">void ForceDefaults(bool fd)</div><div class="ttdoc">In order to save space, fields that are set to their default value don&#39;t get serialized into the buff...</div><div class="ttdef"><b>Definition:</b> flatbuffers.h:793</div></div>
-<div class="ttc" id="classflatbuffers_1_1_default_allocator_html"><div class="ttname"><a href="classflatbuffers_1_1_default_allocator.html">flatbuffers::DefaultAllocator</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:413</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_aa905b29dce19a1795c7bce375cf29961"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961">flatbuffers::FlatBufferBuilder::DedupVtables</a></div><div class="ttdeci">void DedupVtables(bool dedup)</div><div class="ttdoc">By default vtables are deduped in order to save space. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:797</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_af8c7583c92e1d1d6f438977da5158d19"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">flatbuffers::FlatBufferBuilder::kFileIdentifierLength</a></div><div class="ttdeci">static const size_t kFileIdentifierLength</div><div class="ttdoc">The length of a FlatBuffer file header. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1423</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ac0b6a1c5d949f20ad84367fc0f9e1506"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506">flatbuffers::FlatBufferBuilder::CreateString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateString(const String *str)</div><div class="ttdoc">Store a string in the buffer, which can contain any binary data. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1021</div></div>
-<div class="ttc" id="classflatbuffers_1_1vector__downward_html"><div class="ttname"><a href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:523</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a799701af34c398d8eb86e049b73bcecf"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf">flatbuffers::FlatBufferBuilder::CreateVectorOfSortedNativeStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfSortedNativeStructs(S *v, size_t len)</div><div class="ttdoc">Serialize an array of native structs into a FlatBuffer vector in sorted order. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1332</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a840b769fbb4148f97d3eed266e4690c3"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3">flatbuffers::FlatBufferBuilder::CreateSharedString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateSharedString(const String *str)</div><div class="ttdoc">Store a string in the buffer, which can contain any binary data. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1082</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ab77d800e77fa76bc758a6c399fd37685"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685">flatbuffers::FlatBufferBuilder::CreateString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateString(const T &amp;str)</div><div class="ttdoc">Store a string in the buffer, which can contain any binary data. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1030</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a7cc10b709dfa3e72083843d1a5e36c15"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15">flatbuffers::FlatBufferBuilder::CreateVectorOfSortedStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfSortedStructs(std::vector&lt; T &gt; *v)</div><div class="ttdoc">Serialize a std::vector of structs into a FlatBuffer vector in sorted order. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1291</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a592110519a6c8db1926f1365bf2a58e6"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6">flatbuffers::FlatBufferBuilder::CreateVectorOfStrings</a></div><div class="ttdeci">Offset&lt; Vector&lt; Offset&lt; String &gt; &gt; &gt; CreateVectorOfStrings(const std::vector&lt; std::string &gt; &amp;v)</div><div class="ttdoc">Serialize a std::vector<std::string> into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1188</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ae4ab74f53187e6c3e6041d34e01904c4"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4">flatbuffers::FlatBufferBuilder::FlatBufferBuilder</a></div><div class="ttdeci">FlatBufferBuilder(size_t initial_size=1024, Allocator *allocator=nullptr, bool own_allocator=false)</div><div class="ttdoc">Default constructor for FlatBufferBuilder. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:704</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_aa1ebce1f3f46832946a95952af1e9c2b"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#aa1ebce1f3f46832946a95952af1e9c2b">flatbuffers::FlatBufferBuilder::GetBufferMinAlignment</a></div><div class="ttdeci">size_t GetBufferMinAlignment()</div><div class="ttdoc">get the minimum alignment this buffer needs to be accessed properly. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:774</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_afede51fd9c32d146cbb1832f57c5e1b7"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7">flatbuffers::FlatBufferBuilder::CreateVectorOfStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfStructs(const T *v, size_t len)</div><div class="ttdoc">Serialize an array of structs into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1202</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a11c291ccd2159604c149600ee6180b95"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95">flatbuffers::FlatBufferBuilder::CreateVectorOfNativeStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfNativeStructs(const std::vector&lt; S &gt; &amp;v)</div><div class="ttdoc">Serialize a std::vector of native structs into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1266</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_aad93d113ac24e86ed04b5236b3f4c0c5"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5">flatbuffers::FlatBufferBuilder::CreateString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateString(const char *str)</div><div class="ttdoc">Store a string in the buffer, which is null-terminated. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1007</div></div>
-<div class="ttc" id="classflatbuffers_1_1_allocator_html"><div class="ttname"><a href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:389</div></div>
-<div class="ttc" id="structflatbuffers_1_1_string_html"><div class="ttname"><a href="structflatbuffers_1_1_string.html">flatbuffers::String</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:378</div></div>
-<div class="ttc" id="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc_html"><div class="ttname"><a href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html">flatbuffers::FlatBufferBuilder::FieldLoc</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1470</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a8c3af55e64f5cda9aefa38ac5287ef9f"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f">flatbuffers::FlatBufferBuilder::CreateString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateString(const std::string &amp;str)</div><div class="ttdoc">Store a string in the buffer, which can contain any binary data. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1014</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_af715dd24dd37cb0151dc7a980ad0f207"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207">flatbuffers::FlatBufferBuilder::CreateVector</a></div><div class="ttdeci">Offset&lt; Vector&lt; T &gt; &gt; CreateVector(const std::vector&lt; T &gt; &amp;v)</div><div class="ttdoc">Serialize a std::vector into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1151</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a2305b63d367845972b51669dd995cc50"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50">flatbuffers::FlatBufferBuilder::CreateUninitializedVector</a></div><div class="ttdeci">Offset&lt; Vector&lt; T &gt; &gt; CreateUninitializedVector(size_t len, T **buf)</div><div class="ttdoc">Specialized version of CreateVector for non-copying use cases. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1409</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a3f4252e9bc005ba6c700469544fdccc9"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a3f4252e9bc005ba6c700469544fdccc9">flatbuffers::FlatBufferBuilder::GetCurrentBufferPointer</a></div><div class="ttdeci">uint8_t * GetCurrentBufferPointer() const </div><div class="ttdoc">Get a pointer to an unfinished buffer. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:750</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a2cca5c89246a53e80e6ad9487f4c36f3"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">flatbuffers::FlatBufferBuilder::CreateVector</a></div><div class="ttdeci">Offset&lt; Vector&lt; T &gt; &gt; CreateVector(const T *v, size_t len)</div><div class="ttdoc">Serialize an array into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1121</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a10e8ec7d1c8fbdc21b1c7047bbbe38d9"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a10e8ec7d1c8fbdc21b1c7047bbbe38d9">flatbuffers::FlatBufferBuilder::CreateSharedString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateSharedString(const std::string &amp;str)</div><div class="ttdoc">Store a string in the buffer, which can contain any binary data. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1073</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a2130ef232ff405eebe2e7f184ecd06e6"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6">flatbuffers::FlatBufferBuilder::CreateVectorOfSortedTables</a></div><div class="ttdeci">Offset&lt; Vector&lt; Offset&lt; T &gt; &gt; &gt; CreateVectorOfSortedTables(Offset&lt; T &gt; *v, size_t len)</div><div class="ttdoc">Serialize an array of table offsets as a vector in the buffer in sorted order. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1365</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a5e2c3a1e47f0ab4a3a3f07a07a52fb45"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45">flatbuffers::FlatBufferBuilder::Release</a></div><div class="ttdeci">DetachedBuffer Release()</div><div class="ttdoc">Get the released DetachedBuffer. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:764</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ab478a645216d2d613fc7b7c29b0ff9d1"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1">flatbuffers::FlatBufferBuilder::CreateSharedString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateSharedString(const char *str, size_t len)</div><div class="ttdoc">Store a string in the buffer, which can contain any binary data. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1040</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a8704709a2e25ad04679212ee4126b1a1"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1">flatbuffers::FlatBufferBuilder::CreateVectorOfStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfStructs(const std::vector&lt; T &gt; &amp;v)</div><div class="ttdoc">Serialize a std::vector of structs into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1254</div></div>
-<div class="ttc" id="classflatbuffers_1_1_vector_html"><div class="ttname"><a href="classflatbuffers_1_1_vector.html">flatbuffers::Vector</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:214</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a0e715d9019060b4b753c4e5228be56e8"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8">flatbuffers::FlatBufferBuilder::ReleaseBufferPointer</a></div><div class="ttdeci">DetachedBuffer ReleaseBufferPointer()</div><div class="ttdoc">Get the released pointer to the serialized buffer. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:757</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a0c9e507b373d598b51052fab4fa34912"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">flatbuffers::FlatBufferBuilder::Finish</a></div><div class="ttdeci">void Finish(Offset&lt; T &gt; root, const char *file_identifier=nullptr)</div><div class="ttdoc">Finish serializing a buffer by writing the root offset. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1428</div></div>
-<div class="ttc" id="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare_html"><div class="ttname"><a href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">flatbuffers::FlatBufferBuilder::StringOffsetCompare</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1494</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a8dc35f792179df4ca850492c1796d8b8"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a8dc35f792179df4ca850492c1796d8b8">flatbuffers::FlatBufferBuilder::GetBufferPointer</a></div><div class="ttdeci">uint8_t * GetBufferPointer() const </div><div class="ttdoc">Get the serialized buffer (after you call Finish()). </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:743</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a1080c9e370e2d9d9d872dadd1131436b"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b">flatbuffers::FlatBufferBuilder::CreateVector</a></div><div class="ttdeci">Offset&lt; Vector&lt; T &gt; &gt; CreateVector(size_t vector_size, const std::function&lt; T(size_t i)&gt; &amp;f)</div><div class="ttdoc">Serialize values returned by a function into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1173</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ac2b96292fa0fb1534fe7fd218a094d0c"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c">flatbuffers::FlatBufferBuilder::CreateUninitializedVector</a></div><div class="ttdeci">uoffset_t CreateUninitializedVector(size_t len, size_t elemsize, uint8_t **buf)</div><div class="ttdoc">Specialized version of CreateVector for non-copying use cases. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1422</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a6e90ada59d9553636f72ce8e4a892f72"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72">flatbuffers::FlatBufferBuilder::CreateVectorOfStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfStructs(size_t vector_size, const std::function&lt; void(size_t i, T *)&gt; &amp;filler)</div><div class="ttdoc">Serialize an array of structs into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1250</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ab1f44cc1b130e13b41e9a80de76e25cf"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf">flatbuffers::FlatBufferBuilder::CreateVectorOfSortedStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfSortedStructs(T *v, size_t len)</div><div class="ttdoc">Serialize an array of structs into a FlatBuffer vector in sorted order. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1349</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a23aa4c910e053446cc404bc486012e54"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54">flatbuffers::FlatBufferBuilder::CreateVectorOfSortedNativeStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfSortedNativeStructs(std::vector&lt; S &gt; *v)</div><div class="ttdoc">Serialize a std::vector of native structs into a FlatBuffer vector in sorted order. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1336</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ac64d11c219559ea51567eab556e13135"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135">flatbuffers::FlatBufferBuilder::CreateVectorOfSortedTables</a></div><div class="ttdeci">Offset&lt; Vector&lt; Offset&lt; T &gt; &gt; &gt; CreateVectorOfSortedTables(std::vector&lt; Offset&lt; T &gt;&gt; *v)</div><div class="ttdoc">Serialize an array of table offsets as a vector in the buffer in sorted order. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1410</div></div>
+<div class="ttc" id="structflatbuffers_1_1_vector_iterator_html"><div class="ttname"><a href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:89</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a></div><div class="ttdoc">Helper class to hold data needed in creation of a FlatBuffer. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:677</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ac1bfd609f7f736e9a37cedae77448b63"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">flatbuffers::FlatBufferBuilder::GetSize</a></div><div class="ttdeci">uoffset_t GetSize() const </div><div class="ttdoc">The current size of the serialized buffer, counting from the end. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:721</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ae94b94ba71ea0aeb2d9a98c43b713412"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412">flatbuffers::FlatBufferBuilder::Clear</a></div><div class="ttdeci">void Clear()</div><div class="ttdoc">Reset all the state in this FlatBufferBuilder so it can be reused to construct another buffer...</div><div class="ttdef"><b>Definition:</b> flatbuffers.h:709</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a9cc09fa59ff9732e972877cfe911c8a5"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a9cc09fa59ff9732e972877cfe911c8a5">flatbuffers::FlatBufferBuilder::CreateVectorOfStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfStructs(size_t vector_size, F f, S *state)</div><div class="ttdoc">Serialize an array of structs into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1271</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a3d57074082aaab8cdeb8474ff9df0b53"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53">flatbuffers::FlatBufferBuilder::CreateVectorOfNativeStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfNativeStructs(const S *v, size_t len)</div><div class="ttdoc">Serialize an array of native structs into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1232</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a43f51ba9c8f4f24ea2247a3979d095b8"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a43f51ba9c8f4f24ea2247a3979d095b8">flatbuffers::FlatBufferBuilder::CreateStruct</a></div><div class="ttdeci">Offset&lt; const T * &gt; CreateStruct(const T &amp;structobj)</div><div class="ttdoc">Write a struct by itself, typically to be part of a union. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1448</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a7ba8462e408431054c99d25120326220"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220">flatbuffers::FlatBufferBuilder::FinishSizePrefixed</a></div><div class="ttdeci">void FinishSizePrefixed(Offset&lt; T &gt; root, const char *file_identifier=nullptr)</div><div class="ttdoc">Finish a buffer with a 32 bit size field pre-fixed (size of the buffer following the size field)...</div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1473</div></div>
+<div class="ttc" id="classflatbuffers_1_1_detached_buffer_html"><div class="ttname"><a href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:400</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a3eb68613e5883dc4b8fff6cf7d1223d7"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7">flatbuffers::FlatBufferBuilder::CreateSharedString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateSharedString(const char *str)</div><div class="ttdoc">Store a string in the buffer, which null-terminated. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1060</div></div>
+<div class="ttc" id="classflatbuffers_1_1_vector_of_any_html"><div class="ttname"><a href="classflatbuffers_1_1_vector_of_any.html">flatbuffers::VectorOfAny</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:307</div></div>
+<div class="ttc" id="structflatbuffers_1_1_indirect_helper_html"><div class="ttname"><a href="structflatbuffers_1_1_indirect_helper.html">flatbuffers::IndirectHelper</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:60</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_aec6f9df2a0366b540b24822414d92cbe"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">flatbuffers::FlatBufferBuilder::CreateString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateString(const char *str, size_t len)</div><div class="ttdoc">Store a string in the buffer, which can contain any binary data. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:991</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a16a8fd46b34ad7727406c37b65b6b27a"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a">flatbuffers::FlatBufferBuilder::ForceDefaults</a></div><div class="ttdeci">void ForceDefaults(bool fd)</div><div class="ttdoc">In order to save space, fields that are set to their default value don&#39;t get serialized into the buff...</div><div class="ttdef"><b>Definition:</b> flatbuffers.h:776</div></div>
+<div class="ttc" id="classflatbuffers_1_1_default_allocator_html"><div class="ttname"><a href="classflatbuffers_1_1_default_allocator.html">flatbuffers::DefaultAllocator</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:381</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_aa905b29dce19a1795c7bce375cf29961"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961">flatbuffers::FlatBufferBuilder::DedupVtables</a></div><div class="ttdeci">void DedupVtables(bool dedup)</div><div class="ttdoc">By default vtables are deduped in order to save space. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:780</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_af8c7583c92e1d1d6f438977da5158d19"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">flatbuffers::FlatBufferBuilder::kFileIdentifierLength</a></div><div class="ttdeci">static const size_t kFileIdentifierLength</div><div class="ttdoc">The length of a FlatBuffer file header. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1455</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ac0b6a1c5d949f20ad84367fc0f9e1506"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506">flatbuffers::FlatBufferBuilder::CreateString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateString(const String *str)</div><div class="ttdoc">Store a string in the buffer, which can contain any binary data. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1017</div></div>
+<div class="ttc" id="classflatbuffers_1_1vector__downward_html"><div class="ttname"><a href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:506</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a799701af34c398d8eb86e049b73bcecf"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf">flatbuffers::FlatBufferBuilder::CreateVectorOfSortedNativeStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfSortedNativeStructs(S *v, size_t len)</div><div class="ttdoc">Serialize an array of native structs into a FlatBuffer vector in sorted order. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1364</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a840b769fbb4148f97d3eed266e4690c3"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3">flatbuffers::FlatBufferBuilder::CreateSharedString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateSharedString(const String *str)</div><div class="ttdoc">Store a string in the buffer, which can contain any binary data. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1078</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ab77d800e77fa76bc758a6c399fd37685"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685">flatbuffers::FlatBufferBuilder::CreateString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateString(const T &amp;str)</div><div class="ttdoc">Store a string in the buffer, which can contain any binary data. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1026</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a7cc10b709dfa3e72083843d1a5e36c15"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15">flatbuffers::FlatBufferBuilder::CreateVectorOfSortedStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfSortedStructs(std::vector&lt; T &gt; *v)</div><div class="ttdoc">Serialize a std::vector of structs into a FlatBuffer vector in sorted order. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1323</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a592110519a6c8db1926f1365bf2a58e6"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6">flatbuffers::FlatBufferBuilder::CreateVectorOfStrings</a></div><div class="ttdeci">Offset&lt; Vector&lt; Offset&lt; String &gt; &gt; &gt; CreateVectorOfStrings(const std::vector&lt; std::string &gt; &amp;v)</div><div class="ttdoc">Serialize a std::vector<std::string> into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1203</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a53504fc2cab681a7980b03260f8b2f7a"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a53504fc2cab681a7980b03260f8b2f7a">flatbuffers::FlatBufferBuilder::CreateVector</a></div><div class="ttdeci">Offset&lt; Vector&lt; T &gt; &gt; CreateVector(size_t vector_size, F f, S *state)</div><div class="ttdoc">Serialize values returned by a function into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1190</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ae4ab74f53187e6c3e6041d34e01904c4"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4">flatbuffers::FlatBufferBuilder::FlatBufferBuilder</a></div><div class="ttdeci">FlatBufferBuilder(size_t initial_size=1024, Allocator *allocator=nullptr, bool own_allocator=false)</div><div class="ttdoc">Default constructor for FlatBufferBuilder. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:687</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_aa1ebce1f3f46832946a95952af1e9c2b"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#aa1ebce1f3f46832946a95952af1e9c2b">flatbuffers::FlatBufferBuilder::GetBufferMinAlignment</a></div><div class="ttdeci">size_t GetBufferMinAlignment()</div><div class="ttdoc">get the minimum alignment this buffer needs to be accessed properly. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:757</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_afede51fd9c32d146cbb1832f57c5e1b7"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7">flatbuffers::FlatBufferBuilder::CreateVectorOfStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfStructs(const T *v, size_t len)</div><div class="ttdoc">Serialize an array of structs into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1217</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a11c291ccd2159604c149600ee6180b95"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95">flatbuffers::FlatBufferBuilder::CreateVectorOfNativeStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfNativeStructs(const std::vector&lt; S &gt; &amp;v)</div><div class="ttdoc">Serialize a std::vector of native structs into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1298</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_aad93d113ac24e86ed04b5236b3f4c0c5"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5">flatbuffers::FlatBufferBuilder::CreateString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateString(const char *str)</div><div class="ttdoc">Store a string in the buffer, which is null-terminated. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1003</div></div>
+<div class="ttc" id="classflatbuffers_1_1_allocator_html"><div class="ttname"><a href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:357</div></div>
+<div class="ttc" id="structflatbuffers_1_1_string_html"><div class="ttname"><a href="structflatbuffers_1_1_string.html">flatbuffers::String</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:346</div></div>
+<div class="ttc" id="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc_html"><div class="ttname"><a href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html">flatbuffers::FlatBufferBuilder::FieldLoc</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1502</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a8c3af55e64f5cda9aefa38ac5287ef9f"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f">flatbuffers::FlatBufferBuilder::CreateString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateString(const std::string &amp;str)</div><div class="ttdoc">Store a string in the buffer, which can contain any binary data. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1010</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_af715dd24dd37cb0151dc7a980ad0f207"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207">flatbuffers::FlatBufferBuilder::CreateVector</a></div><div class="ttdeci">Offset&lt; Vector&lt; T &gt; &gt; CreateVector(const std::vector&lt; T &gt; &amp;v)</div><div class="ttdoc">Serialize a std::vector into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1150</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a2305b63d367845972b51669dd995cc50"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50">flatbuffers::FlatBufferBuilder::CreateUninitializedVector</a></div><div class="ttdeci">Offset&lt; Vector&lt; T &gt; &gt; CreateUninitializedVector(size_t len, T **buf)</div><div class="ttdoc">Specialized version of CreateVector for non-copying use cases. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1441</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a3f4252e9bc005ba6c700469544fdccc9"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a3f4252e9bc005ba6c700469544fdccc9">flatbuffers::FlatBufferBuilder::GetCurrentBufferPointer</a></div><div class="ttdeci">uint8_t * GetCurrentBufferPointer() const </div><div class="ttdoc">Get a pointer to an unfinished buffer. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:733</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a2cca5c89246a53e80e6ad9487f4c36f3"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">flatbuffers::FlatBufferBuilder::CreateVector</a></div><div class="ttdeci">Offset&lt; Vector&lt; T &gt; &gt; CreateVector(const T *v, size_t len)</div><div class="ttdoc">Serialize an array into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1117</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a10e8ec7d1c8fbdc21b1c7047bbbe38d9"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a10e8ec7d1c8fbdc21b1c7047bbbe38d9">flatbuffers::FlatBufferBuilder::CreateSharedString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateSharedString(const std::string &amp;str)</div><div class="ttdoc">Store a string in the buffer, which can contain any binary data. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1069</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a2130ef232ff405eebe2e7f184ecd06e6"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6">flatbuffers::FlatBufferBuilder::CreateVectorOfSortedTables</a></div><div class="ttdeci">Offset&lt; Vector&lt; Offset&lt; T &gt; &gt; &gt; CreateVectorOfSortedTables(Offset&lt; T &gt; *v, size_t len)</div><div class="ttdoc">Serialize an array of table offsets as a vector in the buffer in sorted order. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1397</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a5e2c3a1e47f0ab4a3a3f07a07a52fb45"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45">flatbuffers::FlatBufferBuilder::Release</a></div><div class="ttdeci">DetachedBuffer Release()</div><div class="ttdoc">Get the released DetachedBuffer. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:747</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ab478a645216d2d613fc7b7c29b0ff9d1"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1">flatbuffers::FlatBufferBuilder::CreateSharedString</a></div><div class="ttdeci">Offset&lt; String &gt; CreateSharedString(const char *str, size_t len)</div><div class="ttdoc">Store a string in the buffer, which can contain any binary data. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1036</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a8704709a2e25ad04679212ee4126b1a1"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1">flatbuffers::FlatBufferBuilder::CreateVectorOfStructs</a></div><div class="ttdeci">Offset&lt; Vector&lt; const T * &gt; &gt; CreateVectorOfStructs(const std::vector&lt; T &gt; &amp;v)</div><div class="ttdoc">Serialize a std::vector of structs into a FlatBuffer vector. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1286</div></div>
+<div class="ttc" id="classflatbuffers_1_1_vector_html"><div class="ttname"><a href="classflatbuffers_1_1_vector.html">flatbuffers::Vector</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:182</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a0e715d9019060b4b753c4e5228be56e8"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8">flatbuffers::FlatBufferBuilder::ReleaseBufferPointer</a></div><div class="ttdeci">DetachedBuffer ReleaseBufferPointer()</div><div class="ttdoc">Get the released pointer to the serialized buffer. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:740</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a0c9e507b373d598b51052fab4fa34912"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">flatbuffers::FlatBufferBuilder::Finish</a></div><div class="ttdeci">void Finish(Offset&lt; T &gt; root, const char *file_identifier=nullptr)</div><div class="ttdoc">Finish serializing a buffer by writing the root offset. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1460</div></div>
+<div class="ttc" id="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare_html"><div class="ttname"><a href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">flatbuffers::FlatBufferBuilder::StringOffsetCompare</a></div><div class="ttdef"><b>Definition:</b> flatbuffers.h:1529</div></div>
+<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a8dc35f792179df4ca850492c1796d8b8"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a8dc35f792179df4ca850492c1796d8b8">flatbuffers::FlatBufferBuilder::GetBufferPointer</a></div><div class="ttdeci">uint8_t * GetBufferPointer() const </div><div class="ttdoc">Get the serialized buffer (after you call Finish()). </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:726</div></div>
 </div><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- Google Analytics -->
diff --git a/flatbuffers_benchmarks.html b/flatbuffers_benchmarks.html
index 3307d56a3a099f1238232be47f85194428d7eeb0..705c2f9437866027a043222bdf3e22953b75bb1e 100644
--- a/flatbuffers_benchmarks.html
+++ b/flatbuffers_benchmarks.html
@@ -5,7 +5,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.7"/>
-<title>FlatBuffers: Benchmarks</title>
+<title>FlatBuffers: C++ Benchmarks</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -110,7 +110,7 @@ $(document).ready(function(){initNavTree('flatbuffers_benchmarks.html','');});
 
 <div class="header">
   <div class="headertitle">
-<div class="title">Benchmarks </div>  </div>
+<div class="title">C++ Benchmarks </div>  </div>
 </div><!--header-->
 <div class="contents">
 <div class="textblock"><p>Comparing against other serialization solutions, running on Windows 7 64bit. We use the LITE runtime for Protocol Buffers (less code / lower overhead), Rapid JSON (one of the fastest C++ JSON parsers around), and pugixml, also one of the fastest XML parsers.</p>
diff --git a/flatbuffers_grammar.html b/flatbuffers_grammar.html
index 012fdebb5a703e39a9fd9df8e5d3fb9e844e17b8..6187a72d353a3219e28f79758867a227e3165f16 100644
--- a/flatbuffers_grammar.html
+++ b/flatbuffers_grammar.html
@@ -113,15 +113,17 @@ $(document).ready(function(){initNavTree('flatbuffers_grammar.html','');});
 <div class="title">Grammar of the schema language </div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="textblock"><p>schema = include* ( namespace_decl | type_decl | enum_decl | root_decl | file_extension_decl | file_identifier_decl | attribute_decl | object )*</p>
+<div class="textblock"><p>schema = include* ( namespace_decl | type_decl | enum_decl | root_decl | file_extension_decl | file_identifier_decl | attribute_decl | rpc_decl | object )*</p>
 <p>include = <code>include</code> string_constant <code>;</code></p>
 <p>namespace_decl = <code>namespace</code> ident ( <code>.</code> ident )* <code>;</code></p>
 <p>attribute_decl = <code>attribute</code> string_constant <code>;</code></p>
 <p>type_decl = ( <code>table</code> | <code>struct</code> ) ident metadata <code>{</code> field_decl+ <code>}</code></p>
-<p>enum_decl = ( <code>enum</code> | <code>union</code> ) ident [ <code>:</code> type ] metadata <code>{</code> commasep( enumval_decl ) <code>}</code></p>
+<p>enum_decl = ( <code>enum</code> ident [ <code>:</code> type ] | <code>union</code> ident ) metadata <code>{</code> commasep( enumval_decl ) <code>}</code></p>
 <p>root_decl = <code>root_type</code> ident <code>;</code></p>
 <p>field_decl = ident <code>:</code> type [ <code>=</code> scalar ] metadata <code>;</code></p>
-<p>type = <code>bool</code> | <code>byte</code> | <code>ubyte</code> | <code>short</code> | <code>ushort</code> | <code>int</code> | <code>uint</code> | <code>float</code> | <code>long</code> | <code>ulong</code> | <code>double</code> | <code>string</code> | <code>[</code> type <code>]</code> | ident</p>
+<p>rpc_decl = <code>rpc_service</code> ident <code>{</code> rpc_method+ <code>}</code></p>
+<p>rpc_method = ident <code>(</code> ident <code>)</code> <code>:</code> ident metadata <code>;</code></p>
+<p>type = <code>bool</code> | <code>byte</code> | <code>ubyte</code> | <code>short</code> | <code>ushort</code> | <code>int</code> | <code>uint</code> | <code>float</code> | <code>long</code> | <code>ulong</code> | <code>double</code> | <code>int8</code> | <code>uint8</code> | <code>int16</code> | <code>uint16</code> | <code>int32</code> | <code>uint32</code>| <code>int64</code> | <code>uint64</code> | <code>float32</code> | <code>float64</code> | <code>string</code> | <code>[</code> type <code>]</code> | ident</p>
 <p>enumval_decl = ident [ <code>=</code> integer_constant ]</p>
 <p>metadata = [ <code>(</code> commasep( ident [ <code>:</code> single_value ] ) <code>)</code> ]</p>
 <p>scalar = integer_constant | float_constant</p>
@@ -131,8 +133,10 @@ $(document).ready(function(){initNavTree('flatbuffers_grammar.html','');});
 <p>commasep(x) = [ x ( <code>,</code> x )* ]</p>
 <p>file_extension_decl = <code>file_extension</code> string_constant <code>;</code></p>
 <p>file_identifier_decl = <code>file_identifier</code> string_constant <code>;</code></p>
-<p>integer_constant = -?[0-9]+ | <code>true</code> | <code>false</code></p>
-<p>float_constant = -?[0-9]+.[0-9]+((e|E)(+|-)?[0-9]+)? </p>
+<p>integer_constant = <code>-?[0-9]+</code> | <code>true</code> | <code>false</code></p>
+<p>float_constant = <code>-?[0-9]+.[0-9]+((e|E)(+|-)?[0-9]+)?</code></p>
+<p>string_constant = <code>\".*?\\"</code></p>
+<p>ident = <code>[a-zA-Z_][a-zA-Z0-9_]*</code> </p>
 </div></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- Google Analytics -->
diff --git a/flatbuffers_guide_tutorial.html b/flatbuffers_guide_tutorial.html
index 169917f6f1988050a3e85ab57eaaa37c66824b75..6d830000e017fb5f3b8de09a4052690dd864d853 100644
--- a/flatbuffers_guide_tutorial.html
+++ b/flatbuffers_guide_tutorial.html
@@ -237,8 +237,10 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_tutorial.html','');}
 <p>Following the <code>enum</code> is a <code>union</code>. The <code>union</code> in this example is not very useful, as it only contains the one <code>table</code> (named <code>Weapon</code>). If we had created multiple tables that we would want the <code>union</code> to be able to reference, we could add more elements to the <code>union Equipment</code>.</p>
 <p>After the <code>union</code> comes a <code>struct Vec3</code>, which represents a floating point vector with <code>3</code> dimensions. We use a <code>struct</code> here, over a <code>table</code>, because <code>struct</code>s are ideal for data structures that will not change, since they use less memory and have faster lookup.</p>
 <p>The <code>Monster</code> table is the main object in our FlatBuffer. This will be used as the template to store our <code>orc</code> monster. We specify some default values for fields, such as <code>mana:short = 150</code>. All unspecified fields will default to <code>0</code> or <code>NULL</code>. Another thing to note is the line <code>friendly:bool = false (deprecated);</code>. Since you cannot delete fields from a <code>table</code> (to support backwards compatability), you can set fields as <code>deprecated</code>, which will prevent the generation of accessors for this field in the generated code. Be careful when using <code>deprecated</code>, however, as it may break legacy code that used this accessor.</p>
-<p>The <code>Weapon</code> table is a sub-table used within our FlatBuffer. It is used twice: once within the <code>Monster</code> table and once within the <code>Equipment</code> enum. For our <code>Monster</code>, it is used to populate a <code>vector of tables</code> via the <code>weapons</code> field within our <code>Monster</code>. It is also the only table referenced by the <code>Equipment</code> enum.</p>
+<p>The <code>Weapon</code> table is a sub-table used within our FlatBuffer. It is used twice: once within the <code>Monster</code> table and once within the <code>Equipment</code> enum. For our <code>Monster</code>, it is used to populate a <code>vector of tables</code> via the <code>weapons</code> field within our <code>Monster</code>. It is also the only table referenced by the <code>Equipment</code> union.</p>
 <p>The last part of the <code>schema</code> is the <code>root_type</code>. The root type declares what will be the root table for the serialized data. In our case, the root type is our <code>Monster</code> table.</p>
+<p>The scalar types can also use alias type names such as <code>int16</code> instead of <code>short</code> and <code>float32</code> instead of <code>float</code>. Thus we could also write the <code>Weapon</code> table as:</p>
+<p>table Weapon { name:string; damage:int16; }</p>
 <h4>More Information About Schemas</h4>
 <p>You can find a complete guide to writing <code>schema</code> files in the <a class="el" href="flatbuffers_guide_writing_schema.html">Writing a schema</a> section of the Programmer's Guide. You can also view the formal <a class="el" href="flatbuffers_grammar.html">Grammar of the schema language</a>.</p>
 <h2>Compiling the Monsters' Schema</h2>
@@ -451,7 +453,7 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_tutorial.html','');}
 <div class="line"></div>
 <div class="line"><span class="comment">// Create a `vector` representing the inventory of the Orc. Each number</span></div>
 <div class="line"><span class="comment">// could correspond to an item that can be claimed after he is slain.</span></div>
-<div class="line"><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> treasure = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};</div>
+<div class="line"><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> treasure[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};</div>
 <div class="line"><span class="keyword">auto</span> inventory = builder.CreateVector(treasure, 10);</div>
 </div><!-- fragment --> </div> <div class="language-java"> <div class="fragment"><div class="line"><span class="comment">// Serialize a name for our monster, called &quot;Orc&quot;.</span></div>
 <div class="line"><span class="keywordtype">int</span> name = builder.createString(<span class="stringliteral">&quot;Orc&quot;</span>);</div>
@@ -519,6 +521,7 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_tutorial.html','');}
 <div class="line">inventory = flatbuffers_uint8_vec_create(B, treasure, c_vec_len(treasure));</div>
 </div><!-- fragment --> </div><p>We serialized two built-in data types (<code>string</code> and <code>vector</code>) and captured their return values. These values are offsets into the serialized data, indicating where they are stored, such that we can refer to them below when adding fields to our monster.</p>
 <p><em>Note: To create a <code>vector</code> of nested objects (e.g. <code>table</code>s, <code>string</code>s, or other <code>vector</code>s), collect their offsets into a temporary data structure, and then create an additional <code>vector</code> containing their offsets.</em></p>
+<p>If instead of creating a vector from an existing array you serialize elements individually one by one, take care to note that this happens in reverse order, as buffers are built back to front.</p>
 <p>For example, take a look at the two <code>Weapon</code>s that we created earlier (<code>Sword</code> and <code>Axe</code>). These are both FlatBuffer <code>table</code>s, whose offsets we now store in memory. Therefore we can create a FlatBuffer <code>vector</code> to contain these offsets.</p>
 <div class="language-cpp"> <div class="fragment"><div class="line"><span class="comment">// Place the weapons into a `std::vector`, then convert that into a FlatBuffer `vector`.</span></div>
 <div class="line">std::vector&lt;flatbuffers::Offset&lt;Weapon&gt;&gt; weapons_vector;</div>
@@ -567,7 +570,7 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_tutorial.html','');}
 </div><!-- fragment --> </div><div class="language-cpp"> <br />
  Note there's additional convenience overloads of <code>CreateVector</code>, allowing you to work with data that's not in a <code>std::vector</code>, or allowing you to generate elements by calling a lambda. For the common case of <code>std::vector&lt;std::string&gt;</code> there's also <code>CreateVectorOfStrings</code>. </div><p>Note that vectors of structs are serialized differently from tables, since structs are stored in-line in the vector. For example, to create a vector for the <code>path</code> field above:</p>
 <div class="language-cpp"> <div class="fragment"><div class="line">Vec3 points[] = { Vec3(1.0f, 2.0f, 3.0f), Vec3(4.0f, 5.0f, 6.0f) };</div>
-<div class="line"><span class="keyword">auto</span> path = fbb.CreateVectorOfStructs(points, 2);</div>
+<div class="line"><span class="keyword">auto</span> path = builder.CreateVectorOfStructs(points, 2);</div>
 </div><!-- fragment --> </div> <div class="language-java"> <div class="fragment"><div class="line">Monster.startPathVector(fbb, 2);</div>
 <div class="line">Vec3.createVec3(builder, 1.0f, 2.0f, 3.0f);</div>
 <div class="line">Vec3.createVec3(builder, 4.0f, 5.0f, 6.0f);</div>
@@ -580,11 +583,11 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_tutorial.html','');}
 <div class="line">sample.CreateVec3(builder, 1.0, 2.0, 3.0)</div>
 <div class="line">sample.CreateVec3(builder, 4.0, 5.0, 6.0)</div>
 <div class="line">path := builder.EndVector(2)</div>
-</div><!-- fragment --> </div> <div class="language-python"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;MyGame.Example.Monster.MonsterStartPathVector(builder, 2)</div>
+</div><!-- fragment --> </div> <div class="language-python"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;MyGame.Sample.Monster.MonsterStartPathVector(builder, 2)</div>
 <div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;MyGame.Sample.Vec3.CreateVec3(builder, 1.0, 2.0, 3.0)</div>
 <div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;MyGame.Sample.Vec3.CreateVec3(builder, 4.0, 5.0, 6.0)</div>
 <div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;path = builder.EndVector(2)</div>
-</div><!-- fragment --> </div> <div class="language-javascript"> <div class="fragment"><div class="line">MyGame.Example.Monster.startPathVector(builder, 2);</div>
+</div><!-- fragment --> </div> <div class="language-javascript"> <div class="fragment"><div class="line">MyGame.Sample.Monster.startPathVector(builder, 2);</div>
 <div class="line">MyGame.Sample.Vec3.createVec3(builder, 1.0, 2.0, 3.0);</div>
 <div class="line">MyGame.Sample.Vec3.createVec3(builder, 4.0, 5.0, 6.0);</div>
 <div class="line">var path = builder.endVector();</div>
@@ -699,13 +702,14 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_tutorial.html','');}
 <div class="line"><span class="comment">// manually.</span></div>
 <div class="line">MonsterBuilder monster_builder(builder);</div>
 <div class="line">monster_builder.add_pos(&amp;pos);</div>
+<div class="line"><span class="keyword">auto</span> pos = Vec3(1.0f, 2.0f, 3.0f);</div>
 <div class="line">monster_builder.add_hp(hp);</div>
 <div class="line">monster_builder.add_name(name);</div>
 <div class="line">monster_builder.add_inventory(inventory);</div>
 <div class="line">monster_builder.add_color(Color_Red);</div>
 <div class="line">monster_builder.add_weapons(weapons);</div>
 <div class="line">monster_builder.add_equipped_type(Equipment_Weapon);</div>
-<div class="line">monster_builder.add_equpped(axe);</div>
+<div class="line">monster_builder.add_equpped(axe.Union());</div>
 <div class="line"><span class="keyword">auto</span> orc = monster_builder.Finish();</div>
 </div><!-- fragment --> </div> <div class="language-c"> If you do not wish to set every field in a <code>table</code>, it may be more convenient to manually set each field of your monster, instead of calling <code>create_monster_as_root()</code>. The following snippet is functionally equivalent to the above code, but provides a bit more flexibility. <br />
  </p><div class="fragment"><div class="line"><span class="comment">// It is important to pair `start_as_root` with `end_as_root`.</span></div>
@@ -759,7 +763,7 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_tutorial.html','');}
 </div><!-- fragment --> </div> <div class="language-python"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment"># Call `Finish()` to instruct the builder that this monster is complete.</span></div>
 <div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;builder.Finish(orc)</div>
 </div><!-- fragment --> </div> <div class="language-javascript"> <div class="fragment"><div class="line"><span class="comment">// Call `finish()` to instruct the builder that this monster is complete.</span></div>
-<div class="line">builder.finish(orc); <span class="comment">// You could also call `MyGame.Example.Monster.finishMonsterBuffer(builder,</span></div>
+<div class="line">builder.finish(orc); <span class="comment">// You could also call `MyGame.Sample.Monster.finishMonsterBuffer(builder,</span></div>
 <div class="line">                     <span class="comment">//                                                                 orc);`.</span></div>
 </div><!-- fragment --> </div> <div class="language-php"> <div class="fragment"><div class="line"><span class="comment">// Call `finish()` to instruct the builder that this monster is complete.</span></div>
 <div class="line"> $builder-&gt;finish($orc); <span class="comment">// You may also call `\MyGame\Sample\Monster::FinishMonsterBuffer(</span></div>
@@ -881,6 +885,8 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_tutorial.html','');}
 <div class="line"></div>
 <div class="line"><span class="comment">// `monster` is of type `Monster *`.</span></div>
 <div class="line"><span class="comment">// Note: root object pointers are NOT the same as `buffer_pointer`.</span></div>
+<div class="line"><span class="comment">// `GetMonster` is a convenience function that calls `GetRoot&lt;Monster&gt;`,</span></div>
+<div class="line"><span class="comment">// the latter is also available for non-root types.</span></div>
 </div><!-- fragment --> </div> <div class="language-java"> <div class="fragment"><div class="line">byte[] bytes = <span class="comment">/* the data you just read */</span></div>
 <div class="line">java.nio.ByteBuffer buf = java.nio.ByteBuffer.wrap(bytes);</div>
 <div class="line"></div>
diff --git a/flatbuffers_guide_use_cpp.html b/flatbuffers_guide_use_cpp.html
index cb4faa8475a7a6365d0d46b9bdbd7a19476c9046..3a0d527ce68e801a6d900d53396ede0c81fa6faf 100644
--- a/flatbuffers_guide_use_cpp.html
+++ b/flatbuffers_guide_use_cpp.html
@@ -198,6 +198,12 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_use_cpp.html','');})
 <p>Loading in one of these binary schemas at runtime allows you traverse any FlatBuffer data that corresponds to it without knowing the exact format. You can query what fields are present, and then read/write them after.</p>
 <p>For convenient field manipulation, you can include the header <code>flatbuffers/reflection.h</code> which includes both the generated code from the meta schema, as well as a lot of helper functions.</p>
 <p>And example of usage, for the time being, can be found in <code>test.cpp/ReflectionTest()</code>.</p>
+<h2>Mini Reflection</h2>
+<p>A more limited form of reflection is available for direct inclusion in generated code, which doesn't any (binary) schema access at all. It was designed to keep the overhead of reflection as low as possible (on the order of 2-6 bytes per field added to your executable), but doesn't contain all the information the (binary) schema contains.</p>
+<p>You add this information to your generated code by specifying <code>--reflect-types</code> (or instead <code>--reflect-names</code> if you also want field / enum names).</p>
+<p>You can now use this information, for example to print a FlatBuffer to text: </p><pre class="fragment">auto s = flatbuffers::FlatBufferToString(flatbuf, MonsterTypeTable());
+</pre><p><code>MonsterTypeTable()</code> is declared in the generated code for each type. The string produced is very similar to the JSON produced by the <code>Parser</code> based text generator.</p>
+<p>You'll need <code>flatbuffers/minireflect.h</code> for this functionality. In there is also a convenient visitor/iterator so you can write your own output / functionality based on the mini reflection tables without having to know the FlatBuffers or reflection encoding.</p>
 <h2>Storing maps / dictionaries in a FlatBuffer</h2>
 <p>FlatBuffers doesn't support maps natively, but there is support to emulate their behavior with vectors and binary search, which means you can have fast lookups directly from a FlatBuffer without having to unpack your data into a <code>std::map</code> or similar.</p>
 <p>To use it:</p><ul>
diff --git a/flatbuffers_guide_use_java_c-sharp.html b/flatbuffers_guide_use_java_c-sharp.html
index 48a100061752762af236f4777356321cbeeed126..432df2b02f4a316e442aca6ab9c1dc8975e2d587 100644
--- a/flatbuffers_guide_use_java_c-sharp.html
+++ b/flatbuffers_guide_use_java_c-sharp.html
@@ -171,7 +171,7 @@ google/flatbuffers/tree/master/tests/FlatBuffers.Test">FlatBuffers.Test</a> subf
 </div><!-- fragment --><h2>Storing dictionaries in a FlatBuffer</h2>
 <p>FlatBuffers doesn't support dictionaries natively, but there is support to emulate their behavior with vectors and binary search, which means you can have fast lookups directly from a FlatBuffer without having to unpack your data into a <code>Dictionary</code> or similar.</p>
 <p>To use it:</p><ul>
-<li>Designate one of the fields in a table as they "key" field. You do this by setting the <code>key</code> attribute on this field, e.g. <code>name:string (key)</code>. You may only have one key field, and it must be of string or scalar type.</li>
+<li>Designate one of the fields in a table as the "key" field. You do this by setting the <code>key</code> attribute on this field, e.g. <code>name:string (key)</code>. You may only have one key field, and it must be of string or scalar type.</li>
 <li>Write out tables of this type as usual, collect their offsets in an array.</li>
 <li>Instead of calling standard generated method, e.g.: <code>Monster.createTestarrayoftablesVector</code>, call <code>CreateSortedVectorOfMonster</code> in C# or <code>createSortedVectorOfTables</code> (from the <code>FlatBufferBuilder</code> object) in Java, which will first sort all offsets such that the tables they refer to are sorted by the key field, then serialize it.</li>
 <li>Now when you're accessing the FlatBuffer, you can use the <code>ByKey</code> accessor to access elements of the vector, e.g.: <code>monster.testarrayoftablesByKey("Frodo")</code> in Java or <code>monster.TestarrayoftablesByKey("Frodo")</code> in C#, which returns an object of the corresponding table type, or <code>null</code> if not found. <code>ByKey</code> performs a binary search, so should have a similar speed to <code>Dictionary</code>, though may be faster because of better caching. <code>ByKey</code> only works if the vector has been sorted, it will likely not find elements if it hasn't been sorted.</li>
diff --git a/flatbuffers_guide_use_python.html b/flatbuffers_guide_use_python.html
index 383f41dbc2f2b07b1715901a240fd4d0ed939d1b..a7d5f913b41c6a634f61d0615a63710421e5b947 100644
--- a/flatbuffers_guide_use_python.html
+++ b/flatbuffers_guide_use_python.html
@@ -139,7 +139,16 @@ blob/master/tests/PythonTest.sh">PythonTest.sh</a> shell script.</p>
 </div><!-- fragment --><p>Now you can access values like this:</p>
 <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;hp = monster.Hp()</div>
 <div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;pos = monster.Pos()</div>
-</div><!-- fragment --><h2>Text Parsing</h2>
+</div><!-- fragment --><h2>Support for Numpy arrays</h2>
+<p>The Flatbuffers python library also has support for accessing scalar vectors as numpy arrays. This can be orders of magnitude faster than iterating over the vector one element at a time, and is particularly useful when unpacking large nested flatbuffers. The generated code for a scalar vector will have a method <code>&lt;vector name&gt;AsNumpy()</code>. In the case of the Monster example, you could access the inventory vector like this:</p>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;inventory = monster.InventoryAsNumpy()</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"># inventory is a numpy array of type np.dtype(&#39;uint8&#39;)</span></div>
+</div><!-- fragment --><p>instead of</p>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;inventory = []</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="keywordflow">for</span> i <span class="keywordflow">in</span> range(monster.InventoryLength()):</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;    inventory.append(int(monster.Inventory(i)))</div>
+</div><!-- fragment --><p>Numpy is not a requirement. If numpy is not installed on your system, then attempting to access one of the <code>*asNumpy()</code> methods will result in a <code>NumpyRequiredForThisFeature</code> exception.</p>
+<h2>Text Parsing</h2>
 <p>There currently is no support for parsing text (Schema's and JSON) directly from Python, though you could use the C++ parser through SWIG or ctypes. Please see the C++ documentation for more on text parsing.</p>
 <p><br />
  </p>
diff --git a/flatbuffers_guide_using_schema_compiler.html b/flatbuffers_guide_using_schema_compiler.html
index 2378866719d9380e8a9859380c5c0f7b572b8e35..175aeae7de7a2cbebfecd8f1b353e78edf69be20 100644
--- a/flatbuffers_guide_using_schema_compiler.html
+++ b/flatbuffers_guide_using_schema_compiler.html
@@ -159,6 +159,8 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_using_schema_compile
 <li><code>--conform FILE</code> : Specify a schema the following schemas should be an evolution of. Gives errors if not. Useful to check if schema modifications don't break schema evolution rules.</li>
 <li><code>--include-prefix PATH</code> : Prefix this path to any generated include statements.</li>
 <li><code>--keep-prefix</code> : Keep original prefix of schema include statement.</li>
+<li><code>--reflect-types</code> : Add minimal type reflection to code generation.</li>
+<li><code>--reflect-names</code> : Add minimal type/name reflection.</li>
 </ul>
 <p>NOTE: short-form options for generators are deprecated, use the long form whenever possible. </p>
 </div></div><!-- contents -->
diff --git a/flatbuffers_guide_writing_schema.html b/flatbuffers_guide_writing_schema.html
index e5ff40ed5a52d617b3d2e15e140a71d18dcb85f2..2d82ef20564d22e4142c6489584ea89414fad63e 100644
--- a/flatbuffers_guide_writing_schema.html
+++ b/flatbuffers_guide_writing_schema.html
@@ -154,13 +154,14 @@ root_type Monster;
 <h3>Structs</h3>
 <p>Similar to a table, only now none of the fields are optional (so no defaults either), and fields may not be added or be deprecated. Structs may only contain scalars or other structs. Use this for simple objects where you are very sure no changes will ever be made (as quite clear in the example <code>Vec3</code>). Structs use less memory than tables and are even faster to access (they are always stored in-line in their parent object, and use no virtual table).</p>
 <h3>Types</h3>
-<p>Built-in scalar types are:</p>
+<p>Built-in scalar types are</p>
 <ul>
-<li>8 bit: <code>byte</code>, <code>ubyte</code>, <code>bool</code></li>
-<li>16 bit: <code>short</code>, <code>ushort</code></li>
-<li>32 bit: <code>int</code>, <code>uint</code>, <code>float</code></li>
-<li>64 bit: <code>long</code>, <code>ulong</code>, <code>double</code></li>
+<li>8 bit: <code>byte</code> (<code>int8</code>), <code>ubyte</code> (<code>uint8</code>), <code>bool</code></li>
+<li>16 bit: <code>short</code> (<code>int16</code>), <code>ushort</code> (<code>uint16</code>)</li>
+<li>32 bit: <code>int</code> (<code>int32</code>), <code>uint</code> (<code>uint32</code>), <code>float</code> (<code>float32</code>)</li>
+<li>64 bit: <code>long</code> (<code>int64</code>), <code>ulong</code> (<code>uint64</code>), <code>double</code> (<code>float64</code>)</li>
 </ul>
+<p>The type names in parentheses are alias names such that for example <code>uint8</code> can be used in place of <code>ubyte</code>, and <code>int32</code> can be used in place of <code>int</code> without affecting code generation.</p>
 <p>Built-in non-scalar types:</p>
 <ul>
 <li>Vector of any other type (denoted with <code>[type]</code>). Nesting vectors is not supported, instead you can wrap the inner vector in a table.</li>
@@ -210,8 +211,8 @@ root_type Monster;
 <p>Current understood attributes:</p>
 <ul>
 <li><code>id: n</code> (on a table field): manually set the field identifier to <code>n</code>. If you use this attribute, you must use it on ALL fields of this table, and the numbers must be a contiguous range from 0 onwards. Additionally, since a union type effectively adds two fields, its id must be that of the second field (the first field is the type field and not explicitly declared in the schema). For example, if the last field before the union field had id 6, the union field should have id 8, and the unions type field will implicitly be 7. IDs allow the fields to be placed in any order in the schema. When a new field is added to the schema it must use the next available ID.</li>
-<li><code>deprecated</code> (on a field): do not generate accessors for this field anymore, code should stop using this data.</li>
-<li><code>required</code> (on a non-scalar table field): this field must always be set. By default, all fields are optional, i.e. may be left out. This is desirable, as it helps with forwards/backwards compatibility, and flexibility of data structures. It is also a burden on the reading code, since for non-scalar fields it requires you to check against NULL and take appropriate action. By specifying this field, you force code that constructs FlatBuffers to ensure this field is initialized, so the reading code may access it directly, without checking for NULL. If the constructing code does not initialize this field, they will get an assert, and also the verifier will fail on buffers that have missing required fields.</li>
+<li><code>deprecated</code> (on a field): do not generate accessors for this field anymore, code should stop using this data. Old data may still contain this field, but it won't be accessible anymore by newer code. Note that if you deprecate a field that was previous required, old code may fail to validate new data (when using the optional verifier).</li>
+<li><code>required</code> (on a non-scalar table field): this field must always be set. By default, all fields are optional, i.e. may be left out. This is desirable, as it helps with forwards/backwards compatibility, and flexibility of data structures. It is also a burden on the reading code, since for non-scalar fields it requires you to check against NULL and take appropriate action. By specifying this field, you force code that constructs FlatBuffers to ensure this field is initialized, so the reading code may access it directly, without checking for NULL. If the constructing code does not initialize this field, they will get an assert, and also the verifier will fail on buffers that have missing required fields. Note that if you add this attribute to an existing field, this will only be valid if existing data always contains this field / existing code always writes this field.</li>
 <li><code>force_align: size</code> (on a struct): force the alignment of this struct to be something higher than what it is naturally aligned to. Causes these structs to be aligned to that amount inside a buffer, IF that buffer is allocated with that alignment (which is not necessarily the case for buffers accessed directly inside a <code>FlatBufferBuilder</code>).</li>
 <li><code>bit_flags</code> (on an enum): the values of this field indicate bits, meaning that any value N specified in the schema will end up representing 1&lt;&lt;N, or if you don't specify values at all, you'll get the sequence 1, 2, 4, 8, ...</li>
 <li><code>nested_flatbuffer: "table_name"</code> (on a field): this indicates that the field (which must be a vector of ubyte) contains flatbuffer data, for which the root type is given by <code>table_name</code>. The generated code will then produce a convenient accessor for the nested FlatBuffer.</li>
diff --git a/flatbuffers_internals.html b/flatbuffers_internals.html
index 032818d2753c7b1d9b5138370be8cfc85dc15920..ef59bdf3e833d081fd81555ce12a4943a9c13389 100644
--- a/flatbuffers_internals.html
+++ b/flatbuffers_internals.html
@@ -242,6 +242,8 @@ int16_t 0      // Padding for alignment.
 uint32_t 4  // Length of string.
 int8_t 'f', 'r', 'e', 'd', 0, 0, 0, 0  // Text + 0 termination + padding.
 </pre><p>Note that this not the only possible encoding, since the writer has some flexibility in which of the children of root object to write first (though in this case there's only one string), and what order to write the fields in. Different orders may also cause different alignments to happen.</p>
+<h3>Additional reading.</h3>
+<p>The author of the C language implementation has made a similar <a href="https://github.com/dvidelabs/flatcc/blob/master/doc/binary-format.md#flatbuffers-binary-format">document</a> that may further help clarify the format.</p>
 <h1>FlexBuffers</h1>
 <p>The <a class="el" href="flexbuffers.html">schema-less</a> version of FlatBuffers have their own encoding, detailed here.</p>
 <p>It shares many properties mentioned above, in that all data is accessed over offsets, all scalars are aligned to their own size, and all data is always stored in little endian format.</p>
@@ -265,6 +267,8 @@ int8_t 'f', 'r', 'e', 'd', 0, 0, 0, 0  // Text + 0 termination + padding.
 <h3>Scalars</h3>
 <p>FlexBuffers supports integers (<code>TYPE_INT</code> and <code>TYPE_UINT</code>) and floats (<code>TYPE_FLOAT</code>), available in the bit-widths mentioned above. They can be stored both inline and over an offset (<code>TYPE_INDIRECT_*</code>).</p>
 <p>The offset version is useful to encode costly 64bit (or even 32bit) quantities into vectors / maps of smaller sizes, and to share / repeat a value multiple times.</p>
+<h3>Booleans and Nulls</h3>
+<p>Booleans (<code>TYPE_BOOL</code>) and nulls (<code>TYPE_NULL</code>) are encoded as inlined unsigned integers.</p>
 <h3>Blobs, Strings and Keys.</h3>
 <p>A blob (<code>TYPE_BLOB</code>) is encoded similar to a vector, with one difference: the elements are always <code>uint8_t</code>. The parent bit width only determines the width of the size field, allowing blobs to be large without the elements being large.</p>
 <p>Strings (<code>TYPE_STRING</code>) are similar to blobs, except they have an additional 0 termination byte for convenience, and they MUST be UTF-8 encoded (since an accessor in a language that does not support pointers to UTF-8 data may have to convert them to a native string type).</p>
@@ -287,16 +291,16 @@ int8_t 'f', 'r', 'e', 'd', 0, 0, 0, 0  // Text + 0 termination + padding.
 </table>
 <p>Since a map is otherwise the same as a vector, it can be iterated like a vector (which is probably faster than lookup by key).</p>
 <p>The keys vector is a typed vector of keys. Both the keys and corresponding values <em>have</em> to be stored in sorted order (as determined by <code>strcmp</code>), such that lookups can be made using binary search.</p>
-<p>The reason the key vector is a seperate structure from the value vector is such that it can be shared between multiple value vectors, and also to allow it to be treated as its own indivual vector in code.</p>
-<p>An example map { foo: 13, bar: 14 } would be encoded as: </p><pre class="fragment">0 : uint8_t 'f', 'o', 'o', 0
-4 : uint8_t 'b', 'a', 'r', 0
+<p>The reason the key vector is a seperate structure from the value vector is such that it can be shared between multiple value vectors, and also to allow it to be treated as its own individual vector in code.</p>
+<p>An example map { foo: 13, bar: 14 } would be encoded as: </p><pre class="fragment">0 : uint8_t 'b', 'a', 'r', 0
+4 : uint8_t 'f', 'o', 'o', 0
 8 : uint8_t 2      // key vector of size 2
 // key vector offset points here
-9 : uint8_t 9, 6   // offsets to foo_key and bar_key
-11: uint8_t 3, 1   // offset to key vector, and its byte width
+9 : uint8_t 9, 6   // offsets to bar_key and foo_key
+11: uint8_t 2, 1   // offset to key vector, and its byte width
 13: uint8_t 2      // value vector of size
 // value vector offset points here
-14: uint8_t 13, 14 // values
+14: uint8_t 14, 13 // values
 16: uint8_t 4, 4   // types
 </pre><h3>The root</h3>
 <p>As mentioned, the root starts at the end of the buffer. The last uint8_t is the width in bytes of the root (normally the parent determines the width, but the root has no parent). The uint8_t before this is the type of the root, and the bytes before that are the root value (of the number of bytes specified by the last byte).</p>
diff --git a/flexbuffers.html b/flexbuffers.html
index 8cb2f8e8a5a86e30da65ca1228e2aff06416a51a..439f78ca3bf50bb7900c4a3df5f1241996e41542 100644
--- a/flexbuffers.html
+++ b/flexbuffers.html
@@ -160,7 +160,7 @@ $(document).ready(function(){initNavTree('flexbuffers.html','');});
 <div class="line">map[<span class="stringliteral">&quot;foo&quot;</span>].AsUInt8();  <span class="comment">// 100</span></div>
 <div class="line">map[<span class="stringliteral">&quot;unknown&quot;</span>].IsNull();  <span class="comment">// true</span></div>
 </div><!-- fragment --><h1>Binary encoding</h1>
-<p>A description of how FlexBuffers are encoded is in the <a href="Internals.md#flexbuffers">internals</a> document.</p>
+<p>A description of how FlexBuffers are encoded is in the <a class="el" href="flatbuffers_internals.html">internals</a> document.</p>
 <h1>Nesting inside a FlatBuffer</h1>
 <p>You can mark a field as containing a FlexBuffer, e.g. </p><pre class="fragment">a:[ubyte] (flexbuffer);
 </pre><p>A special accessor will be generated that allows you to access the root value directly, e.g. <code>a_flexbuffer_root().AsInt64()</code>.</p>
diff --git a/functions.html b/functions.html
index 1d0546e11eb9606307107e3264139bb5955b5ab5..b125bdfc735c14fabb6fd94eeef81875169309e3 100644
--- a/functions.html
+++ b/functions.html
@@ -113,6 +113,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <li><a href="#index_g"><span>g</span></a></li>
       <li><a href="#index_i"><span>i</span></a></li>
       <li><a href="#index_k"><span>k</span></a></li>
+      <li><a href="#index_n"><span>n</span></a></li>
+      <li><a href="#index_o"><span>o</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
       <li><a href="#index_r"><span>r</span></a></li>
       <li class="current"><a href="#index_s"><span>s</span></a></li>
     </ul>
@@ -275,10 +278,10 @@ $(document).ready(function(){initNavTree('functions.html','');});
 : <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a37b5debda58afd1fcb71ec82efe663b9">com.google.flatbuffers.FlatBufferBuilder</a>
 </li>
 <li>CreateSharedString()
-: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1">flatbuffers::FlatBufferBuilder</a>
+: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7">flatbuffers::FlatBufferBuilder</a>
 </li>
 <li>createString()
-: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a8d676eb9973ecba574a220cdef725577">com.google.flatbuffers.FlatBufferBuilder</a>
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abd3b2f9b239a702ffaa8a1e97894f09e">com.google.flatbuffers.FlatBufferBuilder</a>
 </li>
 <li>CreateString()
 : <a class="el" href="class_flat_buffers_1_1_flat_buffer_builder.html#a3b6e42519f278e4a060895633d048070">FlatBuffers.FlatBufferBuilder</a>
@@ -297,7 +300,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
 : <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#acc889115f91460ca89ce981cb02c2039">com.google.flatbuffers.FlatBufferBuilder</a>
 </li>
 <li>CreateVector()
-: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">flatbuffers::FlatBufferBuilder</a>
+: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207">flatbuffers::FlatBufferBuilder</a>
 </li>
 <li>CreateVectorOfNativeStructs()
 : <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53">flatbuffers::FlatBufferBuilder</a>
@@ -315,7 +318,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
 : <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6">flatbuffers::FlatBufferBuilder</a>
 </li>
 <li>CreateVectorOfStructs()
-: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72">flatbuffers::FlatBufferBuilder</a>
+: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7">flatbuffers::FlatBufferBuilder</a>
 </li>
 <li>createVectorOfTables()
 : <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24ea4649f508a7843e429737a4a9fad1">com.google.flatbuffers.FlatBufferBuilder</a>
@@ -364,7 +367,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
 : <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220">flatbuffers::FlatBufferBuilder</a>
 </li>
 <li>FlatBufferBuilder()
-: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#af49427a6a8a6ec24f3c9cf812f30812d">com.google.flatbuffers.FlatBufferBuilder</a>
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aed1e475e75409625c8df85dc3d396e4c">com.google.flatbuffers.FlatBufferBuilder</a>
 , <a class="el" href="class_flat_buffers_1_1_flat_buffer_builder.html#ae24f93e3f9672846dd241d585d62c63d">FlatBuffers.FlatBufferBuilder</a>
 , <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4">flatbuffers::FlatBufferBuilder</a>
 </li>
@@ -399,7 +402,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
 
 <h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
 <li>init()
-: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0757a4347e9b932f9c0607f79531b023">com.google.flatbuffers.FlatBufferBuilder</a>
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#adf671e70a4d30c85f37393c47a7a7dd1">com.google.flatbuffers.FlatBufferBuilder</a>
 </li>
 </ul>
 
@@ -411,6 +414,52 @@ $(document).ready(function(){initNavTree('functions.html','');});
 </ul>
 
 
+<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>newByteBuffer()
+: <a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html#a0db9a9033d232d584443a433d7576f4a">com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory</a>
+, <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html#aac26ff51a8162b37a072792ec9068644">com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<li>offset()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae3a3fbf645e64ce784a524f935a6e6f2">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>pad()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a4a2e8c6430c6538509147225b8a4697e">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>prep()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a2023123a33f19d670182d5f00ef9aa59">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>putBoolean()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24114cfb1adb89f1e3d72736b06a8df0">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>putByte()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a86b42641d0c600afa11f8c8493f5e6a3">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>putDouble()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a36bc3231cc9f86e6fd2750dcec8b7336">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>putFloat()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e3fae083ea9c9bff3b80cde3f4581bb">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>putInt()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a108d4c3d931b4f2a63a71aeefa562bba">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>putLong()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a083507c3c359c28bb008142e8ad41a7d">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>putShort()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a5a98de8b6e8fc5df984c435ba3181690">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+</ul>
+
+
 <h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
 <li>Release()
 : <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45">flatbuffers::FlatBufferBuilder</a>
@@ -431,6 +480,9 @@ $(document).ready(function(){initNavTree('functions.html','');});
 <li>sizedByteArray()
 : <a class="el" href="class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a967e7dc8f051d4e73b3155e3b281d7b4">Google\FlatBuffers\FlatbufferBuilder</a>
 </li>
+<li>sizedInputStream()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ab8fc86fe501b182b4a1a50fcdbcb3e6b">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
diff --git a/functions_func.html b/functions_func.html
index ec7ffc27b1dc6415e7521afa312f01aacffe297c..133dec8549cb9eea6cadb935104064550b1e78dd 100644
--- a/functions_func.html
+++ b/functions_func.html
@@ -111,6 +111,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <li><a href="#index_f"><span>f</span></a></li>
       <li><a href="#index_g"><span>g</span></a></li>
       <li><a href="#index_i"><span>i</span></a></li>
+      <li><a href="#index_n"><span>n</span></a></li>
+      <li><a href="#index_o"><span>o</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
       <li><a href="#index_r"><span>r</span></a></li>
       <li class="current"><a href="#index_s"><span>s</span></a></li>
     </ul>
@@ -266,10 +269,10 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
 : <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a37b5debda58afd1fcb71ec82efe663b9">com.google.flatbuffers.FlatBufferBuilder</a>
 </li>
 <li>CreateSharedString()
-: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a10e8ec7d1c8fbdc21b1c7047bbbe38d9">flatbuffers::FlatBufferBuilder</a>
+: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3">flatbuffers::FlatBufferBuilder</a>
 </li>
 <li>createString()
-: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a8d676eb9973ecba574a220cdef725577">com.google.flatbuffers.FlatBufferBuilder</a>
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abd3b2f9b239a702ffaa8a1e97894f09e">com.google.flatbuffers.FlatBufferBuilder</a>
 </li>
 <li>CreateString()
 : <a class="el" href="class_flat_buffers_1_1_flat_buffer_builder.html#a3b6e42519f278e4a060895633d048070">FlatBuffers.FlatBufferBuilder</a>
@@ -288,7 +291,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
 : <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#acc889115f91460ca89ce981cb02c2039">com.google.flatbuffers.FlatBufferBuilder</a>
 </li>
 <li>CreateVector()
-: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">flatbuffers::FlatBufferBuilder</a>
+: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207">flatbuffers::FlatBufferBuilder</a>
 </li>
 <li>CreateVectorOfNativeStructs()
 : <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53">flatbuffers::FlatBufferBuilder</a>
@@ -306,7 +309,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
 : <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6">flatbuffers::FlatBufferBuilder</a>
 </li>
 <li>CreateVectorOfStructs()
-: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72">flatbuffers::FlatBufferBuilder</a>
+: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7">flatbuffers::FlatBufferBuilder</a>
 </li>
 <li>createVectorOfTables()
 : <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24ea4649f508a7843e429737a4a9fad1">com.google.flatbuffers.FlatBufferBuilder</a>
@@ -350,7 +353,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
 : <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220">flatbuffers::FlatBufferBuilder</a>
 </li>
 <li>FlatBufferBuilder()
-: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#af49427a6a8a6ec24f3c9cf812f30812d">com.google.flatbuffers.FlatBufferBuilder</a>
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a3388cd4dc6e5233283fb4927b71a1c39">com.google.flatbuffers.FlatBufferBuilder</a>
 , <a class="el" href="class_flat_buffers_1_1_flat_buffer_builder.html#ae24f93e3f9672846dd241d585d62c63d">FlatBuffers.FlatBufferBuilder</a>
 , <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4">flatbuffers::FlatBufferBuilder</a>
 </li>
@@ -384,7 +387,53 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
 
 <h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
 <li>init()
-: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0757a4347e9b932f9c0607f79531b023">com.google.flatbuffers.FlatBufferBuilder</a>
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#adf671e70a4d30c85f37393c47a7a7dd1">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>newByteBuffer()
+: <a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html#a0db9a9033d232d584443a433d7576f4a">com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory</a>
+, <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html#aac26ff51a8162b37a072792ec9068644">com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<li>offset()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae3a3fbf645e64ce784a524f935a6e6f2">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>pad()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a4a2e8c6430c6538509147225b8a4697e">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>prep()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a2023123a33f19d670182d5f00ef9aa59">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>putBoolean()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24114cfb1adb89f1e3d72736b06a8df0">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>putByte()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a86b42641d0c600afa11f8c8493f5e6a3">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>putDouble()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a36bc3231cc9f86e6fd2750dcec8b7336">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>putFloat()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e3fae083ea9c9bff3b80cde3f4581bb">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>putInt()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a108d4c3d931b4f2a63a71aeefa562bba">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>putLong()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a083507c3c359c28bb008142e8ad41a7d">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
+<li>putShort()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a5a98de8b6e8fc5df984c435ba3181690">com.google.flatbuffers.FlatBufferBuilder</a>
 </li>
 </ul>
 
@@ -409,6 +458,9 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
 <li>sizedByteArray()
 : <a class="el" href="class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a967e7dc8f051d4e73b3155e3b281d7b4">Google\FlatBuffers\FlatbufferBuilder</a>
 </li>
+<li>sizedInputStream()
+: <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ab8fc86fe501b182b4a1a50fcdbcb3e6b">com.google.flatbuffers.FlatBufferBuilder</a>
+</li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
diff --git a/group__flatbuffers__cpp__api.js b/group__flatbuffers__cpp__api.js
index 66939712ebb735617d5c837b2baa679b13373a60..21ad35cb37f9ba8f086a1d520ec62dc44a814ea0 100644
--- a/group__flatbuffers__cpp__api.js
+++ b/group__flatbuffers__cpp__api.js
@@ -32,6 +32,7 @@ var group__flatbuffers__cpp__api =
       [ "CreateVector", "classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207", null ],
       [ "CreateVector", "classflatbuffers_1_1_flat_buffer_builder.html#a274b1afcfa16bab2c884129b2788db19", null ],
       [ "CreateVector", "classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b", null ],
+      [ "CreateVector", "classflatbuffers_1_1_flat_buffer_builder.html#a53504fc2cab681a7980b03260f8b2f7a", null ],
       [ "CreateVectorOfNativeStructs", "classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53", null ],
       [ "CreateVectorOfNativeStructs", "classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95", null ],
       [ "CreateVectorOfSortedNativeStructs", "classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54", null ],
@@ -43,6 +44,7 @@ var group__flatbuffers__cpp__api =
       [ "CreateVectorOfStrings", "classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6", null ],
       [ "CreateVectorOfStructs", "classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7", null ],
       [ "CreateVectorOfStructs", "classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72", null ],
+      [ "CreateVectorOfStructs", "classflatbuffers_1_1_flat_buffer_builder.html#a9cc09fa59ff9732e972877cfe911c8a5", null ],
       [ "CreateVectorOfStructs", "classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1", null ],
       [ "DedupVtables", "classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961", null ],
       [ "Finish", "classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912", null ],
@@ -62,6 +64,7 @@ var group__flatbuffers__cpp__api =
       [ "finished", "classflatbuffers_1_1_flat_buffer_builder.html#ab2cc618aeb6f6c411c7ab734649e1a81", null ],
       [ "force_defaults_", "classflatbuffers_1_1_flat_buffer_builder.html#a89c2d7c686a2df8014cb453ec70fdccd", null ],
       [ "kFileIdentifierLength", "classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19", null ],
+      [ "max_voffset_", "classflatbuffers_1_1_flat_buffer_builder.html#a5e604e3caf95fd0f0e74545af5a8420a", null ],
       [ "minalign_", "classflatbuffers_1_1_flat_buffer_builder.html#ab9942e76ff29eefc702b006b19ce02ba", null ],
       [ "nested", "classflatbuffers_1_1_flat_buffer_builder.html#add6d502accf426e35f91f2539baff6b2", null ],
       [ "offsetbuf_", "classflatbuffers_1_1_flat_buffer_builder.html#adda5db5eceb1465e9a71ddc012d70839", null ],
diff --git a/group__flatbuffers__java__api.js b/group__flatbuffers__java__api.js
index ecf68c11f7774dea8491aaa1fffa434293f92d3c..3a7bb4e1ec7d3ac8926021863e5d51009abbaa66 100644
--- a/group__flatbuffers__java__api.js
+++ b/group__flatbuffers__java__api.js
@@ -1,8 +1,16 @@
 var group__flatbuffers__java__api =
 [
     [ "FlatBufferBuilder", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html", [
+      [ "ByteBufferFactory", "interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html", [
+        [ "newByteBuffer", "interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html#a0db9a9033d232d584443a433d7576f4a", null ]
+      ] ],
+      [ "HeapByteBufferFactory", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html", [
+        [ "newByteBuffer", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html#aac26ff51a8162b37a072792ec9068644", null ]
+      ] ],
+      [ "FlatBufferBuilder", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aed1e475e75409625c8df85dc3d396e4c", null ],
       [ "FlatBufferBuilder", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#af49427a6a8a6ec24f3c9cf812f30812d", null ],
       [ "FlatBufferBuilder", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac8a8a558ce1d2531447a765636db2387", null ],
+      [ "FlatBufferBuilder", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a3388cd4dc6e5233283fb4927b71a1c39", null ],
       [ "FlatBufferBuilder", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a61ad1938219bcdbe99cc4b668f4c0f99", null ],
       [ "addBoolean", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a53e6356cfef3d6be298efb9a0d67be06", null ],
       [ "addByte", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae019d7ee089c95a37421365d5fb9533b", null ],
@@ -22,8 +30,19 @@ var group__flatbuffers__java__api =
       [ "finish", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aee9ed3214a7b35075773c506e3d95a14", null ],
       [ "finish", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a189de474e0c39d663cc65fa21a63f071", null ],
       [ "forceDefaults", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aaadff3772bfdff756b4f269afae5ac69", null ],
-      [ "init", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0757a4347e9b932f9c0607f79531b023", null ],
+      [ "init", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#adf671e70a4d30c85f37393c47a7a7dd1", null ],
+      [ "offset", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae3a3fbf645e64ce784a524f935a6e6f2", null ],
+      [ "pad", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a4a2e8c6430c6538509147225b8a4697e", null ],
+      [ "prep", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a2023123a33f19d670182d5f00ef9aa59", null ],
+      [ "putBoolean", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24114cfb1adb89f1e3d72736b06a8df0", null ],
+      [ "putByte", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a86b42641d0c600afa11f8c8493f5e6a3", null ],
+      [ "putDouble", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a36bc3231cc9f86e6fd2750dcec8b7336", null ],
+      [ "putFloat", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e3fae083ea9c9bff3b80cde3f4581bb", null ],
+      [ "putInt", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a108d4c3d931b4f2a63a71aeefa562bba", null ],
+      [ "putLong", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a083507c3c359c28bb008142e8ad41a7d", null ],
+      [ "putShort", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a5a98de8b6e8fc5df984c435ba3181690", null ],
       [ "sizedByteArray", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a81a5c2d7ab36e913cc16d9499aabe078", null ],
-      [ "sizedByteArray", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aa636cf5190524c43212b6d96239d7672", null ]
+      [ "sizedByteArray", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aa636cf5190524c43212b6d96239d7672", null ],
+      [ "sizedInputStream", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ab8fc86fe501b182b4a1a50fcdbcb3e6b", null ]
     ] ]
 ];
\ No newline at end of file
diff --git a/hierarchy.html b/hierarchy.html
index 377fb520b3eaa4a8bbf3614adf8cb02a70ceb8f9..ee353f186eb708a3fae43a99c35aa45ca41eddae 100644
--- a/hierarchy.html
+++ b/hierarchy.html
@@ -131,23 +131,25 @@ $(document).ready(function(){initNavTree('hierarchy.html','');});
 <div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
 <tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_allocator.html" target="_self">flatbuffers::Allocator</a></td><td class="desc"></td></tr>
 <tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_default_allocator.html" target="_self">flatbuffers::DefaultAllocator</a></td><td class="desc"></td></tr>
-<tr id="row_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_detached_buffer.html" target="_self">flatbuffers::DetachedBuffer</a></td><td class="desc"></td></tr>
-<tr id="row_2_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html" target="_self">flatbuffers::FlatBufferBuilder::FieldLoc</a></td><td class="desc"></td></tr>
-<tr id="row_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html" target="_self">flatbuffers::FlatBufferBuilder</a></td><td class="desc">Helper class to hold data needed in creation of a FlatBuffer </td></tr>
-<tr id="row_4_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html" target="_self">Google\FlatBuffers\FlatbufferBuilder</a></td><td class="desc"></td></tr>
-<tr id="row_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html" target="_self">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="desc">Class that helps you build a FlatBuffer </td></tr>
-<tr id="row_6_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_flat_buffers_1_1_flat_buffer_builder.html" target="_self">FlatBuffers.FlatBufferBuilder</a></td><td class="desc">Responsible for building up and accessing a FlatBuffer formatted byte array (via ByteBuffer) </td></tr>
-<tr id="row_7_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_indirect_helper.html" target="_self">flatbuffers::IndirectHelper&lt; T &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_8_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html" target="_self">flatbuffers::IndirectHelper&lt; const T * &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_9_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html" target="_self">flatbuffers::IndirectHelper&lt; Offset&lt; T &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_10_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_offset.html" target="_self">flatbuffers::Offset&lt; T &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_11_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html" target="_self">flatbuffers::FlatBufferBuilder::StringOffsetCompare</a></td><td class="desc"></td></tr>
-<tr id="row_12_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_vector.html" target="_self">flatbuffers::Vector&lt; T &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_13_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_13_" class="arrow" onclick="toggleFolder('13_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_vector.html" target="_self">flatbuffers::Vector&lt; char &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_13_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_string.html" target="_self">flatbuffers::String</a></td><td class="desc"></td></tr>
-<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1vector__downward.html" target="_self">flatbuffers::vector_downward</a></td><td class="desc"></td></tr>
-<tr id="row_15_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_vector_iterator.html" target="_self">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_16_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_vector_of_any.html" target="_self">flatbuffers::VectorOfAny</a></td><td class="desc"></td></tr>
+<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html" target="_self">com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory</a></td><td class="desc">An interface that provides a user of the FlatBufferBuilder class the ability to specify the method in which the internal buffer gets allocated </td></tr>
+<tr id="row_1_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html" target="_self">com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory</a></td><td class="desc">An implementation of the ByteBufferFactory interface that is used when one is not provided by the user </td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_detached_buffer.html" target="_self">flatbuffers::DetachedBuffer</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html" target="_self">flatbuffers::FlatBufferBuilder::FieldLoc</a></td><td class="desc"></td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html" target="_self">com.google.flatbuffers.FlatBufferBuilder</a></td><td class="desc">Class that helps you build a FlatBuffer </td></tr>
+<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html" target="_self">flatbuffers::FlatBufferBuilder</a></td><td class="desc">Helper class to hold data needed in creation of a FlatBuffer </td></tr>
+<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html" target="_self">Google\FlatBuffers\FlatbufferBuilder</a></td><td class="desc"></td></tr>
+<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_flat_buffers_1_1_flat_buffer_builder.html" target="_self">FlatBuffers.FlatBufferBuilder</a></td><td class="desc">Responsible for building up and accessing a FlatBuffer formatted byte array (via ByteBuffer) </td></tr>
+<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_indirect_helper.html" target="_self">flatbuffers::IndirectHelper&lt; T &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html" target="_self">flatbuffers::IndirectHelper&lt; const T * &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html" target="_self">flatbuffers::IndirectHelper&lt; Offset&lt; T &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_offset.html" target="_self">flatbuffers::Offset&lt; T &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html" target="_self">flatbuffers::FlatBufferBuilder::StringOffsetCompare</a></td><td class="desc"></td></tr>
+<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_vector.html" target="_self">flatbuffers::Vector&lt; T &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_14_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_14_" class="arrow" onclick="toggleFolder('14_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_vector.html" target="_self">flatbuffers::Vector&lt; char &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_14_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_string.html" target="_self">flatbuffers::String</a></td><td class="desc"></td></tr>
+<tr id="row_15_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1vector__downward.html" target="_self">flatbuffers::vector_downward</a></td><td class="desc"></td></tr>
+<tr id="row_16_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structflatbuffers_1_1_vector_iterator.html" target="_self">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_17_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_vector_of_any.html" target="_self">flatbuffers::VectorOfAny</a></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
diff --git a/hierarchy.js b/hierarchy.js
index c07d52f4ceee8f63385547e9e518b26b3e390ecc..6f9a62a6f78ad291743a3ea0dc8a2e8e726ff36a 100644
--- a/hierarchy.js
+++ b/hierarchy.js
@@ -3,11 +3,14 @@ var hierarchy =
     [ "flatbuffers::Allocator", "classflatbuffers_1_1_allocator.html", [
       [ "flatbuffers::DefaultAllocator", "classflatbuffers_1_1_default_allocator.html", null ]
     ] ],
+    [ "com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory", "interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html", [
+      [ "com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html", null ]
+    ] ],
     [ "flatbuffers::DetachedBuffer", "classflatbuffers_1_1_detached_buffer.html", null ],
     [ "flatbuffers::FlatBufferBuilder::FieldLoc", "structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html", null ],
+    [ "com.google.flatbuffers.FlatBufferBuilder", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html", null ],
     [ "flatbuffers::FlatBufferBuilder", "classflatbuffers_1_1_flat_buffer_builder.html", null ],
     [ "Google\\FlatBuffers\\FlatbufferBuilder", "class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html", null ],
-    [ "com.google.flatbuffers.FlatBufferBuilder", "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html", null ],
     [ "FlatBuffers.FlatBufferBuilder", "class_flat_buffers_1_1_flat_buffer_builder.html", null ],
     [ "flatbuffers::IndirectHelper< T >", "structflatbuffers_1_1_indirect_helper.html", null ],
     [ "flatbuffers::IndirectHelper< const T * >", "structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html", null ],
diff --git a/interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory-members.html b/interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..562aced2bc6d597e198fade36c367f3b827ad16e
--- /dev/null
+++ b/interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory-members.html
@@ -0,0 +1,146 @@
+<!-- HTML header for doxygen 1.8.6-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>FlatBuffers: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,700" rel="stylesheet">
+<link href="style.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="height: 110px;">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="commonprojectlogo">
+    <img alt="Logo" src="fpl_logo_small.png"/>
+  </td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">FlatBuffers
+   </div>
+   <div style="font-size:12px;">
+    An open source project by <a href="https://developers.google.com/games/#Tools">FPL</a>.
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="usergroup0.html"><span>Programmer's&#160;Guide</span></a></li>
+      <li><a href="flatbuffers_support.html"><span>Platform&#160;/&#160;Language&#160;/&#160;Feature&#160;support</span></a></li>
+      <li><a href="flatbuffers_benchmarks.html"><span>Benchmarks</span></a></li>
+      <li><a href="flatbuffers_white_paper.html"><span>FlatBuffers&#160;white&#160;paper</span></a></li>
+      <li><a href="flatbuffers_internals.html"><span>FlatBuffers&#160;internals</span></a></li>
+      <li><a href="flatbuffers_grammar.html"><span>Grammar&#160;of&#160;the&#160;schema&#160;language</span></a></li>
+      <li class="current"><a href="usergroup2.html"><span>API&#160;Reference</span></a></li>
+      <li><a href="contributing.html"><span>Contributing</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="modules.html"><span>APIs</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Class&#160;List</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Properties</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html">com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html#a0db9a9033d232d584443a433d7576f4a">newByteBuffer</a>(int capacity)</td><td class="entry"><a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html">com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- Google Analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+  ga('create', 'UA-49880327-7', 'auto');
+  ga('send', 'pageview');
+</script>
+</body>
+</html>
diff --git a/interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html b/interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html
new file mode 100644
index 0000000000000000000000000000000000000000..109819529ecae90fbd37a3e1bed2f3b7c1f5634b
--- /dev/null
+++ b/interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html
@@ -0,0 +1,199 @@
+<!-- HTML header for doxygen 1.8.6-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<title>FlatBuffers: com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+  $(document).ready(initResizable);
+  $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,700" rel="stylesheet">
+<link href="style.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea" style="height: 110px;">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="commonprojectlogo">
+    <img alt="Logo" src="fpl_logo_small.png"/>
+  </td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">FlatBuffers
+   </div>
+   <div style="font-size:12px;">
+    An open source project by <a href="https://developers.google.com/games/#Tools">FPL</a>.
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.7 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="usergroup0.html"><span>Programmer's&#160;Guide</span></a></li>
+      <li><a href="flatbuffers_support.html"><span>Platform&#160;/&#160;Language&#160;/&#160;Feature&#160;support</span></a></li>
+      <li><a href="flatbuffers_benchmarks.html"><span>Benchmarks</span></a></li>
+      <li><a href="flatbuffers_white_paper.html"><span>FlatBuffers&#160;white&#160;paper</span></a></li>
+      <li><a href="flatbuffers_internals.html"><span>FlatBuffers&#160;internals</span></a></li>
+      <li><a href="flatbuffers_grammar.html"><span>Grammar&#160;of&#160;the&#160;schema&#160;language</span></a></li>
+      <li class="current"><a href="usergroup2.html"><span>API&#160;Reference</span></a></li>
+      <li><a href="contributing.html"><span>Contributing</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="modules.html"><span>APIs</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Class&#160;List</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+  <div id="nav-tree">
+    <div id="nav-tree-contents">
+      <div id="nav-sync" class="sync"></div>
+    </div>
+  </div>
+  <div id="splitbar" style="-moz-user-select:none;" 
+       class="ui-resizable-handle">
+  </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Properties</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>An interface that provides a user of the FlatBufferBuilder class the ability to specify the method in which the internal buffer gets allocated.  
+ <a href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html#details">More...</a></p>
+<div class="dynheader">
+Inheritance diagram for com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.png" usemap="#com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory_map" alt=""/>
+  <map id="com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory_map" name="com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory_map">
+<area href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html" title="An implementation of the ByteBufferFactory interface that is used when one is not provided by the use..." alt="com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory" shape="rect" coords="0,56,376,80"/>
+</map>
+ </div></div>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>An interface that provides a user of the FlatBufferBuilder class the ability to specify the method in which the internal buffer gets allocated. </p>
+<p>This allows for alternatives to the default behavior, which is to allocate memory for a new byte-array backed <code>ByteBuffer</code> array inside the JVM.</p>
+<p>The FlatBufferBuilder class contains the HeapByteBufferFactory class to preserve the default behavior in the event that the user does not provide their own implementation of this interface. </p>
+</div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a0db9a9033d232d584443a433d7576f4a"><td class="memItemLeft" align="right" valign="top">ByteBuffer&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html#a0db9a9033d232d584443a433d7576f4a">newByteBuffer</a> (int capacity)</td></tr>
+<tr class="memdesc:a0db9a9033d232d584443a433d7576f4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a <code>ByteBuffer</code> with a given capacity.  <a href="#a0db9a9033d232d584443a433d7576f4a">More...</a><br /></td></tr>
+<tr class="separator:a0db9a9033d232d584443a433d7576f4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a0db9a9033d232d584443a433d7576f4a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ByteBuffer com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory.newByteBuffer </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>capacity</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a <code>ByteBuffer</code> with a given capacity. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">capacity</td><td>The size of the <code>ByteBuffer</code> to allocate. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Returns the new <code>ByteBuffer</code> that was allocated. </dd></dl>
+
+<p>Implemented in <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html#aac26ff51a8162b37a072792ec9068644">com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li><a class="el" href="_flat_buffer_builder_8java.html">FlatBufferBuilder.java</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- Google Analytics -->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+  ga('create', 'UA-49880327-7', 'auto');
+  ga('send', 'pageview');
+</script>
+</body>
+</html>
diff --git a/interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.js b/interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.js
new file mode 100644
index 0000000000000000000000000000000000000000..08e13542de57b86c8e08ad3da1d493bee5f2b32a
--- /dev/null
+++ b/interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.js
@@ -0,0 +1,4 @@
+var interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory =
+[
+    [ "newByteBuffer", "interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html#a0db9a9033d232d584443a433d7576f4a", null ]
+];
\ No newline at end of file
diff --git a/interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.png b/interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e618b3b086cdd71ae9e5431daa79adb98e80ba8
Binary files /dev/null and b/interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.png differ
diff --git a/navtree.js b/navtree.js
index 91194e64963404566c68a9ce8d53fc3adf372cd0..2197759a9e4ebf94f47a4fef5ef15c46e5e67746 100644
--- a/navtree.js
+++ b/navtree.js
@@ -45,7 +45,7 @@ var NAVTREE =
 var NAVTREEINDEX =
 [
 ".html",
-"group__flatbuffers__javascript__api.html#ga8c5bb4a00c46fb6665787fa9ff52089b"
+"flatbuffers_white_paper.html"
 ];
 
 var SYNCONMSG = 'click to disable panel synchronisation';
diff --git a/navtreeindex0.js b/navtreeindex0.js
index 763f18f03e88cabae8c4a96878048ca366122ed3..ed09fdc5c9e43b349fcc8c7883267868f78f5b5f 100644
--- a/navtreeindex0.js
+++ b/navtreeindex0.js
@@ -2,9 +2,9 @@ var NAVTREEINDEX0 =
 {
 ".html":[7,1,0,0],
 ".html":[7,1,0,0,0],
+".html":[7,1,0,0,0,0],
 ".html":[7,1,0,3],
 ".html":[7,1,0,3,0],
-".html":[7,1,0,0,0,0],
 ".html":[7,1,0,1],
 "annotated.html":[7,1,0],
 "class_flat_buffers_1_1_flat_buffer_builder.html":[7,1,0,2,0],
@@ -51,30 +51,45 @@ var NAVTREEINDEX0 =
 "class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#ac54a8acfac1dda020b610da53b2d9a0f":[7,0,5,0,13],
 "class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#ae7e97c2d21da04ef483e6940d442938f":[7,0,5,0,14],
 "classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html":[7,0,3,0],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0757a4347e9b932f9c0607f79531b023":[7,0,3,0,21],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e1215f334989ecc59b49a3239aed5b5":[7,0,3,0,8],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a189de474e0c39d663cc65fa21a63f071":[7,0,3,0,19],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a1c0ae381bf6adb84b18e613aadf8d4db":[7,0,3,0,7],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24ea4649f508a7843e429737a4a9fad1":[7,0,3,0,16],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a37b5debda58afd1fcb71ec82efe663b9":[7,0,3,0,12],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a3a5dd461dc86a2132eaa4f0348b4c001":[7,0,3,0,11],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a53e6356cfef3d6be298efb9a0d67be06":[7,0,3,0,3],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a55c20e99ba68be516dfbddfddb9efd4d":[7,0,3,0,6],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a61ad1938219bcdbe99cc4b668f4c0f99":[7,0,3,0,2],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a67a9f5dcd251735d6b96e1ad46de9d94":[7,0,3,0,10],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a81a5c2d7ab36e913cc16d9499aabe078":[7,0,3,0,22],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a8d676eb9973ecba574a220cdef725577":[7,0,3,0,14],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aa636cf5190524c43212b6d96239d7672":[7,0,3,0,23],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aaadff3772bfdff756b4f269afae5ac69":[7,0,3,0,20],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abd3b2f9b239a702ffaa8a1e97894f09e":[7,0,3,0,13],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abf0fd34f0d93a9d89f595fddf752feb7":[7,0,3,0,17],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac36c1fc72851b17129fc763da00cff32":[7,0,3,0,5],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac8a8a558ce1d2531447a765636db2387":[7,0,3,0,1],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#acc889115f91460ca89ce981cb02c2039":[7,0,3,0,15],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae019d7ee089c95a37421365d5fb9533b":[7,0,3,0,4],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae817751382089b603753452cc1e56790":[7,0,3,0,9],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aee9ed3214a7b35075773c506e3d95a14":[7,0,3,0,18],
-"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#af49427a6a8a6ec24f3c9cf812f30812d":[7,0,3,0,0],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a083507c3c359c28bb008142e8ad41a7d":[7,0,3,0,34],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e1215f334989ecc59b49a3239aed5b5":[7,0,3,0,12],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e3fae083ea9c9bff3b80cde3f4581bb":[7,0,3,0,32],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a108d4c3d931b4f2a63a71aeefa562bba":[7,0,3,0,33],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a189de474e0c39d663cc65fa21a63f071":[7,0,3,0,23],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a1c0ae381bf6adb84b18e613aadf8d4db":[7,0,3,0,11],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a2023123a33f19d670182d5f00ef9aa59":[7,0,3,0,28],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24114cfb1adb89f1e3d72736b06a8df0":[7,0,3,0,29],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24ea4649f508a7843e429737a4a9fad1":[7,0,3,0,20],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a3388cd4dc6e5233283fb4927b71a1c39":[7,0,3,0,5],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a36bc3231cc9f86e6fd2750dcec8b7336":[7,0,3,0,31],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a37b5debda58afd1fcb71ec82efe663b9":[7,0,3,0,16],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a3a5dd461dc86a2132eaa4f0348b4c001":[7,0,3,0,15],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a4a2e8c6430c6538509147225b8a4697e":[7,0,3,0,27],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a53e6356cfef3d6be298efb9a0d67be06":[7,0,3,0,7],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a55c20e99ba68be516dfbddfddb9efd4d":[7,0,3,0,10],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a5a98de8b6e8fc5df984c435ba3181690":[7,0,3,0,35],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a61ad1938219bcdbe99cc4b668f4c0f99":[7,0,3,0,6],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a67a9f5dcd251735d6b96e1ad46de9d94":[7,0,3,0,14],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a81a5c2d7ab36e913cc16d9499aabe078":[7,0,3,0,36],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a86b42641d0c600afa11f8c8493f5e6a3":[7,0,3,0,30],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a8d676eb9973ecba574a220cdef725577":[7,0,3,0,18],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aa636cf5190524c43212b6d96239d7672":[7,0,3,0,37],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aaadff3772bfdff756b4f269afae5ac69":[7,0,3,0,24],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ab8fc86fe501b182b4a1a50fcdbcb3e6b":[7,0,3,0,38],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abd3b2f9b239a702ffaa8a1e97894f09e":[7,0,3,0,17],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abf0fd34f0d93a9d89f595fddf752feb7":[7,0,3,0,21],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac36c1fc72851b17129fc763da00cff32":[7,0,3,0,9],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac8a8a558ce1d2531447a765636db2387":[7,0,3,0,4],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#acc889115f91460ca89ce981cb02c2039":[7,0,3,0,19],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#adf671e70a4d30c85f37393c47a7a7dd1":[7,0,3,0,25],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae019d7ee089c95a37421365d5fb9533b":[7,0,3,0,8],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae3a3fbf645e64ce784a524f935a6e6f2":[7,0,3,0,26],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae817751382089b603753452cc1e56790":[7,0,3,0,13],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aed1e475e75409625c8df85dc3d396e4c":[7,0,3,0,2],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aee9ed3214a7b35075773c506e3d95a14":[7,0,3,0,22],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#af49427a6a8a6ec24f3c9cf812f30812d":[7,0,3,0,3],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html":[7,0,3,0,1],
+"classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html#aac26ff51a8162b37a072792ec9068644":[7,0,3,0,1,0],
 "classes.html":[7,1,1],
 "classflatbuffers_1_1_allocator.html":[7,1,0,1,0],
 "classflatbuffers_1_1_allocator.html#a96abc6f31fe94e932d7f4daac10388b9":[7,1,0,1,0,0],
@@ -86,81 +101,86 @@ var NAVTREEINDEX0 =
 "classflatbuffers_1_1_default_allocator.html#a69f1e08a9f98cd86d04a0bc5ad08b187":[7,1,0,1,1,1],
 "classflatbuffers_1_1_default_allocator.html#a9ddbc3a812e35a46a36b37baa17503d0":[7,1,0,1,1,0],
 "classflatbuffers_1_1_detached_buffer.html":[7,1,0,1,2],
-"classflatbuffers_1_1_detached_buffer.html#a030d603f1f72c17b515a1e8621a5482c":[7,1,0,1,2,8],
-"classflatbuffers_1_1_detached_buffer.html#a0a33d382b1306177f5b0e5bc8ad4d3fd":[7,1,0,1,2,9],
-"classflatbuffers_1_1_detached_buffer.html#a0f138004d6acacc5aab3ce69bf5a8ebd":[7,1,0,1,2,16],
+"classflatbuffers_1_1_detached_buffer.html#a030d603f1f72c17b515a1e8621a5482c":[7,1,0,1,2,9],
+"classflatbuffers_1_1_detached_buffer.html#a0a33d382b1306177f5b0e5bc8ad4d3fd":[7,1,0,1,2,10],
+"classflatbuffers_1_1_detached_buffer.html#a0f138004d6acacc5aab3ce69bf5a8ebd":[7,1,0,1,2,18],
+"classflatbuffers_1_1_detached_buffer.html#a1fadd8be4586d8a6a0df5e26e90f3f79":[7,1,0,1,2,11],
+"classflatbuffers_1_1_detached_buffer.html#a3a4bb3269ce95d77a8765f43fefe44ab":[7,1,0,1,2,6],
 "classflatbuffers_1_1_detached_buffer.html#a587b562bcee4d600272ae25845e9f197":[7,1,0,1,2,0],
-"classflatbuffers_1_1_detached_buffer.html#a63229682fea7e65b8ecd0678d5d1996b":[7,1,0,1,2,13],
-"classflatbuffers_1_1_detached_buffer.html#a7e6327751066fe086a18b881ec3a07ce":[7,1,0,1,2,12],
-"classflatbuffers_1_1_detached_buffer.html#a9056cfb89cf255efda378a5155c26c2b":[7,1,0,1,2,11],
+"classflatbuffers_1_1_detached_buffer.html#a63229682fea7e65b8ecd0678d5d1996b":[7,1,0,1,2,15],
+"classflatbuffers_1_1_detached_buffer.html#a7e6327751066fe086a18b881ec3a07ce":[7,1,0,1,2,14],
+"classflatbuffers_1_1_detached_buffer.html#a9056cfb89cf255efda378a5155c26c2b":[7,1,0,1,2,13],
 "classflatbuffers_1_1_detached_buffer.html#a9979d17b00f354dce4c7d9a6dca43d4d":[7,1,0,1,2,3],
 "classflatbuffers_1_1_detached_buffer.html#aa4805376aebda238661d5ac1107bac9a":[7,1,0,1,2,4],
-"classflatbuffers_1_1_detached_buffer.html#aaede53d7b7efc586eaeca5688619acf1":[7,1,0,1,2,7],
-"classflatbuffers_1_1_detached_buffer.html#ab3fb53f0c57d06cd5848cfb59fd656f2":[7,1,0,1,2,14],
+"classflatbuffers_1_1_detached_buffer.html#aaede53d7b7efc586eaeca5688619acf1":[7,1,0,1,2,8],
+"classflatbuffers_1_1_detached_buffer.html#ab3fb53f0c57d06cd5848cfb59fd656f2":[7,1,0,1,2,16],
 "classflatbuffers_1_1_detached_buffer.html#abae2caaa17d721325235755e6a4feea0":[7,1,0,1,2,1],
-"classflatbuffers_1_1_detached_buffer.html#ac4c234e815adc9d30f97281546162f5c":[7,1,0,1,2,10],
+"classflatbuffers_1_1_detached_buffer.html#ac4c234e815adc9d30f97281546162f5c":[7,1,0,1,2,12],
 "classflatbuffers_1_1_detached_buffer.html#adad27e36c1df5169d35fde21c6fa6745":[7,1,0,1,2,5],
-"classflatbuffers_1_1_detached_buffer.html#aeabe28bec13ac0fe7465142969d467d7":[7,1,0,1,2,15],
+"classflatbuffers_1_1_detached_buffer.html#aeabe28bec13ac0fe7465142969d467d7":[7,1,0,1,2,17],
 "classflatbuffers_1_1_detached_buffer.html#aebfcd21e5ce5a906684d573e59503556":[7,1,0,1,2,2],
-"classflatbuffers_1_1_detached_buffer.html#aef5440a10f42f2c067f2857dc74fc15b":[7,1,0,1,2,6],
+"classflatbuffers_1_1_detached_buffer.html#aef5440a10f42f2c067f2857dc74fc15b":[7,1,0,1,2,7],
 "classflatbuffers_1_1_flat_buffer_builder.html":[7,0,0,0],
 "classflatbuffers_1_1_flat_buffer_builder.html#a01dabf5cdd6b1b2881337e1e84aa1683":[7,0,0,0,4],
-"classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912":[7,0,0,0,37],
-"classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8":[7,0,0,0,47],
+"classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912":[7,0,0,0,39],
+"classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8":[7,0,0,0,49],
 "classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b":[7,0,0,0,23],
 "classflatbuffers_1_1_flat_buffer_builder.html#a10e8ec7d1c8fbdc21b1c7047bbbe38d9":[7,0,0,0,9],
-"classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95":[7,0,0,0,25],
-"classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a":[7,0,0,0,40],
-"classflatbuffers_1_1_flat_buffer_builder.html#a17c05ea503f311eaf6e56a1be3ac1c49":[7,0,0,0,58],
-"classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6":[7,0,0,0,30],
+"classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95":[7,0,0,0,26],
+"classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a":[7,0,0,0,42],
+"classflatbuffers_1_1_flat_buffer_builder.html#a17c05ea503f311eaf6e56a1be3ac1c49":[7,0,0,0,61],
+"classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6":[7,0,0,0,31],
 "classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50":[7,0,0,0,18],
-"classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54":[7,0,0,0,26],
+"classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54":[7,0,0,0,27],
 "classflatbuffers_1_1_flat_buffer_builder.html#a274b1afcfa16bab2c884129b2788db19":[7,0,0,0,22],
 "classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3":[7,0,0,0,19],
-"classflatbuffers_1_1_flat_buffer_builder.html#a2e4de5642bad6dcd01eb7e7eaf719c89":[7,0,0,0,38],
-"classflatbuffers_1_1_flat_buffer_builder.html#a376bb6858e8b1baab9a437f3f9f0b334":[7,0,0,0,45],
-"classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53":[7,0,0,0,24],
+"classflatbuffers_1_1_flat_buffer_builder.html#a2e4de5642bad6dcd01eb7e7eaf719c89":[7,0,0,0,40],
+"classflatbuffers_1_1_flat_buffer_builder.html#a376bb6858e8b1baab9a437f3f9f0b334":[7,0,0,0,47],
+"classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53":[7,0,0,0,25],
 "classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7":[7,0,0,0,8],
-"classflatbuffers_1_1_flat_buffer_builder.html#a3f4252e9bc005ba6c700469544fdccc9":[7,0,0,0,43],
+"classflatbuffers_1_1_flat_buffer_builder.html#a3f4252e9bc005ba6c700469544fdccc9":[7,0,0,0,45],
 "classflatbuffers_1_1_flat_buffer_builder.html#a43f51ba9c8f4f24ea2247a3979d095b8":[7,0,0,0,16],
 "classflatbuffers_1_1_flat_buffer_builder.html#a44960c5aca0227f960c96a7ed4b881b4":[7,0,0,0,20],
-"classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6":[7,0,0,0,32],
-"classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45":[7,0,0,0,46],
-"classflatbuffers_1_1_flat_buffer_builder.html#a6b31b32fb478a9ec68164e1579c7ebe7":[7,0,0,0,50],
-"classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72":[7,0,0,0,34],
-"classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf":[7,0,0,0,27],
-"classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220":[7,0,0,0,39],
-"classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15":[7,0,0,0,28],
+"classflatbuffers_1_1_flat_buffer_builder.html#a53504fc2cab681a7980b03260f8b2f7a":[7,0,0,0,24],
+"classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6":[7,0,0,0,33],
+"classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45":[7,0,0,0,48],
+"classflatbuffers_1_1_flat_buffer_builder.html#a5e604e3caf95fd0f0e74545af5a8420a":[7,0,0,0,56],
+"classflatbuffers_1_1_flat_buffer_builder.html#a6b31b32fb478a9ec68164e1579c7ebe7":[7,0,0,0,52],
+"classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72":[7,0,0,0,35],
+"classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf":[7,0,0,0,28],
+"classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220":[7,0,0,0,41],
+"classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15":[7,0,0,0,29],
 "classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3":[7,0,0,0,10],
-"classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1":[7,0,0,0,35],
-"classflatbuffers_1_1_flat_buffer_builder.html#a89c2d7c686a2df8014cb453ec70fdccd":[7,0,0,0,52],
+"classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1":[7,0,0,0,37],
+"classflatbuffers_1_1_flat_buffer_builder.html#a89c2d7c686a2df8014cb453ec70fdccd":[7,0,0,0,54],
 "classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f":[7,0,0,0,13],
-"classflatbuffers_1_1_flat_buffer_builder.html#a8dc35f792179df4ca850492c1796d8b8":[7,0,0,0,42],
+"classflatbuffers_1_1_flat_buffer_builder.html#a8dc35f792179df4ca850492c1796d8b8":[7,0,0,0,44],
 "classflatbuffers_1_1_flat_buffer_builder.html#a9190cb2d5a4324ab0c52263b834fff09":[7,0,0,0,2],
-"classflatbuffers_1_1_flat_buffer_builder.html#a952495120d5c56d600640091334b5341":[7,0,0,0,48],
-"classflatbuffers_1_1_flat_buffer_builder.html#a9a3886be63710d8bb88f2ade4ac8420d":[7,0,0,0,49],
-"classflatbuffers_1_1_flat_buffer_builder.html#aa1ebce1f3f46832946a95952af1e9c2b":[7,0,0,0,41],
-"classflatbuffers_1_1_flat_buffer_builder.html#aa7e64b654cef62869c3dfd27def92e5d":[7,0,0,0,57],
-"classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961":[7,0,0,0,36],
+"classflatbuffers_1_1_flat_buffer_builder.html#a952495120d5c56d600640091334b5341":[7,0,0,0,50],
+"classflatbuffers_1_1_flat_buffer_builder.html#a9a3886be63710d8bb88f2ade4ac8420d":[7,0,0,0,51],
+"classflatbuffers_1_1_flat_buffer_builder.html#a9cc09fa59ff9732e972877cfe911c8a5":[7,0,0,0,36],
+"classflatbuffers_1_1_flat_buffer_builder.html#aa1ebce1f3f46832946a95952af1e9c2b":[7,0,0,0,43],
+"classflatbuffers_1_1_flat_buffer_builder.html#aa7e64b654cef62869c3dfd27def92e5d":[7,0,0,0,60],
+"classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961":[7,0,0,0,38],
 "classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5":[7,0,0,0,12],
-"classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf":[7,0,0,0,29],
-"classflatbuffers_1_1_flat_buffer_builder.html#ab2cc618aeb6f6c411c7ab734649e1a81":[7,0,0,0,51],
+"classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf":[7,0,0,0,30],
+"classflatbuffers_1_1_flat_buffer_builder.html#ab2cc618aeb6f6c411c7ab734649e1a81":[7,0,0,0,53],
 "classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1":[7,0,0,0,7],
 "classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685":[7,0,0,0,15],
-"classflatbuffers_1_1_flat_buffer_builder.html#ab9942e76ff29eefc702b006b19ce02ba":[7,0,0,0,54],
+"classflatbuffers_1_1_flat_buffer_builder.html#ab9942e76ff29eefc702b006b19ce02ba":[7,0,0,0,57],
 "classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506":[7,0,0,0,14],
-"classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63":[7,0,0,0,44],
+"classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63":[7,0,0,0,46],
 "classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c":[7,0,0,0,17],
-"classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135":[7,0,0,0,31],
+"classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135":[7,0,0,0,32],
 "classflatbuffers_1_1_flat_buffer_builder.html#ace4606286a25d3fedfb1532934d4cea1":[7,0,0,0,5],
-"classflatbuffers_1_1_flat_buffer_builder.html#add6d502accf426e35f91f2539baff6b2":[7,0,0,0,55],
-"classflatbuffers_1_1_flat_buffer_builder.html#adda5db5eceb1465e9a71ddc012d70839":[7,0,0,0,56],
+"classflatbuffers_1_1_flat_buffer_builder.html#add6d502accf426e35f91f2539baff6b2":[7,0,0,0,58],
+"classflatbuffers_1_1_flat_buffer_builder.html#adda5db5eceb1465e9a71ddc012d70839":[7,0,0,0,59],
 "classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4":[7,0,0,0,3],
 "classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412":[7,0,0,0,6],
 "classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe":[7,0,0,0,11],
 "classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207":[7,0,0,0,21],
-"classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19":[7,0,0,0,53],
-"classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7":[7,0,0,0,33],
+"classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19":[7,0,0,0,55],
+"classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7":[7,0,0,0,34],
 "classflatbuffers_1_1_vector.html":[7,1,0,1,9],
 "classflatbuffers_1_1_vector.html#a06d6b1b963b1d738d74afb1cd7ed973c":[7,1,0,1,9,13],
 "classflatbuffers_1_1_vector.html#a0ab8113b331fb069dbaa0a108f6077e1":[7,1,0,1,9,8],
@@ -229,25 +249,5 @@ var NAVTREEINDEX0 =
 "flatbuffers_guide_using_schema_compiler.html":[1,2],
 "flatbuffers_guide_writing_schema.html":[1,3],
 "flatbuffers_internals.html":[5],
-"flatbuffers_support.html":[2],
-"flatbuffers_white_paper.html":[4],
-"flexbuffers.html":[1,11],
-"functions.html":[7,1,3,0],
-"functions_func.html":[7,1,3,1],
-"functions_prop.html":[7,1,3,3],
-"functions_vars.html":[7,1,3,2],
-"group__flatbuffers__cpp__api.html":[7,0,0],
-"group__flatbuffers__csharp__api.html":[7,0,1],
-"group__flatbuffers__go__api.html":[7,0,2],
-"group__flatbuffers__java__api.html":[7,0,3],
-"group__flatbuffers__javascript__api.html":[7,0,4],
-"group__flatbuffers__javascript__api.html#ga0d1738111b83dffb2c2a7fc8bca19b33":[7,0,4,13],
-"group__flatbuffers__javascript__api.html#ga17a48cc241b10348fd6751ed3a973e2d":[7,0,4,4],
-"group__flatbuffers__javascript__api.html#ga1c36e9d7e294c61d1d6ab0923ea91e8e":[7,0,4,0],
-"group__flatbuffers__javascript__api.html#ga21ba7dd4c33dafd6abb89568e4d9c8b8":[7,0,4,6],
-"group__flatbuffers__javascript__api.html#ga53af3baf50f96de783c06a35934d63bf":[7,0,4,1],
-"group__flatbuffers__javascript__api.html#ga62c5cf622a7bbcfd49f21bddd8b9bef7":[7,0,4,12],
-"group__flatbuffers__javascript__api.html#ga674814e0816f06c8a29ab364d19bed60":[7,0,4,11],
-"group__flatbuffers__javascript__api.html#ga7963cbb1ae0a8589b183f9b26fb25b45":[7,0,4,5],
-"group__flatbuffers__javascript__api.html#ga8260b8431cb8b1c32b5997646cb102a9":[7,0,4,2]
+"flatbuffers_support.html":[2]
 };
diff --git a/navtreeindex1.js b/navtreeindex1.js
index 5bf346a43e4183f6e7ce5659c653a31f117cc630..5b4f2e8e0d6e1e452ae576cd0dcd21f8425f9b36 100644
--- a/navtreeindex1.js
+++ b/navtreeindex1.js
@@ -1,5 +1,25 @@
 var NAVTREEINDEX1 =
 {
+"flatbuffers_white_paper.html":[4],
+"flexbuffers.html":[1,11],
+"functions.html":[7,1,3,0],
+"functions_func.html":[7,1,3,1],
+"functions_prop.html":[7,1,3,3],
+"functions_vars.html":[7,1,3,2],
+"group__flatbuffers__cpp__api.html":[7,0,0],
+"group__flatbuffers__csharp__api.html":[7,0,1],
+"group__flatbuffers__go__api.html":[7,0,2],
+"group__flatbuffers__java__api.html":[7,0,3],
+"group__flatbuffers__javascript__api.html":[7,0,4],
+"group__flatbuffers__javascript__api.html#ga0d1738111b83dffb2c2a7fc8bca19b33":[7,0,4,13],
+"group__flatbuffers__javascript__api.html#ga17a48cc241b10348fd6751ed3a973e2d":[7,0,4,4],
+"group__flatbuffers__javascript__api.html#ga1c36e9d7e294c61d1d6ab0923ea91e8e":[7,0,4,0],
+"group__flatbuffers__javascript__api.html#ga21ba7dd4c33dafd6abb89568e4d9c8b8":[7,0,4,6],
+"group__flatbuffers__javascript__api.html#ga53af3baf50f96de783c06a35934d63bf":[7,0,4,1],
+"group__flatbuffers__javascript__api.html#ga62c5cf622a7bbcfd49f21bddd8b9bef7":[7,0,4,12],
+"group__flatbuffers__javascript__api.html#ga674814e0816f06c8a29ab364d19bed60":[7,0,4,11],
+"group__flatbuffers__javascript__api.html#ga7963cbb1ae0a8589b183f9b26fb25b45":[7,0,4,5],
+"group__flatbuffers__javascript__api.html#ga8260b8431cb8b1c32b5997646cb102a9":[7,0,4,2],
 "group__flatbuffers__javascript__api.html#ga8c5bb4a00c46fb6665787fa9ff52089b":[7,0,4,9],
 "group__flatbuffers__javascript__api.html#ga997af48d5c8f757fcb962168d67e33fb":[7,0,4,7],
 "group__flatbuffers__javascript__api.html#gaa7a7bd67cb1c3190792d4b2b3e66376f":[7,0,4,10],
@@ -10,6 +30,8 @@ var NAVTREEINDEX1 =
 "hierarchy.html":[7,1,2],
 "index.html":[],
 "index.html#flatbuffers_overview":[0],
+"interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html":[7,0,3,0,0],
+"interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html#a0db9a9033d232d584443a433d7576f4a":[7,0,3,0,0,0],
 "modules.html":[7,0],
 "namespace_flat_buffers.html":[7,1,0,2],
 "pages.html":[],
diff --git a/search/all_10.js b/search/all_10.js
index 54de4eed2371bd8f085012b169a87d6c24df2833..17fea3b11d7b503eb2778632f352ea5b43e44f5b 100644
--- a/search/all_10.js
+++ b/search/all_10.js
@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['tutorial',['Tutorial',['../flatbuffers_guide_tutorial.html',1,'']]]
+  ['release',['Release',['../classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45',1,'flatbuffers::FlatBufferBuilder']]],
+  ['releasebufferpointer',['ReleaseBufferPointer',['../classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8',1,'flatbuffers::FlatBufferBuilder']]]
 ];
diff --git a/search/all_11.js b/search/all_11.js
index 9c2265086da636eb7b58254ec179cd9781f83382..114993b1cc336fe8446545e6f1b7cc23b9fb975d 100644
--- a/search/all_11.js
+++ b/search/all_11.js
@@ -1,12 +1,7 @@
 var searchData=
 [
-  ['use_20in_20c_2b_2b',['Use in C++',['../flatbuffers_grpc_guide_use_cpp.html',1,'']]],
-  ['use_20in_20c',['Use in C',['../flatbuffers_guide_use_c.html',1,'']]],
-  ['use_20in_20c_2b_2b',['Use in C++',['../flatbuffers_guide_use_cpp.html',1,'']]],
-  ['use_20in_20go',['Use in Go',['../flatbuffers_guide_use_go.html',1,'']]],
-  ['use_20in_20java_2fc_23',['Use in Java/C#',['../flatbuffers_guide_use_java_c-sharp.html',1,'']]],
-  ['use_20in_20javascript',['Use in JavaScript',['../flatbuffers_guide_use_javascript.html',1,'']]],
-  ['use_20in_20php',['Use in PHP',['../flatbuffers_guide_use_php.html',1,'']]],
-  ['use_20in_20python',['Use in Python',['../flatbuffers_guide_use_python.html',1,'']]],
-  ['using_20the_20schema_20compiler',['Using the schema compiler',['../flatbuffers_guide_using_schema_compiler.html',1,'']]]
+  ['sizedbytearray',['sizedByteArray',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a81a5c2d7ab36e913cc16d9499aabe078',1,'com.google.flatbuffers.FlatBufferBuilder.sizedByteArray(int start, int length)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aa636cf5190524c43212b6d96239d7672',1,'com.google.flatbuffers.FlatBufferBuilder.sizedByteArray()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a967e7dc8f051d4e73b3155e3b281d7b4',1,'Google\FlatBuffers\FlatbufferBuilder\sizedByteArray()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#abfd2f4e19cf51f62290a0272683f23b2',1,'FlatBuffers.FlatBufferBuilder.SizedByteArray()']]],
+  ['sizedinputstream',['sizedInputStream',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ab8fc86fe501b182b4a1a50fcdbcb3e6b',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['string',['String',['../structflatbuffers_1_1_string.html',1,'flatbuffers']]],
+  ['stringoffsetcompare',['StringOffsetCompare',['../structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html',1,'flatbuffers::FlatBufferBuilder']]]
 ];
diff --git a/search/all_12.js b/search/all_12.js
index dc590db5ad4279592391cf7e72d11329c7de1644..54de4eed2371bd8f085012b169a87d6c24df2833 100644
--- a/search/all_12.js
+++ b/search/all_12.js
@@ -1,8 +1,4 @@
 var searchData=
 [
-  ['vector',['Vector',['../classflatbuffers_1_1_vector.html',1,'flatbuffers']]],
-  ['vector_3c_20char_20_3e',['Vector&lt; char &gt;',['../classflatbuffers_1_1_vector.html',1,'flatbuffers']]],
-  ['vector_5fdownward',['vector_downward',['../classflatbuffers_1_1vector__downward.html',1,'flatbuffers']]],
-  ['vectoriterator',['VectorIterator',['../structflatbuffers_1_1_vector_iterator.html',1,'flatbuffers']]],
-  ['vectorofany',['VectorOfAny',['../classflatbuffers_1_1_vector_of_any.html',1,'flatbuffers']]]
+  ['tutorial',['Tutorial',['../flatbuffers_guide_tutorial.html',1,'']]]
 ];
diff --git a/search/all_13.js b/search/all_13.js
index a86f934aa99ffd075974f9b75723190e22f2ae58..9c2265086da636eb7b58254ec179cd9781f83382 100644
--- a/search/all_13.js
+++ b/search/all_13.js
@@ -1,4 +1,12 @@
 var searchData=
 [
-  ['writing_20a_20schema',['Writing a schema',['../flatbuffers_guide_writing_schema.html',1,'']]]
+  ['use_20in_20c_2b_2b',['Use in C++',['../flatbuffers_grpc_guide_use_cpp.html',1,'']]],
+  ['use_20in_20c',['Use in C',['../flatbuffers_guide_use_c.html',1,'']]],
+  ['use_20in_20c_2b_2b',['Use in C++',['../flatbuffers_guide_use_cpp.html',1,'']]],
+  ['use_20in_20go',['Use in Go',['../flatbuffers_guide_use_go.html',1,'']]],
+  ['use_20in_20java_2fc_23',['Use in Java/C#',['../flatbuffers_guide_use_java_c-sharp.html',1,'']]],
+  ['use_20in_20javascript',['Use in JavaScript',['../flatbuffers_guide_use_javascript.html',1,'']]],
+  ['use_20in_20php',['Use in PHP',['../flatbuffers_guide_use_php.html',1,'']]],
+  ['use_20in_20python',['Use in Python',['../flatbuffers_guide_use_python.html',1,'']]],
+  ['using_20the_20schema_20compiler',['Using the schema compiler',['../flatbuffers_guide_using_schema_compiler.html',1,'']]]
 ];
diff --git a/search/all_14.html b/search/all_14.html
new file mode 100644
index 0000000000000000000000000000000000000000..e274eb35b0cffe7ab42a821712a230793ebcf302
--- /dev/null
+++ b/search/all_14.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_14.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/search/all_14.js b/search/all_14.js
new file mode 100644
index 0000000000000000000000000000000000000000..dc590db5ad4279592391cf7e72d11329c7de1644
--- /dev/null
+++ b/search/all_14.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+  ['vector',['Vector',['../classflatbuffers_1_1_vector.html',1,'flatbuffers']]],
+  ['vector_3c_20char_20_3e',['Vector&lt; char &gt;',['../classflatbuffers_1_1_vector.html',1,'flatbuffers']]],
+  ['vector_5fdownward',['vector_downward',['../classflatbuffers_1_1vector__downward.html',1,'flatbuffers']]],
+  ['vectoriterator',['VectorIterator',['../structflatbuffers_1_1_vector_iterator.html',1,'flatbuffers']]],
+  ['vectorofany',['VectorOfAny',['../classflatbuffers_1_1_vector_of_any.html',1,'flatbuffers']]]
+];
diff --git a/search/all_15.html b/search/all_15.html
new file mode 100644
index 0000000000000000000000000000000000000000..c47ded236ce30c135634b6741b29fac1791e1f8c
--- /dev/null
+++ b/search/all_15.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_15.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/search/all_15.js b/search/all_15.js
new file mode 100644
index 0000000000000000000000000000000000000000..a86f934aa99ffd075974f9b75723190e22f2ae58
--- /dev/null
+++ b/search/all_15.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['writing_20a_20schema',['Writing a schema',['../flatbuffers_guide_writing_schema.html',1,'']]]
+];
diff --git a/search/all_2.js b/search/all_2.js
index 6a9f0a558a1179557742c8b3c5f3ac9f212e0a29..d7491a820a4e56af7d3bf93c6137ca544a863e6b 100644
--- a/search/all_2.js
+++ b/search/all_2.js
@@ -3,17 +3,17 @@ var searchData=
   ['addbool',['addBool',['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a723a1053d3a17d5433c37bdbd015844e',1,'Google\FlatBuffers\FlatbufferBuilder\addBool()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a6b66d785555d19cd0f141978eff78e2e',1,'FlatBuffers.FlatBufferBuilder.AddBool()']]],
   ['addboolean',['addBoolean',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a53e6356cfef3d6be298efb9a0d67be06',1,'com::google::flatbuffers::FlatBufferBuilder']]],
   ['addbyte',['AddByte',['../class_flat_buffers_1_1_flat_buffer_builder.html#ac11b10888152d4f687e8ce4d60022254',1,'FlatBuffers.FlatBufferBuilder.AddByte()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae019d7ee089c95a37421365d5fb9533b',1,'com.google.flatbuffers.FlatBufferBuilder.addByte()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a7b78098530190cb90d315419fb1d21fc',1,'Google\FlatBuffers\FlatbufferBuilder\addByte()']]],
-  ['adddouble',['AddDouble',['../class_flat_buffers_1_1_flat_buffer_builder.html#aef6feaf282148043e6a1c9c1ba9e2094',1,'FlatBuffers.FlatBufferBuilder.AddDouble()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac36c1fc72851b17129fc763da00cff32',1,'com.google.flatbuffers.FlatBufferBuilder.addDouble()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a23a5478774e8909117d31b62dde51e86',1,'Google\FlatBuffers\FlatbufferBuilder\addDouble()']]],
-  ['addfloat',['AddFloat',['../class_flat_buffers_1_1_flat_buffer_builder.html#a41a1e6f7e7b9098a9d8c1af7157ef2bf',1,'FlatBuffers.FlatBufferBuilder.AddFloat()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a55c20e99ba68be516dfbddfddb9efd4d',1,'com.google.flatbuffers.FlatBufferBuilder.addFloat()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a5ce6215b65e222b8ee22d3eb4436e404',1,'Google\FlatBuffers\FlatbufferBuilder\addFloat()']]],
+  ['adddouble',['addDouble',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac36c1fc72851b17129fc763da00cff32',1,'com.google.flatbuffers.FlatBufferBuilder.addDouble()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a23a5478774e8909117d31b62dde51e86',1,'Google\FlatBuffers\FlatbufferBuilder\addDouble()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#aef6feaf282148043e6a1c9c1ba9e2094',1,'FlatBuffers.FlatBufferBuilder.AddDouble()']]],
+  ['addfloat',['addFloat',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a55c20e99ba68be516dfbddfddb9efd4d',1,'com.google.flatbuffers.FlatBufferBuilder.addFloat()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a5ce6215b65e222b8ee22d3eb4436e404',1,'Google\FlatBuffers\FlatbufferBuilder\addFloat()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a41a1e6f7e7b9098a9d8c1af7157ef2bf',1,'FlatBuffers.FlatBufferBuilder.AddFloat()']]],
   ['addfloat32',['addFloat32',['../group__flatbuffers__javascript__api.html#ga1c36e9d7e294c61d1d6ab0923ea91e8e',1,'flatbuffers.js']]],
   ['addfloat64',['addFloat64',['../group__flatbuffers__javascript__api.html#ga53af3baf50f96de783c06a35934d63bf',1,'flatbuffers.js']]],
-  ['addint',['AddInt',['../class_flat_buffers_1_1_flat_buffer_builder.html#a7970bfc069caeee5dfd994e6c1106ab9',1,'FlatBuffers.FlatBufferBuilder.AddInt()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a1c0ae381bf6adb84b18e613aadf8d4db',1,'com.google.flatbuffers.FlatBufferBuilder.addInt()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a63c9d66329dff15855d11c89134599e0',1,'Google\FlatBuffers\FlatbufferBuilder\addInt()']]],
+  ['addint',['addInt',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a1c0ae381bf6adb84b18e613aadf8d4db',1,'com.google.flatbuffers.FlatBufferBuilder.addInt()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a63c9d66329dff15855d11c89134599e0',1,'Google\FlatBuffers\FlatbufferBuilder\addInt()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a7970bfc069caeee5dfd994e6c1106ab9',1,'FlatBuffers.FlatBufferBuilder.AddInt()']]],
   ['addint16',['addInt16',['../group__flatbuffers__javascript__api.html#ga8260b8431cb8b1c32b5997646cb102a9',1,'flatbuffers.js']]],
   ['addint32',['addInt32',['../group__flatbuffers__javascript__api.html#gaba2edd0e1e53d1c2815bb1a6ee54abf5',1,'flatbuffers.js']]],
   ['addint64',['addInt64',['../group__flatbuffers__javascript__api.html#ga17a48cc241b10348fd6751ed3a973e2d',1,'flatbuffers.js']]],
   ['addint8',['addInt8',['../group__flatbuffers__javascript__api.html#ga7963cbb1ae0a8589b183f9b26fb25b45',1,'flatbuffers.js']]],
-  ['addlong',['AddLong',['../class_flat_buffers_1_1_flat_buffer_builder.html#a0d182e151b4f57d47069885cc1d05893',1,'FlatBuffers.FlatBufferBuilder.AddLong()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e1215f334989ecc59b49a3239aed5b5',1,'com.google.flatbuffers.FlatBufferBuilder.addLong()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a8875bff7ef67af16938cabe719ceac70',1,'Google\FlatBuffers\FlatbufferBuilder\addLong()']]],
-  ['addoffset',['AddOffset',['../class_flat_buffers_1_1_flat_buffer_builder.html#ae1d6d927d400c330cae48951eae546e5',1,'FlatBuffers.FlatBufferBuilder.AddOffset()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae817751382089b603753452cc1e56790',1,'com.google.flatbuffers.FlatBufferBuilder.addOffset()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a127fe515651f4b4347ea8e01b3951934',1,'Google\FlatBuffers\FlatbufferBuilder\addOffset()'],['../group__flatbuffers__javascript__api.html#ga21ba7dd4c33dafd6abb89568e4d9c8b8',1,'addOffset():&#160;flatbuffers.js']]],
+  ['addlong',['addLong',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e1215f334989ecc59b49a3239aed5b5',1,'com.google.flatbuffers.FlatBufferBuilder.addLong()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a8875bff7ef67af16938cabe719ceac70',1,'Google\FlatBuffers\FlatbufferBuilder\addLong()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a0d182e151b4f57d47069885cc1d05893',1,'FlatBuffers.FlatBufferBuilder.AddLong()']]],
+  ['addoffset',['addOffset',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae817751382089b603753452cc1e56790',1,'com.google.flatbuffers.FlatBufferBuilder.addOffset()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a127fe515651f4b4347ea8e01b3951934',1,'Google\FlatBuffers\FlatbufferBuilder\addOffset()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#ae1d6d927d400c330cae48951eae546e5',1,'FlatBuffers.FlatBufferBuilder.AddOffset()'],['../group__flatbuffers__javascript__api.html#ga21ba7dd4c33dafd6abb89568e4d9c8b8',1,'addOffset():&#160;flatbuffers.js']]],
   ['addsbyte',['addSbyte',['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a6add2b19644657fbe0925cb0238618c6',1,'Google\FlatBuffers\FlatbufferBuilder\addSbyte()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a0b2addc87bde29213424a187b7b08707',1,'FlatBuffers.FlatBufferBuilder.AddSbyte()']]],
   ['addshort',['AddShort',['../class_flat_buffers_1_1_flat_buffer_builder.html#a93b38c262a248e625ea3719dddf903eb',1,'FlatBuffers.FlatBufferBuilder.AddShort()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a67a9f5dcd251735d6b96e1ad46de9d94',1,'com.google.flatbuffers.FlatBufferBuilder.addShort()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a1e11aa1f080749100de6e153e88f9dd5',1,'Google\FlatBuffers\FlatbufferBuilder\addShort()']]],
   ['adduint',['addUint',['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a6f4a37444fca01dcbd0922d18cf2be5c',1,'Google\FlatBuffers\FlatbufferBuilder\addUint()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#aef3581dee532ab763b99947ca43ddcfa',1,'FlatBuffers.FlatBufferBuilder.AddUint()']]],
diff --git a/search/all_3.js b/search/all_3.js
index 7f78fc6975f3059093cd86840b0a007abddeda07..f307af068f50b5a9c18fba2e53e182dfceed3b71 100644
--- a/search/all_3.js
+++ b/search/all_3.js
@@ -1,6 +1,6 @@
 var searchData=
 [
   ['builder',['Builder',['../group__flatbuffers__javascript__api.html#gabd00b65bbe9e9fbac55fe4982eb6cec8',1,'flatbuffers.js']]],
-  ['benchmarks',['Benchmarks',['../flatbuffers_benchmarks.html',1,'']]],
+  ['bytebufferfactory',['ByteBufferFactory',['../interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html',1,'com::google::flatbuffers::FlatBufferBuilder']]],
   ['building',['Building',['../flatbuffers_guide_building.html',1,'']]]
 ];
diff --git a/search/all_4.js b/search/all_4.js
index 89dd9f10e69cd14ac87c2186f7c169be554f489d..0c3cbec75f0550ea3e1a487dae0d0c029273ed10 100644
--- a/search/all_4.js
+++ b/search/all_4.js
@@ -5,19 +5,20 @@ var searchData=
   ['createbytevector',['createByteVector',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a37b5debda58afd1fcb71ec82efe663b9',1,'com::google::flatbuffers::FlatBufferBuilder']]],
   ['createlong',['createLong',['../group__flatbuffers__javascript__api.html#ga8c5bb4a00c46fb6665787fa9ff52089b',1,'flatbuffers.js']]],
   ['createsharedstring',['CreateSharedString',['../classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1',1,'flatbuffers::FlatBufferBuilder::CreateSharedString(const char *str, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7',1,'flatbuffers::FlatBufferBuilder::CreateSharedString(const char *str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a10e8ec7d1c8fbdc21b1c7047bbbe38d9',1,'flatbuffers::FlatBufferBuilder::CreateSharedString(const std::string &amp;str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3',1,'flatbuffers::FlatBufferBuilder::CreateSharedString(const String *str)']]],
-  ['createstring',['CreateString',['../class_flat_buffers_1_1_flat_buffer_builder.html#a3b6e42519f278e4a060895633d048070',1,'FlatBuffers.FlatBufferBuilder.CreateString()'],['../classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe',1,'flatbuffers::FlatBufferBuilder::CreateString(const char *str, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5',1,'flatbuffers::FlatBufferBuilder::CreateString(const char *str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f',1,'flatbuffers::FlatBufferBuilder::CreateString(const std::string &amp;str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506',1,'flatbuffers::FlatBufferBuilder::CreateString(const String *str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685',1,'flatbuffers::FlatBufferBuilder::CreateString(const T &amp;str)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abd3b2f9b239a702ffaa8a1e97894f09e',1,'com.google.flatbuffers.FlatBufferBuilder.createString(CharSequence s)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a8d676eb9973ecba574a220cdef725577',1,'com.google.flatbuffers.FlatBufferBuilder.createString(ByteBuffer s)'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#ac54a8acfac1dda020b610da53b2d9a0f',1,'Google\FlatBuffers\FlatbufferBuilder\createString()'],['../group__flatbuffers__javascript__api.html#gaa7a7bd67cb1c3190792d4b2b3e66376f',1,'createString():&#160;flatbuffers.js']]],
+  ['createstring',['createString',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abd3b2f9b239a702ffaa8a1e97894f09e',1,'com.google.flatbuffers.FlatBufferBuilder.createString(CharSequence s)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a8d676eb9973ecba574a220cdef725577',1,'com.google.flatbuffers.FlatBufferBuilder.createString(ByteBuffer s)'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#ac54a8acfac1dda020b610da53b2d9a0f',1,'Google\FlatBuffers\FlatbufferBuilder\createString()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a3b6e42519f278e4a060895633d048070',1,'FlatBuffers.FlatBufferBuilder.CreateString()'],['../classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe',1,'flatbuffers::FlatBufferBuilder::CreateString(const char *str, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5',1,'flatbuffers::FlatBufferBuilder::CreateString(const char *str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f',1,'flatbuffers::FlatBufferBuilder::CreateString(const std::string &amp;str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506',1,'flatbuffers::FlatBufferBuilder::CreateString(const String *str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685',1,'flatbuffers::FlatBufferBuilder::CreateString(const T &amp;str)'],['../group__flatbuffers__javascript__api.html#gaa7a7bd67cb1c3190792d4b2b3e66376f',1,'createString():&#160;flatbuffers.js']]],
   ['createstruct',['CreateStruct',['../classflatbuffers_1_1_flat_buffer_builder.html#a43f51ba9c8f4f24ea2247a3979d095b8',1,'flatbuffers::FlatBufferBuilder']]],
   ['createuninitializedvector',['CreateUninitializedVector',['../classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c',1,'flatbuffers::FlatBufferBuilder::CreateUninitializedVector(size_t len, size_t elemsize, uint8_t **buf)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50',1,'flatbuffers::FlatBufferBuilder::CreateUninitializedVector(size_t len, T **buf)']]],
   ['createunintializedvector',['createUnintializedVector',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#acc889115f91460ca89ce981cb02c2039',1,'com::google::flatbuffers::FlatBufferBuilder']]],
-  ['createvector',['CreateVector',['../classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3',1,'flatbuffers::FlatBufferBuilder::CreateVector(const T *v, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207',1,'flatbuffers::FlatBufferBuilder::CreateVector(const std::vector&lt; T &gt; &amp;v)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b',1,'flatbuffers::FlatBufferBuilder::CreateVector(size_t vector_size, const std::function&lt; T(size_t i)&gt; &amp;f)']]],
+  ['createvector',['CreateVector',['../classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3',1,'flatbuffers::FlatBufferBuilder::CreateVector(const T *v, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207',1,'flatbuffers::FlatBufferBuilder::CreateVector(const std::vector&lt; T &gt; &amp;v)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b',1,'flatbuffers::FlatBufferBuilder::CreateVector(size_t vector_size, const std::function&lt; T(size_t i)&gt; &amp;f)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a53504fc2cab681a7980b03260f8b2f7a',1,'flatbuffers::FlatBufferBuilder::CreateVector(size_t vector_size, F f, S *state)']]],
   ['createvectorofnativestructs',['CreateVectorOfNativeStructs',['../classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfNativeStructs(const S *v, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfNativeStructs(const std::vector&lt; S &gt; &amp;v)']]],
   ['createvectorofsortednativestructs',['CreateVectorOfSortedNativeStructs',['../classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfSortedNativeStructs(std::vector&lt; S &gt; *v)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfSortedNativeStructs(S *v, size_t len)']]],
   ['createvectorofsortedstructs',['CreateVectorOfSortedStructs',['../classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfSortedStructs(std::vector&lt; T &gt; *v)'],['../classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfSortedStructs(T *v, size_t len)']]],
   ['createvectorofsortedtables',['CreateVectorOfSortedTables',['../classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfSortedTables(Offset&lt; T &gt; *v, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfSortedTables(std::vector&lt; Offset&lt; T &gt;&gt; *v)']]],
   ['createvectorofstrings',['CreateVectorOfStrings',['../classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6',1,'flatbuffers::FlatBufferBuilder']]],
-  ['createvectorofstructs',['CreateVectorOfStructs',['../classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfStructs(const T *v, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfStructs(size_t vector_size, const std::function&lt; void(size_t i, T *)&gt; &amp;filler)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfStructs(const std::vector&lt; T &gt; &amp;v)']]],
+  ['createvectorofstructs',['CreateVectorOfStructs',['../classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfStructs(const T *v, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfStructs(size_t vector_size, const std::function&lt; void(size_t i, T *)&gt; &amp;filler)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a9cc09fa59ff9732e972877cfe911c8a5',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfStructs(size_t vector_size, F f, S *state)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfStructs(const std::vector&lt; T &gt; &amp;v)']]],
   ['createvectoroftables',['createVectorOfTables',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24ea4649f508a7843e429737a4a9fad1',1,'com::google::flatbuffers::FlatBufferBuilder']]],
   ['createvectoroftables_3c_20t_20_3e',['CreateVectorOfTables&lt; T &gt;',['../class_flat_buffers_1_1_flat_buffer_builder.html#a82219d659221dfc4c271399d9e56c47a',1,'FlatBuffers::FlatBufferBuilder']]],
+  ['c_2b_2b_20benchmarks',['C++ Benchmarks',['../flatbuffers_benchmarks.html',1,'']]],
   ['c_2b_2b_20api',['C++ API',['../group__flatbuffers__cpp__api.html',1,'']]],
   ['c_23_20api',['C# API',['../group__flatbuffers__csharp__api.html',1,'']]]
 ];
diff --git a/search/all_5.js b/search/all_5.js
index cae41e2627f9dbdf8be4604fd442947d243c350e..2f60f287587ab348870207829a8923529face110 100644
--- a/search/all_5.js
+++ b/search/all_5.js
@@ -1,6 +1,6 @@
 var searchData=
 [
-  ['databuffer',['DataBuffer',['../class_flat_buffers_1_1_flat_buffer_builder.html#a6f0cbd075878e2c0f021c0947cc8a211',1,'FlatBuffers.FlatBufferBuilder.DataBuffer()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abf0fd34f0d93a9d89f595fddf752feb7',1,'com.google.flatbuffers.FlatBufferBuilder.dataBuffer()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#ae7e97c2d21da04ef483e6940d442938f',1,'Google\FlatBuffers\FlatbufferBuilder\dataBuffer()'],['../group__flatbuffers__javascript__api.html#ga674814e0816f06c8a29ab364d19bed60',1,'dataBuffer():&#160;flatbuffers.js']]],
+  ['databuffer',['dataBuffer',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abf0fd34f0d93a9d89f595fddf752feb7',1,'com.google.flatbuffers.FlatBufferBuilder.dataBuffer()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#ae7e97c2d21da04ef483e6940d442938f',1,'Google\FlatBuffers\FlatbufferBuilder\dataBuffer()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a6f0cbd075878e2c0f021c0947cc8a211',1,'FlatBuffers.FlatBufferBuilder.DataBuffer()'],['../group__flatbuffers__javascript__api.html#ga674814e0816f06c8a29ab364d19bed60',1,'dataBuffer():&#160;flatbuffers.js']]],
   ['dedupvtables',['DedupVtables',['../classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961',1,'flatbuffers::FlatBufferBuilder']]],
   ['defaultallocator',['DefaultAllocator',['../classflatbuffers_1_1_default_allocator.html',1,'flatbuffers']]],
   ['detachedbuffer',['DetachedBuffer',['../classflatbuffers_1_1_detached_buffer.html',1,'flatbuffers']]]
diff --git a/search/all_7.js b/search/all_7.js
index 73f8911075ab72ce52e5fd98e427ee6aa6a6658b..acc5a757b5a03b6f6ed390c31f613d9505783ec0 100644
--- a/search/all_7.js
+++ b/search/all_7.js
@@ -1,12 +1,12 @@
 var searchData=
 [
   ['fieldloc',['FieldLoc',['../structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html',1,'flatbuffers::FlatBufferBuilder']]],
-  ['finish',['Finish',['../class_flat_buffers_1_1_flat_buffer_builder.html#a1afc6853539aaff7ac6937ed03ff5c7b',1,'FlatBuffers.FlatBufferBuilder.Finish(int rootTable)'],['../class_flat_buffers_1_1_flat_buffer_builder.html#ac7a48fd125d3f65f1bc1bc67d74eae73',1,'FlatBuffers.FlatBufferBuilder.Finish(int rootTable, string fileIdentifier)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912',1,'flatbuffers::FlatBufferBuilder::Finish()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aee9ed3214a7b35075773c506e3d95a14',1,'com.google.flatbuffers.FlatBufferBuilder.finish(int root_table)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a189de474e0c39d663cc65fa21a63f071',1,'com.google.flatbuffers.FlatBufferBuilder.finish(int root_table, String file_identifier)'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a799f0d1cf0fff359d6d04768108cb2a5',1,'Google\FlatBuffers\FlatbufferBuilder\finish()'],['../group__flatbuffers__javascript__api.html#ga62c5cf622a7bbcfd49f21bddd8b9bef7',1,'finish():&#160;flatbuffers.js']]],
+  ['finish',['finish',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aee9ed3214a7b35075773c506e3d95a14',1,'com.google.flatbuffers.FlatBufferBuilder.finish(int root_table)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a189de474e0c39d663cc65fa21a63f071',1,'com.google.flatbuffers.FlatBufferBuilder.finish(int root_table, String file_identifier)'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a799f0d1cf0fff359d6d04768108cb2a5',1,'Google\FlatBuffers\FlatbufferBuilder\finish()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a1afc6853539aaff7ac6937ed03ff5c7b',1,'FlatBuffers.FlatBufferBuilder.Finish(int rootTable)'],['../class_flat_buffers_1_1_flat_buffer_builder.html#ac7a48fd125d3f65f1bc1bc67d74eae73',1,'FlatBuffers.FlatBufferBuilder.Finish(int rootTable, string fileIdentifier)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912',1,'flatbuffers::FlatBufferBuilder::Finish()'],['../group__flatbuffers__javascript__api.html#ga62c5cf622a7bbcfd49f21bddd8b9bef7',1,'finish():&#160;flatbuffers.js']]],
   ['finishsizeprefixed',['FinishSizePrefixed',['../classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220',1,'flatbuffers::FlatBufferBuilder']]],
+  ['flatbufferbuilder',['FlatbufferBuilder',['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html',1,'Google::FlatBuffers']]],
   ['flatbufferbuilder',['FlatBufferBuilder',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html',1,'com::google::flatbuffers']]],
   ['flatbufferbuilder',['FlatBufferBuilder',['../classflatbuffers_1_1_flat_buffer_builder.html',1,'flatbuffers::FlatBufferBuilder'],['../class_flat_buffers_1_1_flat_buffer_builder.html',1,'FlatBuffers.FlatBufferBuilder']]],
-  ['flatbufferbuilder',['FlatbufferBuilder',['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html',1,'Google::FlatBuffers']]],
-  ['flatbufferbuilder',['FlatBufferBuilder',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#af49427a6a8a6ec24f3c9cf812f30812d',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder(int initial_size)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac8a8a558ce1d2531447a765636db2387',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a61ad1938219bcdbe99cc4b668f4c0f99',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder(ByteBuffer existing_bb)'],['../class_flat_buffers_1_1_flat_buffer_builder.html#ae24f93e3f9672846dd241d585d62c63d',1,'FlatBuffers.FlatBufferBuilder.FlatBufferBuilder()'],['../classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4',1,'flatbuffers::FlatBufferBuilder::FlatBufferBuilder()']]],
+  ['flatbufferbuilder',['FlatBufferBuilder',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aed1e475e75409625c8df85dc3d396e4c',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder(int initial_size, ByteBufferFactory bb_factory)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#af49427a6a8a6ec24f3c9cf812f30812d',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder(int initial_size)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac8a8a558ce1d2531447a765636db2387',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a3388cd4dc6e5233283fb4927b71a1c39',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder(ByteBuffer existing_bb, ByteBufferFactory bb_factory)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a61ad1938219bcdbe99cc4b668f4c0f99',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder(ByteBuffer existing_bb)'],['../class_flat_buffers_1_1_flat_buffer_builder.html#ae24f93e3f9672846dd241d585d62c63d',1,'FlatBuffers.FlatBufferBuilder.FlatBufferBuilder()'],['../classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4',1,'flatbuffers::FlatBufferBuilder::FlatBufferBuilder()']]],
   ['flatbufferbuilder_2ecs',['FlatBufferBuilder.cs',['../_flat_buffer_builder_8cs.html',1,'']]],
   ['flatbufferbuilder_2ejava',['FlatBufferBuilder.java',['../_flat_buffer_builder_8java.html',1,'']]],
   ['flatbufferbuilder_2ephp',['FlatbufferBuilder.php',['../_flatbuffer_builder_8php.html',1,'']]],
@@ -15,5 +15,5 @@ var searchData=
   ['flatbuffer_20internals',['FlatBuffer Internals',['../flatbuffers_internals.html',1,'']]],
   ['flatbuffers_20white_20paper',['FlatBuffers white paper',['../flatbuffers_white_paper.html',1,'']]],
   ['flexbuffers',['FlexBuffers',['../flexbuffers.html',1,'']]],
-  ['forcedefaults',['ForceDefaults',['../class_flat_buffers_1_1_flat_buffer_builder.html#a40d549b2db96b91b2345d1a44ff3fe13',1,'FlatBuffers.FlatBufferBuilder.ForceDefaults()'],['../classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a',1,'flatbuffers::FlatBufferBuilder::ForceDefaults()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aaadff3772bfdff756b4f269afae5ac69',1,'com.google.flatbuffers.FlatBufferBuilder.forceDefaults()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a5d75bca1a17d58bb6e383a73761ba45f',1,'Google\FlatBuffers\FlatbufferBuilder\forceDefaults()'],['../group__flatbuffers__javascript__api.html#ga0d1738111b83dffb2c2a7fc8bca19b33',1,'forceDefaults():&#160;flatbuffers.js']]]
+  ['forcedefaults',['forceDefaults',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aaadff3772bfdff756b4f269afae5ac69',1,'com.google.flatbuffers.FlatBufferBuilder.forceDefaults()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a5d75bca1a17d58bb6e383a73761ba45f',1,'Google\FlatBuffers\FlatbufferBuilder\forceDefaults()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a40d549b2db96b91b2345d1a44ff3fe13',1,'FlatBuffers.FlatBufferBuilder.ForceDefaults()'],['../classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a',1,'flatbuffers::FlatBufferBuilder::ForceDefaults()'],['../group__flatbuffers__javascript__api.html#ga0d1738111b83dffb2c2a7fc8bca19b33',1,'forceDefaults():&#160;flatbuffers.js']]]
 ];
diff --git a/search/all_9.js b/search/all_9.js
index e58b64d43312763dac849f0b4bbce26dfca22c6e..e69db38c775d1153b782be691ea4c7d42d556888 100644
--- a/search/all_9.js
+++ b/search/all_9.js
@@ -1,7 +1,4 @@
 var searchData=
 [
-  ['indirecthelper',['IndirectHelper',['../structflatbuffers_1_1_indirect_helper.html',1,'flatbuffers']]],
-  ['indirecthelper_3c_20const_20t_20_2a_20_3e',['IndirectHelper&lt; const T * &gt;',['../structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html',1,'flatbuffers']]],
-  ['indirecthelper_3c_20offset_3c_20t_20_3e_20_3e',['IndirectHelper&lt; Offset&lt; T &gt; &gt;',['../structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html',1,'flatbuffers']]],
-  ['init',['init',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0757a4347e9b932f9c0607f79531b023',1,'com::google::flatbuffers::FlatBufferBuilder']]]
+  ['heapbytebufferfactory',['HeapByteBufferFactory',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html',1,'com::google::flatbuffers::FlatBufferBuilder']]]
 ];
diff --git a/search/all_a.js b/search/all_a.js
index 8c8e50e2a0f6fd1bd93e7e474e18478bb9805895..07dd2a7d9061599bb5e2a997b8af2c4e910ef81f 100644
--- a/search/all_a.js
+++ b/search/all_a.js
@@ -1,5 +1,7 @@
 var searchData=
 [
-  ['java_20api',['Java API',['../group__flatbuffers__java__api.html',1,'']]],
-  ['javascript_20api',['JavaScript API',['../group__flatbuffers__javascript__api.html',1,'']]]
+  ['indirecthelper',['IndirectHelper',['../structflatbuffers_1_1_indirect_helper.html',1,'flatbuffers']]],
+  ['indirecthelper_3c_20const_20t_20_2a_20_3e',['IndirectHelper&lt; const T * &gt;',['../structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html',1,'flatbuffers']]],
+  ['indirecthelper_3c_20offset_3c_20t_20_3e_20_3e',['IndirectHelper&lt; Offset&lt; T &gt; &gt;',['../structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html',1,'flatbuffers']]],
+  ['init',['init',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#adf671e70a4d30c85f37393c47a7a7dd1',1,'com::google::flatbuffers::FlatBufferBuilder']]]
 ];
diff --git a/search/all_b.js b/search/all_b.js
index 7dcdf36b8546871c1eefa49f52858ca010cef1a5..8c8e50e2a0f6fd1bd93e7e474e18478bb9805895 100644
--- a/search/all_b.js
+++ b/search/all_b.js
@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['kfileidentifierlength',['kFileIdentifierLength',['../classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19',1,'flatbuffers::FlatBufferBuilder']]]
+  ['java_20api',['Java API',['../group__flatbuffers__java__api.html',1,'']]],
+  ['javascript_20api',['JavaScript API',['../group__flatbuffers__javascript__api.html',1,'']]]
 ];
diff --git a/search/all_c.js b/search/all_c.js
index f24dbe61ca9741a6a5c15908e683508e930f826f..7dcdf36b8546871c1eefa49f52858ca010cef1a5 100644
--- a/search/all_c.js
+++ b/search/all_c.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['offset',['Offset',['../structflatbuffers_1_1_offset.html',1,'flatbuffers']]]
+  ['kfileidentifierlength',['kFileIdentifierLength',['../classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19',1,'flatbuffers::FlatBufferBuilder']]]
 ];
diff --git a/search/all_d.js b/search/all_d.js
index 03943ecec894d0fe73535cc58b796d8c12662a21..4da9cd30c55fed83f73e424d2df6a5f203495f11 100644
--- a/search/all_d.js
+++ b/search/all_d.js
@@ -1,6 +1,4 @@
 var searchData=
 [
-  ['php_20api',['PHP API',['../group__flatbuffers__php__api.html',1,'']]],
-  ['python_20api',['Python API',['../group__flatbuffers__python__api.html',1,'']]],
-  ['platform_20_2f_20language_20_2f_20feature_20support',['Platform / Language / Feature support',['../flatbuffers_support.html',1,'']]]
+  ['newbytebuffer',['newByteBuffer',['../interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html#a0db9a9033d232d584443a433d7576f4a',1,'com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory.newByteBuffer()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html#aac26ff51a8162b37a072792ec9068644',1,'com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory.newByteBuffer()']]]
 ];
diff --git a/search/all_e.js b/search/all_e.js
index 17fea3b11d7b503eb2778632f352ea5b43e44f5b..d9e24553ff3b02ba8b6655b70b091c56ebdca44d 100644
--- a/search/all_e.js
+++ b/search/all_e.js
@@ -1,5 +1,5 @@
 var searchData=
 [
-  ['release',['Release',['../classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45',1,'flatbuffers::FlatBufferBuilder']]],
-  ['releasebufferpointer',['ReleaseBufferPointer',['../classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8',1,'flatbuffers::FlatBufferBuilder']]]
+  ['offset',['Offset',['../structflatbuffers_1_1_offset.html',1,'flatbuffers']]],
+  ['offset',['offset',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae3a3fbf645e64ce784a524f935a6e6f2',1,'com::google::flatbuffers::FlatBufferBuilder']]]
 ];
diff --git a/search/all_f.js b/search/all_f.js
index ba698f48acc8dd7d46113683293ebf02057580a2..054dd7c5c7db7a8af2ac0ab7473f92c6a8a696d6 100644
--- a/search/all_f.js
+++ b/search/all_f.js
@@ -1,6 +1,15 @@
 var searchData=
 [
-  ['sizedbytearray',['SizedByteArray',['../class_flat_buffers_1_1_flat_buffer_builder.html#abfd2f4e19cf51f62290a0272683f23b2',1,'FlatBuffers.FlatBufferBuilder.SizedByteArray()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a81a5c2d7ab36e913cc16d9499aabe078',1,'com.google.flatbuffers.FlatBufferBuilder.sizedByteArray(int start, int length)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aa636cf5190524c43212b6d96239d7672',1,'com.google.flatbuffers.FlatBufferBuilder.sizedByteArray()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a967e7dc8f051d4e73b3155e3b281d7b4',1,'Google\FlatBuffers\FlatbufferBuilder\sizedByteArray()']]],
-  ['string',['String',['../structflatbuffers_1_1_string.html',1,'flatbuffers']]],
-  ['stringoffsetcompare',['StringOffsetCompare',['../structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html',1,'flatbuffers::FlatBufferBuilder']]]
+  ['php_20api',['PHP API',['../group__flatbuffers__php__api.html',1,'']]],
+  ['python_20api',['Python API',['../group__flatbuffers__python__api.html',1,'']]],
+  ['platform_20_2f_20language_20_2f_20feature_20support',['Platform / Language / Feature support',['../flatbuffers_support.html',1,'']]],
+  ['pad',['pad',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a4a2e8c6430c6538509147225b8a4697e',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['prep',['prep',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a2023123a33f19d670182d5f00ef9aa59',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['putboolean',['putBoolean',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24114cfb1adb89f1e3d72736b06a8df0',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['putbyte',['putByte',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a86b42641d0c600afa11f8c8493f5e6a3',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['putdouble',['putDouble',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a36bc3231cc9f86e6fd2750dcec8b7336',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['putfloat',['putFloat',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e3fae083ea9c9bff3b80cde3f4581bb',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['putint',['putInt',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a108d4c3d931b4f2a63a71aeefa562bba',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['putlong',['putLong',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a083507c3c359c28bb008142e8ad41a7d',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['putshort',['putShort',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a5a98de8b6e8fc5df984c435ba3181690',1,'com::google::flatbuffers::FlatBufferBuilder']]]
 ];
diff --git a/search/classes_1.js b/search/classes_1.js
index 04f7729357b5d457702aa5aee1eb483c04d58672..8d296777849aca1688679e2a33da35cd7c547a2a 100644
--- a/search/classes_1.js
+++ b/search/classes_1.js
@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['defaultallocator',['DefaultAllocator',['../classflatbuffers_1_1_default_allocator.html',1,'flatbuffers']]],
-  ['detachedbuffer',['DetachedBuffer',['../classflatbuffers_1_1_detached_buffer.html',1,'flatbuffers']]]
+  ['bytebufferfactory',['ByteBufferFactory',['../interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html',1,'com::google::flatbuffers::FlatBufferBuilder']]]
 ];
diff --git a/search/classes_2.js b/search/classes_2.js
index 1905f43c62eebba8e558eb41cca44950f671fafb..04f7729357b5d457702aa5aee1eb483c04d58672 100644
--- a/search/classes_2.js
+++ b/search/classes_2.js
@@ -1,7 +1,5 @@
 var searchData=
 [
-  ['fieldloc',['FieldLoc',['../structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html',1,'flatbuffers::FlatBufferBuilder']]],
-  ['flatbufferbuilder',['FlatBufferBuilder',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html',1,'com::google::flatbuffers']]],
-  ['flatbufferbuilder',['FlatbufferBuilder',['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html',1,'Google::FlatBuffers']]],
-  ['flatbufferbuilder',['FlatBufferBuilder',['../classflatbuffers_1_1_flat_buffer_builder.html',1,'flatbuffers::FlatBufferBuilder'],['../class_flat_buffers_1_1_flat_buffer_builder.html',1,'FlatBuffers.FlatBufferBuilder']]]
+  ['defaultallocator',['DefaultAllocator',['../classflatbuffers_1_1_default_allocator.html',1,'flatbuffers']]],
+  ['detachedbuffer',['DetachedBuffer',['../classflatbuffers_1_1_detached_buffer.html',1,'flatbuffers']]]
 ];
diff --git a/search/classes_3.js b/search/classes_3.js
index 60e38c7761ed5ad6ed4c287fb5ca26377b933765..66e4f2f910bab86f260183e8be153c470659c305 100644
--- a/search/classes_3.js
+++ b/search/classes_3.js
@@ -1,6 +1,7 @@
 var searchData=
 [
-  ['indirecthelper',['IndirectHelper',['../structflatbuffers_1_1_indirect_helper.html',1,'flatbuffers']]],
-  ['indirecthelper_3c_20const_20t_20_2a_20_3e',['IndirectHelper&lt; const T * &gt;',['../structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html',1,'flatbuffers']]],
-  ['indirecthelper_3c_20offset_3c_20t_20_3e_20_3e',['IndirectHelper&lt; Offset&lt; T &gt; &gt;',['../structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html',1,'flatbuffers']]]
+  ['fieldloc',['FieldLoc',['../structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html',1,'flatbuffers::FlatBufferBuilder']]],
+  ['flatbufferbuilder',['FlatbufferBuilder',['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html',1,'Google::FlatBuffers']]],
+  ['flatbufferbuilder',['FlatBufferBuilder',['../classflatbuffers_1_1_flat_buffer_builder.html',1,'flatbuffers::FlatBufferBuilder'],['../class_flat_buffers_1_1_flat_buffer_builder.html',1,'FlatBuffers.FlatBufferBuilder']]],
+  ['flatbufferbuilder',['FlatBufferBuilder',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html',1,'com::google::flatbuffers']]]
 ];
diff --git a/search/classes_4.js b/search/classes_4.js
index f24dbe61ca9741a6a5c15908e683508e930f826f..e69db38c775d1153b782be691ea4c7d42d556888 100644
--- a/search/classes_4.js
+++ b/search/classes_4.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['offset',['Offset',['../structflatbuffers_1_1_offset.html',1,'flatbuffers']]]
+  ['heapbytebufferfactory',['HeapByteBufferFactory',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html',1,'com::google::flatbuffers::FlatBufferBuilder']]]
 ];
diff --git a/search/classes_5.js b/search/classes_5.js
index c1a6a9adc0faaa7e1e812b32fa3025f203664985..60e38c7761ed5ad6ed4c287fb5ca26377b933765 100644
--- a/search/classes_5.js
+++ b/search/classes_5.js
@@ -1,5 +1,6 @@
 var searchData=
 [
-  ['string',['String',['../structflatbuffers_1_1_string.html',1,'flatbuffers']]],
-  ['stringoffsetcompare',['StringOffsetCompare',['../structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html',1,'flatbuffers::FlatBufferBuilder']]]
+  ['indirecthelper',['IndirectHelper',['../structflatbuffers_1_1_indirect_helper.html',1,'flatbuffers']]],
+  ['indirecthelper_3c_20const_20t_20_2a_20_3e',['IndirectHelper&lt; const T * &gt;',['../structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html',1,'flatbuffers']]],
+  ['indirecthelper_3c_20offset_3c_20t_20_3e_20_3e',['IndirectHelper&lt; Offset&lt; T &gt; &gt;',['../structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html',1,'flatbuffers']]]
 ];
diff --git a/search/classes_6.js b/search/classes_6.js
index dc590db5ad4279592391cf7e72d11329c7de1644..f24dbe61ca9741a6a5c15908e683508e930f826f 100644
--- a/search/classes_6.js
+++ b/search/classes_6.js
@@ -1,8 +1,4 @@
 var searchData=
 [
-  ['vector',['Vector',['../classflatbuffers_1_1_vector.html',1,'flatbuffers']]],
-  ['vector_3c_20char_20_3e',['Vector&lt; char &gt;',['../classflatbuffers_1_1_vector.html',1,'flatbuffers']]],
-  ['vector_5fdownward',['vector_downward',['../classflatbuffers_1_1vector__downward.html',1,'flatbuffers']]],
-  ['vectoriterator',['VectorIterator',['../structflatbuffers_1_1_vector_iterator.html',1,'flatbuffers']]],
-  ['vectorofany',['VectorOfAny',['../classflatbuffers_1_1_vector_of_any.html',1,'flatbuffers']]]
+  ['offset',['Offset',['../structflatbuffers_1_1_offset.html',1,'flatbuffers']]]
 ];
diff --git a/search/classes_7.html b/search/classes_7.html
new file mode 100644
index 0000000000000000000000000000000000000000..649e79523d3689ae3a91521ce4db2f9be646f73f
--- /dev/null
+++ b/search/classes_7.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_7.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/search/classes_7.js b/search/classes_7.js
new file mode 100644
index 0000000000000000000000000000000000000000..c1a6a9adc0faaa7e1e812b32fa3025f203664985
--- /dev/null
+++ b/search/classes_7.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['string',['String',['../structflatbuffers_1_1_string.html',1,'flatbuffers']]],
+  ['stringoffsetcompare',['StringOffsetCompare',['../structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html',1,'flatbuffers::FlatBufferBuilder']]]
+];
diff --git a/search/classes_8.html b/search/classes_8.html
new file mode 100644
index 0000000000000000000000000000000000000000..e6eb4d9dc1429e9d522a27b6c118375b957208b7
--- /dev/null
+++ b/search/classes_8.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_8.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/search/classes_8.js b/search/classes_8.js
new file mode 100644
index 0000000000000000000000000000000000000000..dc590db5ad4279592391cf7e72d11329c7de1644
--- /dev/null
+++ b/search/classes_8.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+  ['vector',['Vector',['../classflatbuffers_1_1_vector.html',1,'flatbuffers']]],
+  ['vector_3c_20char_20_3e',['Vector&lt; char &gt;',['../classflatbuffers_1_1_vector.html',1,'flatbuffers']]],
+  ['vector_5fdownward',['vector_downward',['../classflatbuffers_1_1vector__downward.html',1,'flatbuffers']]],
+  ['vectoriterator',['VectorIterator',['../structflatbuffers_1_1_vector_iterator.html',1,'flatbuffers']]],
+  ['vectorofany',['VectorOfAny',['../classflatbuffers_1_1_vector_of_any.html',1,'flatbuffers']]]
+];
diff --git a/search/functions_1.js b/search/functions_1.js
index 47cc58b49140478f5c56cfbfaf6cc54f8f5a6a60..8f0f4ab9ebf51761ca96a641354ba28065f483a4 100644
--- a/search/functions_1.js
+++ b/search/functions_1.js
@@ -3,11 +3,11 @@ var searchData=
   ['addbool',['addBool',['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a723a1053d3a17d5433c37bdbd015844e',1,'Google\FlatBuffers\FlatbufferBuilder\addBool()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a6b66d785555d19cd0f141978eff78e2e',1,'FlatBuffers.FlatBufferBuilder.AddBool()']]],
   ['addboolean',['addBoolean',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a53e6356cfef3d6be298efb9a0d67be06',1,'com::google::flatbuffers::FlatBufferBuilder']]],
   ['addbyte',['AddByte',['../class_flat_buffers_1_1_flat_buffer_builder.html#ac11b10888152d4f687e8ce4d60022254',1,'FlatBuffers.FlatBufferBuilder.AddByte()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae019d7ee089c95a37421365d5fb9533b',1,'com.google.flatbuffers.FlatBufferBuilder.addByte()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a7b78098530190cb90d315419fb1d21fc',1,'Google\FlatBuffers\FlatbufferBuilder\addByte()']]],
-  ['adddouble',['AddDouble',['../class_flat_buffers_1_1_flat_buffer_builder.html#aef6feaf282148043e6a1c9c1ba9e2094',1,'FlatBuffers.FlatBufferBuilder.AddDouble()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac36c1fc72851b17129fc763da00cff32',1,'com.google.flatbuffers.FlatBufferBuilder.addDouble()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a23a5478774e8909117d31b62dde51e86',1,'Google\FlatBuffers\FlatbufferBuilder\addDouble()']]],
-  ['addfloat',['AddFloat',['../class_flat_buffers_1_1_flat_buffer_builder.html#a41a1e6f7e7b9098a9d8c1af7157ef2bf',1,'FlatBuffers.FlatBufferBuilder.AddFloat()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a55c20e99ba68be516dfbddfddb9efd4d',1,'com.google.flatbuffers.FlatBufferBuilder.addFloat()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a5ce6215b65e222b8ee22d3eb4436e404',1,'Google\FlatBuffers\FlatbufferBuilder\addFloat()']]],
-  ['addint',['AddInt',['../class_flat_buffers_1_1_flat_buffer_builder.html#a7970bfc069caeee5dfd994e6c1106ab9',1,'FlatBuffers.FlatBufferBuilder.AddInt()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a1c0ae381bf6adb84b18e613aadf8d4db',1,'com.google.flatbuffers.FlatBufferBuilder.addInt()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a63c9d66329dff15855d11c89134599e0',1,'Google\FlatBuffers\FlatbufferBuilder\addInt()']]],
-  ['addlong',['AddLong',['../class_flat_buffers_1_1_flat_buffer_builder.html#a0d182e151b4f57d47069885cc1d05893',1,'FlatBuffers.FlatBufferBuilder.AddLong()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e1215f334989ecc59b49a3239aed5b5',1,'com.google.flatbuffers.FlatBufferBuilder.addLong()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a8875bff7ef67af16938cabe719ceac70',1,'Google\FlatBuffers\FlatbufferBuilder\addLong()']]],
-  ['addoffset',['AddOffset',['../class_flat_buffers_1_1_flat_buffer_builder.html#ae1d6d927d400c330cae48951eae546e5',1,'FlatBuffers.FlatBufferBuilder.AddOffset()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae817751382089b603753452cc1e56790',1,'com.google.flatbuffers.FlatBufferBuilder.addOffset()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a127fe515651f4b4347ea8e01b3951934',1,'Google\FlatBuffers\FlatbufferBuilder\addOffset()']]],
+  ['adddouble',['addDouble',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac36c1fc72851b17129fc763da00cff32',1,'com.google.flatbuffers.FlatBufferBuilder.addDouble()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a23a5478774e8909117d31b62dde51e86',1,'Google\FlatBuffers\FlatbufferBuilder\addDouble()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#aef6feaf282148043e6a1c9c1ba9e2094',1,'FlatBuffers.FlatBufferBuilder.AddDouble()']]],
+  ['addfloat',['addFloat',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a55c20e99ba68be516dfbddfddb9efd4d',1,'com.google.flatbuffers.FlatBufferBuilder.addFloat()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a5ce6215b65e222b8ee22d3eb4436e404',1,'Google\FlatBuffers\FlatbufferBuilder\addFloat()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a41a1e6f7e7b9098a9d8c1af7157ef2bf',1,'FlatBuffers.FlatBufferBuilder.AddFloat()']]],
+  ['addint',['addInt',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a1c0ae381bf6adb84b18e613aadf8d4db',1,'com.google.flatbuffers.FlatBufferBuilder.addInt()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a63c9d66329dff15855d11c89134599e0',1,'Google\FlatBuffers\FlatbufferBuilder\addInt()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a7970bfc069caeee5dfd994e6c1106ab9',1,'FlatBuffers.FlatBufferBuilder.AddInt()']]],
+  ['addlong',['addLong',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e1215f334989ecc59b49a3239aed5b5',1,'com.google.flatbuffers.FlatBufferBuilder.addLong()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a8875bff7ef67af16938cabe719ceac70',1,'Google\FlatBuffers\FlatbufferBuilder\addLong()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a0d182e151b4f57d47069885cc1d05893',1,'FlatBuffers.FlatBufferBuilder.AddLong()']]],
+  ['addoffset',['addOffset',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae817751382089b603753452cc1e56790',1,'com.google.flatbuffers.FlatBufferBuilder.addOffset()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a127fe515651f4b4347ea8e01b3951934',1,'Google\FlatBuffers\FlatbufferBuilder\addOffset()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#ae1d6d927d400c330cae48951eae546e5',1,'FlatBuffers.FlatBufferBuilder.AddOffset()']]],
   ['addsbyte',['addSbyte',['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a6add2b19644657fbe0925cb0238618c6',1,'Google\FlatBuffers\FlatbufferBuilder\addSbyte()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a0b2addc87bde29213424a187b7b08707',1,'FlatBuffers.FlatBufferBuilder.AddSbyte()']]],
   ['addshort',['AddShort',['../class_flat_buffers_1_1_flat_buffer_builder.html#a93b38c262a248e625ea3719dddf903eb',1,'FlatBuffers.FlatBufferBuilder.AddShort()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a67a9f5dcd251735d6b96e1ad46de9d94',1,'com.google.flatbuffers.FlatBufferBuilder.addShort()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a1e11aa1f080749100de6e153e88f9dd5',1,'Google\FlatBuffers\FlatbufferBuilder\addShort()']]],
   ['adduint',['addUint',['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a6f4a37444fca01dcbd0922d18cf2be5c',1,'Google\FlatBuffers\FlatbufferBuilder\addUint()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#aef3581dee532ab763b99947ca43ddcfa',1,'FlatBuffers.FlatBufferBuilder.AddUint()']]],
diff --git a/search/functions_2.js b/search/functions_2.js
index 74b26cd1a84b835692da59c7f4e8fa3774992383..cf635ed0e80cb97bcfcc3bd8251bfa5113cbc897 100644
--- a/search/functions_2.js
+++ b/search/functions_2.js
@@ -3,17 +3,17 @@ var searchData=
   ['clear',['Clear',['../class_flat_buffers_1_1_flat_buffer_builder.html#a74ed0e43043c6e486dbe40b0d2ff63d6',1,'FlatBuffers.FlatBufferBuilder.Clear()'],['../classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412',1,'flatbuffers::FlatBufferBuilder::Clear()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a3a5dd461dc86a2132eaa4f0348b4c001',1,'com.google.flatbuffers.FlatBufferBuilder.clear()']]],
   ['createbytevector',['createByteVector',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a37b5debda58afd1fcb71ec82efe663b9',1,'com::google::flatbuffers::FlatBufferBuilder']]],
   ['createsharedstring',['CreateSharedString',['../classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1',1,'flatbuffers::FlatBufferBuilder::CreateSharedString(const char *str, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7',1,'flatbuffers::FlatBufferBuilder::CreateSharedString(const char *str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a10e8ec7d1c8fbdc21b1c7047bbbe38d9',1,'flatbuffers::FlatBufferBuilder::CreateSharedString(const std::string &amp;str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3',1,'flatbuffers::FlatBufferBuilder::CreateSharedString(const String *str)']]],
-  ['createstring',['CreateString',['../class_flat_buffers_1_1_flat_buffer_builder.html#a3b6e42519f278e4a060895633d048070',1,'FlatBuffers.FlatBufferBuilder.CreateString()'],['../classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe',1,'flatbuffers::FlatBufferBuilder::CreateString(const char *str, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5',1,'flatbuffers::FlatBufferBuilder::CreateString(const char *str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f',1,'flatbuffers::FlatBufferBuilder::CreateString(const std::string &amp;str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506',1,'flatbuffers::FlatBufferBuilder::CreateString(const String *str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685',1,'flatbuffers::FlatBufferBuilder::CreateString(const T &amp;str)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abd3b2f9b239a702ffaa8a1e97894f09e',1,'com.google.flatbuffers.FlatBufferBuilder.createString(CharSequence s)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a8d676eb9973ecba574a220cdef725577',1,'com.google.flatbuffers.FlatBufferBuilder.createString(ByteBuffer s)'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#ac54a8acfac1dda020b610da53b2d9a0f',1,'Google\FlatBuffers\FlatbufferBuilder\createString()']]],
+  ['createstring',['createString',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#abd3b2f9b239a702ffaa8a1e97894f09e',1,'com.google.flatbuffers.FlatBufferBuilder.createString(CharSequence s)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a8d676eb9973ecba574a220cdef725577',1,'com.google.flatbuffers.FlatBufferBuilder.createString(ByteBuffer s)'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#ac54a8acfac1dda020b610da53b2d9a0f',1,'Google\FlatBuffers\FlatbufferBuilder\createString()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a3b6e42519f278e4a060895633d048070',1,'FlatBuffers.FlatBufferBuilder.CreateString()'],['../classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe',1,'flatbuffers::FlatBufferBuilder::CreateString(const char *str, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5',1,'flatbuffers::FlatBufferBuilder::CreateString(const char *str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f',1,'flatbuffers::FlatBufferBuilder::CreateString(const std::string &amp;str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506',1,'flatbuffers::FlatBufferBuilder::CreateString(const String *str)'],['../classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685',1,'flatbuffers::FlatBufferBuilder::CreateString(const T &amp;str)']]],
   ['createstruct',['CreateStruct',['../classflatbuffers_1_1_flat_buffer_builder.html#a43f51ba9c8f4f24ea2247a3979d095b8',1,'flatbuffers::FlatBufferBuilder']]],
   ['createuninitializedvector',['CreateUninitializedVector',['../classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c',1,'flatbuffers::FlatBufferBuilder::CreateUninitializedVector(size_t len, size_t elemsize, uint8_t **buf)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50',1,'flatbuffers::FlatBufferBuilder::CreateUninitializedVector(size_t len, T **buf)']]],
   ['createunintializedvector',['createUnintializedVector',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#acc889115f91460ca89ce981cb02c2039',1,'com::google::flatbuffers::FlatBufferBuilder']]],
-  ['createvector',['CreateVector',['../classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3',1,'flatbuffers::FlatBufferBuilder::CreateVector(const T *v, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207',1,'flatbuffers::FlatBufferBuilder::CreateVector(const std::vector&lt; T &gt; &amp;v)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b',1,'flatbuffers::FlatBufferBuilder::CreateVector(size_t vector_size, const std::function&lt; T(size_t i)&gt; &amp;f)']]],
+  ['createvector',['CreateVector',['../classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3',1,'flatbuffers::FlatBufferBuilder::CreateVector(const T *v, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207',1,'flatbuffers::FlatBufferBuilder::CreateVector(const std::vector&lt; T &gt; &amp;v)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b',1,'flatbuffers::FlatBufferBuilder::CreateVector(size_t vector_size, const std::function&lt; T(size_t i)&gt; &amp;f)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a53504fc2cab681a7980b03260f8b2f7a',1,'flatbuffers::FlatBufferBuilder::CreateVector(size_t vector_size, F f, S *state)']]],
   ['createvectorofnativestructs',['CreateVectorOfNativeStructs',['../classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfNativeStructs(const S *v, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfNativeStructs(const std::vector&lt; S &gt; &amp;v)']]],
   ['createvectorofsortednativestructs',['CreateVectorOfSortedNativeStructs',['../classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfSortedNativeStructs(std::vector&lt; S &gt; *v)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfSortedNativeStructs(S *v, size_t len)']]],
   ['createvectorofsortedstructs',['CreateVectorOfSortedStructs',['../classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfSortedStructs(std::vector&lt; T &gt; *v)'],['../classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfSortedStructs(T *v, size_t len)']]],
   ['createvectorofsortedtables',['CreateVectorOfSortedTables',['../classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfSortedTables(Offset&lt; T &gt; *v, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfSortedTables(std::vector&lt; Offset&lt; T &gt;&gt; *v)']]],
   ['createvectorofstrings',['CreateVectorOfStrings',['../classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6',1,'flatbuffers::FlatBufferBuilder']]],
-  ['createvectorofstructs',['CreateVectorOfStructs',['../classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfStructs(const T *v, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfStructs(size_t vector_size, const std::function&lt; void(size_t i, T *)&gt; &amp;filler)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfStructs(const std::vector&lt; T &gt; &amp;v)']]],
+  ['createvectorofstructs',['CreateVectorOfStructs',['../classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfStructs(const T *v, size_t len)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfStructs(size_t vector_size, const std::function&lt; void(size_t i, T *)&gt; &amp;filler)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a9cc09fa59ff9732e972877cfe911c8a5',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfStructs(size_t vector_size, F f, S *state)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1',1,'flatbuffers::FlatBufferBuilder::CreateVectorOfStructs(const std::vector&lt; T &gt; &amp;v)']]],
   ['createvectoroftables',['createVectorOfTables',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24ea4649f508a7843e429737a4a9fad1',1,'com::google::flatbuffers::FlatBufferBuilder']]],
   ['createvectoroftables_3c_20t_20_3e',['CreateVectorOfTables&lt; T &gt;',['../class_flat_buffers_1_1_flat_buffer_builder.html#a82219d659221dfc4c271399d9e56c47a',1,'FlatBuffers::FlatBufferBuilder']]]
 ];
diff --git a/search/functions_5.js b/search/functions_5.js
index d3f40e325279188ac5b837c7c1cda8c2812f2866..58fd40ab2d84a3c8262b068bf1fde9b7124e5dc2 100644
--- a/search/functions_5.js
+++ b/search/functions_5.js
@@ -1,7 +1,7 @@
 var searchData=
 [
-  ['finish',['Finish',['../class_flat_buffers_1_1_flat_buffer_builder.html#a1afc6853539aaff7ac6937ed03ff5c7b',1,'FlatBuffers.FlatBufferBuilder.Finish(int rootTable)'],['../class_flat_buffers_1_1_flat_buffer_builder.html#ac7a48fd125d3f65f1bc1bc67d74eae73',1,'FlatBuffers.FlatBufferBuilder.Finish(int rootTable, string fileIdentifier)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912',1,'flatbuffers::FlatBufferBuilder::Finish()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aee9ed3214a7b35075773c506e3d95a14',1,'com.google.flatbuffers.FlatBufferBuilder.finish(int root_table)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a189de474e0c39d663cc65fa21a63f071',1,'com.google.flatbuffers.FlatBufferBuilder.finish(int root_table, String file_identifier)'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a799f0d1cf0fff359d6d04768108cb2a5',1,'Google\FlatBuffers\FlatbufferBuilder\finish()']]],
+  ['finish',['finish',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aee9ed3214a7b35075773c506e3d95a14',1,'com.google.flatbuffers.FlatBufferBuilder.finish(int root_table)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a189de474e0c39d663cc65fa21a63f071',1,'com.google.flatbuffers.FlatBufferBuilder.finish(int root_table, String file_identifier)'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a799f0d1cf0fff359d6d04768108cb2a5',1,'Google\FlatBuffers\FlatbufferBuilder\finish()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a1afc6853539aaff7ac6937ed03ff5c7b',1,'FlatBuffers.FlatBufferBuilder.Finish(int rootTable)'],['../class_flat_buffers_1_1_flat_buffer_builder.html#ac7a48fd125d3f65f1bc1bc67d74eae73',1,'FlatBuffers.FlatBufferBuilder.Finish(int rootTable, string fileIdentifier)'],['../classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912',1,'flatbuffers::FlatBufferBuilder::Finish()']]],
   ['finishsizeprefixed',['FinishSizePrefixed',['../classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220',1,'flatbuffers::FlatBufferBuilder']]],
-  ['flatbufferbuilder',['FlatBufferBuilder',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#af49427a6a8a6ec24f3c9cf812f30812d',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder(int initial_size)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac8a8a558ce1d2531447a765636db2387',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a61ad1938219bcdbe99cc4b668f4c0f99',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder(ByteBuffer existing_bb)'],['../class_flat_buffers_1_1_flat_buffer_builder.html#ae24f93e3f9672846dd241d585d62c63d',1,'FlatBuffers.FlatBufferBuilder.FlatBufferBuilder()'],['../classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4',1,'flatbuffers::FlatBufferBuilder::FlatBufferBuilder()']]],
-  ['forcedefaults',['ForceDefaults',['../classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a',1,'flatbuffers::FlatBufferBuilder::ForceDefaults()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aaadff3772bfdff756b4f269afae5ac69',1,'com.google.flatbuffers.FlatBufferBuilder.forceDefaults()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a5d75bca1a17d58bb6e383a73761ba45f',1,'Google\FlatBuffers\FlatbufferBuilder\forceDefaults()']]]
+  ['flatbufferbuilder',['FlatBufferBuilder',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aed1e475e75409625c8df85dc3d396e4c',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder(int initial_size, ByteBufferFactory bb_factory)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#af49427a6a8a6ec24f3c9cf812f30812d',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder(int initial_size)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ac8a8a558ce1d2531447a765636db2387',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a3388cd4dc6e5233283fb4927b71a1c39',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder(ByteBuffer existing_bb, ByteBufferFactory bb_factory)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a61ad1938219bcdbe99cc4b668f4c0f99',1,'com.google.flatbuffers.FlatBufferBuilder.FlatBufferBuilder(ByteBuffer existing_bb)'],['../class_flat_buffers_1_1_flat_buffer_builder.html#ae24f93e3f9672846dd241d585d62c63d',1,'FlatBuffers.FlatBufferBuilder.FlatBufferBuilder()'],['../classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4',1,'flatbuffers::FlatBufferBuilder::FlatBufferBuilder()']]],
+  ['forcedefaults',['forceDefaults',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aaadff3772bfdff756b4f269afae5ac69',1,'com.google.flatbuffers.FlatBufferBuilder.forceDefaults()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a5d75bca1a17d58bb6e383a73761ba45f',1,'Google\FlatBuffers\FlatbufferBuilder\forceDefaults()'],['../classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a',1,'flatbuffers::FlatBufferBuilder::ForceDefaults()']]]
 ];
diff --git a/search/functions_7.js b/search/functions_7.js
index c2ce9df3c7678b7d294dd05a6f797a840b8c83c9..f10c2923d7c7beb8fc4cda8298a906c27007ea29 100644
--- a/search/functions_7.js
+++ b/search/functions_7.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['init',['init',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0757a4347e9b932f9c0607f79531b023',1,'com::google::flatbuffers::FlatBufferBuilder']]]
+  ['init',['init',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#adf671e70a4d30c85f37393c47a7a7dd1',1,'com::google::flatbuffers::FlatBufferBuilder']]]
 ];
diff --git a/search/functions_8.js b/search/functions_8.js
index 17fea3b11d7b503eb2778632f352ea5b43e44f5b..4da9cd30c55fed83f73e424d2df6a5f203495f11 100644
--- a/search/functions_8.js
+++ b/search/functions_8.js
@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['release',['Release',['../classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45',1,'flatbuffers::FlatBufferBuilder']]],
-  ['releasebufferpointer',['ReleaseBufferPointer',['../classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8',1,'flatbuffers::FlatBufferBuilder']]]
+  ['newbytebuffer',['newByteBuffer',['../interfacecom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_byte_buffer_factory.html#a0db9a9033d232d584443a433d7576f4a',1,'com.google.flatbuffers.FlatBufferBuilder.ByteBufferFactory.newByteBuffer()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder_1_1_heap_byte_buffer_factory.html#aac26ff51a8162b37a072792ec9068644',1,'com.google.flatbuffers.FlatBufferBuilder.HeapByteBufferFactory.newByteBuffer()']]]
 ];
diff --git a/search/functions_9.js b/search/functions_9.js
index b77a213fd285fba9b2a413f5fd6a36b684529549..5b7da5103fadd02c97f9a488cc611572a9146833 100644
--- a/search/functions_9.js
+++ b/search/functions_9.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['sizedbytearray',['SizedByteArray',['../class_flat_buffers_1_1_flat_buffer_builder.html#abfd2f4e19cf51f62290a0272683f23b2',1,'FlatBuffers.FlatBufferBuilder.SizedByteArray()'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a81a5c2d7ab36e913cc16d9499aabe078',1,'com.google.flatbuffers.FlatBufferBuilder.sizedByteArray(int start, int length)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aa636cf5190524c43212b6d96239d7672',1,'com.google.flatbuffers.FlatBufferBuilder.sizedByteArray()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a967e7dc8f051d4e73b3155e3b281d7b4',1,'Google\FlatBuffers\FlatbufferBuilder\sizedByteArray()']]]
+  ['offset',['offset',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ae3a3fbf645e64ce784a524f935a6e6f2',1,'com::google::flatbuffers::FlatBufferBuilder']]]
 ];
diff --git a/search/functions_a.html b/search/functions_a.html
new file mode 100644
index 0000000000000000000000000000000000000000..27e77954def7fd07dbd82f3ee1f955a93b81cc07
--- /dev/null
+++ b/search/functions_a.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_a.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/search/functions_a.js b/search/functions_a.js
new file mode 100644
index 0000000000000000000000000000000000000000..e8ede61d0fe1df4e0de2a6b1e53af7bfc168e58f
--- /dev/null
+++ b/search/functions_a.js
@@ -0,0 +1,12 @@
+var searchData=
+[
+  ['pad',['pad',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a4a2e8c6430c6538509147225b8a4697e',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['prep',['prep',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a2023123a33f19d670182d5f00ef9aa59',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['putboolean',['putBoolean',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a24114cfb1adb89f1e3d72736b06a8df0',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['putbyte',['putByte',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a86b42641d0c600afa11f8c8493f5e6a3',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['putdouble',['putDouble',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a36bc3231cc9f86e6fd2750dcec8b7336',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['putfloat',['putFloat',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0e3fae083ea9c9bff3b80cde3f4581bb',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['putint',['putInt',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a108d4c3d931b4f2a63a71aeefa562bba',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['putlong',['putLong',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a083507c3c359c28bb008142e8ad41a7d',1,'com::google::flatbuffers::FlatBufferBuilder']]],
+  ['putshort',['putShort',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a5a98de8b6e8fc5df984c435ba3181690',1,'com::google::flatbuffers::FlatBufferBuilder']]]
+];
diff --git a/search/functions_b.html b/search/functions_b.html
new file mode 100644
index 0000000000000000000000000000000000000000..633ca6f6a8a34320e3803793a66b85f0d0204fa4
--- /dev/null
+++ b/search/functions_b.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_b.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/search/functions_b.js b/search/functions_b.js
new file mode 100644
index 0000000000000000000000000000000000000000..17fea3b11d7b503eb2778632f352ea5b43e44f5b
--- /dev/null
+++ b/search/functions_b.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['release',['Release',['../classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45',1,'flatbuffers::FlatBufferBuilder']]],
+  ['releasebufferpointer',['ReleaseBufferPointer',['../classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8',1,'flatbuffers::FlatBufferBuilder']]]
+];
diff --git a/search/functions_c.html b/search/functions_c.html
new file mode 100644
index 0000000000000000000000000000000000000000..fbd80b0ecc13acdcf089c077bb8095146b7414ed
--- /dev/null
+++ b/search/functions_c.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.7"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_c.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/search/functions_c.js b/search/functions_c.js
new file mode 100644
index 0000000000000000000000000000000000000000..656982553a44317bb7ef464f01af2e8db161d09c
--- /dev/null
+++ b/search/functions_c.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['sizedbytearray',['sizedByteArray',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a81a5c2d7ab36e913cc16d9499aabe078',1,'com.google.flatbuffers.FlatBufferBuilder.sizedByteArray(int start, int length)'],['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aa636cf5190524c43212b6d96239d7672',1,'com.google.flatbuffers.FlatBufferBuilder.sizedByteArray()'],['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a967e7dc8f051d4e73b3155e3b281d7b4',1,'Google\FlatBuffers\FlatbufferBuilder\sizedByteArray()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#abfd2f4e19cf51f62290a0272683f23b2',1,'FlatBuffers.FlatBufferBuilder.SizedByteArray()']]],
+  ['sizedinputstream',['sizedInputStream',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#ab8fc86fe501b182b4a1a50fcdbcb3e6b',1,'com::google::flatbuffers::FlatBufferBuilder']]]
+];
diff --git a/search/pages_0.js b/search/pages_0.js
index 2dcef58da5645b9562e51efa3d384346b7d1952e..27d18b32af94e4606db60b2822d565a2a20e2dc7 100644
--- a/search/pages_0.js
+++ b/search/pages_0.js
@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['benchmarks',['Benchmarks',['../flatbuffers_benchmarks.html',1,'']]],
   ['building',['Building',['../flatbuffers_guide_building.html',1,'']]]
 ];
diff --git a/search/pages_1.js b/search/pages_1.js
index f545da165bd8bb70ecd831d8f96b2fdbf4d91e45..488e31e4619caf27548613f0a9ba42a9e8707181 100644
--- a/search/pages_1.js
+++ b/search/pages_1.js
@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['contributing',['Contributing',['../contributing.html',1,'']]]
+  ['contributing',['Contributing',['../contributing.html',1,'']]],
+  ['c_2b_2b_20benchmarks',['C++ Benchmarks',['../flatbuffers_benchmarks.html',1,'']]]
 ];
diff --git a/search/search.js b/search/search.js
index a057140c822a2a2f009f142f6428b8a7161f7af5..609aad5ad0f77af056ac51222531133fe134ee83 100644
--- a/search/search.js
+++ b/search/search.js
@@ -7,11 +7,11 @@
 
 var indexSectionsWithContent =
 {
-  0: "$_abcdefgijkoprstuvw",
-  1: "adfiosv",
+  0: "$_abcdefghijknoprstuvw",
+  1: "abdfhiosv",
   2: "f",
   3: "f",
-  4: "_acdefgirs",
+  4: "_acdefginoprs",
   5: "$abcdfk",
   6: "df",
   7: "cgjp",