From c752f0a2bfb1df2bcca1dcbf088306a3a7a0a3da Mon Sep 17 00:00:00 2001
From: Wouter van Oortmerssen <wvo@google.com>
Date: Fri, 16 Jun 2017 16:17:38 -0700
Subject: [PATCH] Updated docs for 1.7.0

---
 _flat_buffer_builder_8cs.html                 |    2 +-
 _flat_buffer_builder_8java.html               |    2 +-
 _flatbuffer_builder_8php.html                 |    2 +-
 annotated.html                                |   19 +-
 annotated.js                                  |   14 +-
 ...ffers_1_1_flat_buffer_builder-members.html |    3 +-
 ..._flat_buffers_1_1_flat_buffer_builder.html |    3 +-
 ...uffers_1_1_flatbuffer_builder-members.html |    3 +-
 ...1_flat_buffers_1_1_flatbuffer_builder.html |    3 +-
 ...ffers_1_1_flat_buffer_builder-members.html |    3 +-
 ..._1flatbuffers_1_1_flat_buffer_builder.html |    3 +-
 classes.html                                  |   29 +-
 classflatbuffers_1_1_allocator-members.html   |  149 +
 classflatbuffers_1_1_allocator.html           |  170 +
 classflatbuffers_1_1_allocator.js             |    7 +
 classflatbuffers_1_1_allocator.png            |  Bin 0 -> 710 bytes
 ...buffers_1_1_default_allocator-members.html |  150 +
 classflatbuffers_1_1_default_allocator.html   |  178 +
 classflatbuffers_1_1_default_allocator.js     |    6 +
 classflatbuffers_1_1_default_allocator.png    |  Bin 0 -> 704 bytes
 ...atbuffers_1_1_detached_buffer-members.html |  162 +
 classflatbuffers_1_1_detached_buffer.html     |  204 +
 classflatbuffers_1_1_detached_buffer.js       |   20 +
 ...ffers_1_1_flat_buffer_builder-members.html |   69 +-
 classflatbuffers_1_1_flat_buffer_builder.html |  256 +-
 classflatbuffers_1_1_flat_buffer_builder.js   |   24 +-
 classflatbuffers_1_1_vector-members.html      |  171 +
 classflatbuffers_1_1_vector.html              |  244 +
 classflatbuffers_1_1_vector.js                |   29 +
 ...flatbuffers_1_1_vector_of_any-members.html |  150 +
 classflatbuffers_1_1_vector_of_any.html       |  168 +
 classflatbuffers_1_1_vector_of_any.js         |    8 +
 ...atbuffers_1_1vector__downward-members.html |  163 +
 classflatbuffers_1_1vector__downward.html     |  204 +
 classflatbuffers_1_1vector__downward.js       |   21 +
 contributing.html                             |    2 +-
 dir_05194b7bb14e4bdbd759acf3e4294839.html     |    2 +-
 dir_0e37bed226164927aa2c526e48e3c9af.html     |    2 +-
 dir_1036070c9379c90b9865e1585bb57938.html     |    2 +-
 dir_2867b8401105090ba43035c8b1fd9c0c.html     |    2 +-
 dir_427baa8a9a5be237f298d4545d0d1ce2.html     |    2 +-
 dir_4d44a7834a0220e3079d88886922def6.html     |    4 +-
 dir_6f01889fa69585f5458dd2f93b8129fa.html     |    2 +-
 dir_7837fde3ab9c1fb2fc5be7b717af8d79.html     |    2 +-
 dir_8a22873406ddef3ffbbc0bacea2033ba.html     |    2 +-
 dir_93c6ba7fb77bae0709fae89c9c13b44a.html     |    2 +-
 dir_aa1ba5078724e0ea09d9b49b3a016128.html     |    2 +-
 dir_bebd57e0257eca849e35e7c4620d27be.html     |    2 +-
 dir_d44c64559bbebec7f509842c48db8b23.html     |    2 +-
 flatbuffers_8h_source.html                    | 4100 +++++++++--------
 flatbuffers_8js.html                          |    2 +-
 flatbuffers_benchmarks.html                   |    2 +-
 flatbuffers_grammar.html                      |    2 +-
 flatbuffers_grpc_guide_use_cpp.html           |  322 ++
 flatbuffers_guide_building.html               |    2 +-
 flatbuffers_guide_tutorial.html               |   19 +-
 flatbuffers_guide_use_c.html                  |    2 +-
 flatbuffers_guide_use_cpp.html                |    4 +-
 flatbuffers_guide_use_go.html                 |    2 +-
 flatbuffers_guide_use_java_c-sharp.html       |    2 +-
 flatbuffers_guide_use_javascript.html         |    2 +-
 flatbuffers_guide_use_php.html                |    2 +-
 flatbuffers_guide_use_python.html             |    2 +-
 flatbuffers_guide_using_schema_compiler.html  |    2 +-
 flatbuffers_guide_writing_schema.html         |    3 +-
 flatbuffers_internals.html                    |    2 +-
 flatbuffers_support.html                      |    2 +-
 flatbuffers_white_paper.html                  |    2 +-
 flexbuffers.html                              |    5 +-
 functions.html                                |   12 +-
 functions_func.html                           |   12 +-
 functions_prop.html                           |    3 +-
 functions_vars.html                           |    3 +-
 group__flatbuffers__cpp__api.html             |    2 +-
 group__flatbuffers__cpp__api.js               |   31 +-
 group__flatbuffers__csharp__api.html          |    2 +-
 group__flatbuffers__go__api.html              |    2 +-
 group__flatbuffers__java__api.html            |    2 +-
 group__flatbuffers__javascript__api.html      |    2 +-
 group__flatbuffers__php__api.html             |    2 +-
 group__flatbuffers__python__api.html          |    2 +-
 hierarchy.html                                |  165 +
 hierarchy.js                                  |   24 +
 index.html                                    |    2 +-
 md__go_api.html                               |    2 +-
 modules.html                                  |    2 +-
 namespace_flat_buffers.html                   |    2 +-
 navtree.js                                    |   11 +-
 navtreeindex0.js                              |  206 +-
 navtreeindex1.js                              |   75 +
 search/all_10.js                              |    9 +-
 search/all_11.js                              |   10 +-
 search/all_12.html                            |   26 +
 search/all_12.js                              |    8 +
 search/all_13.html                            |   26 +
 search/all_13.js                              |    4 +
 search/all_2.js                               |    9 +-
 search/all_5.js                               |    6 +-
 search/all_7.js                               |   10 +-
 search/all_9.js                               |    3 +
 search/all_c.js                               |    4 +-
 search/all_d.js                               |    4 +-
 search/all_e.js                               |    3 +-
 search/all_f.js                               |    4 +-
 search/classes_0.js                           |    4 +-
 search/classes_1.html                         |   26 +
 search/classes_1.js                           |    5 +
 search/classes_2.html                         |   26 +
 search/classes_2.js                           |    7 +
 search/classes_3.html                         |   26 +
 search/classes_3.js                           |    6 +
 search/classes_4.html                         |   26 +
 search/classes_4.js                           |    4 +
 search/classes_5.html                         |   26 +
 search/classes_5.js                           |    5 +
 search/classes_6.html                         |   26 +
 search/classes_6.js                           |    8 +
 search/files_0.js                             |    1 -
 search/functions_1.js                         |    8 +-
 search/functions_5.js                         |    6 +-
 search/functions_8.js                         |    3 +-
 search/functions_9.js                         |    2 +-
 search/pages_6.js                             |    1 +
 search/search.js                              |    4 +-
 ..._buffer_builder_1_1_field_loc-members.html |  147 +
 ...1_1_flat_buffer_builder_1_1_field_loc.html |  158 +
 ...s_1_1_flat_buffer_builder_1_1_field_loc.js |    5 +
 ...der_1_1_string_offset_compare-members.html |  148 +
 ...fer_builder_1_1_string_offset_compare.html |  165 +
 ...uffer_builder_1_1_string_offset_compare.js |    6 +
 ...atbuffers_1_1_indirect_helper-members.html |  149 +
 structflatbuffers_1_1_indirect_helper.html    |  172 +
 structflatbuffers_1_1_indirect_helper.js      |    7 +
 ..._3_01_offset_3_01_t_01_4_01_4-members.html |  149 +
 ...t_helper_3_01_offset_3_01_t_01_4_01_4.html |  172 +
 ...ect_helper_3_01_offset_3_01_t_01_4_01_4.js |    7 +
 ...lper_3_01const_01_t_01_5_01_4-members.html |  149 +
 ...irect_helper_3_01const_01_t_01_5_01_4.html |  172 +
 ...ndirect_helper_3_01const_01_t_01_5_01_4.js |    7 +
 structflatbuffers_1_1_offset-members.html     |  150 +
 structflatbuffers_1_1_offset.html             |  168 +
 structflatbuffers_1_1_offset.js               |    8 +
 structflatbuffers_1_1_string-members.html     |  174 +
 structflatbuffers_1_1_string.html             |  257 ++
 structflatbuffers_1_1_string.js               |    6 +
 structflatbuffers_1_1_string.png              |  Bin 0 -> 668 bytes
 ...atbuffers_1_1_vector_iterator-members.html |  168 +
 structflatbuffers_1_1_vector_iterator.html    |  226 +
 structflatbuffers_1_1_vector_iterator.js      |   26 +
 usergroup0.html                               |    4 +-
 usergroup1.html                               |   31 +-
 usergroup2.html                               |  138 +
 152 files changed, 8687 insertions(+), 2342 deletions(-)
 create mode 100644 classflatbuffers_1_1_allocator-members.html
 create mode 100644 classflatbuffers_1_1_allocator.html
 create mode 100644 classflatbuffers_1_1_allocator.js
 create mode 100644 classflatbuffers_1_1_allocator.png
 create mode 100644 classflatbuffers_1_1_default_allocator-members.html
 create mode 100644 classflatbuffers_1_1_default_allocator.html
 create mode 100644 classflatbuffers_1_1_default_allocator.js
 create mode 100644 classflatbuffers_1_1_default_allocator.png
 create mode 100644 classflatbuffers_1_1_detached_buffer-members.html
 create mode 100644 classflatbuffers_1_1_detached_buffer.html
 create mode 100644 classflatbuffers_1_1_detached_buffer.js
 create mode 100644 classflatbuffers_1_1_vector-members.html
 create mode 100644 classflatbuffers_1_1_vector.html
 create mode 100644 classflatbuffers_1_1_vector.js
 create mode 100644 classflatbuffers_1_1_vector_of_any-members.html
 create mode 100644 classflatbuffers_1_1_vector_of_any.html
 create mode 100644 classflatbuffers_1_1_vector_of_any.js
 create mode 100644 classflatbuffers_1_1vector__downward-members.html
 create mode 100644 classflatbuffers_1_1vector__downward.html
 create mode 100644 classflatbuffers_1_1vector__downward.js
 create mode 100644 flatbuffers_grpc_guide_use_cpp.html
 create mode 100644 hierarchy.html
 create mode 100644 hierarchy.js
 create mode 100644 navtreeindex1.js
 create mode 100644 search/all_12.html
 create mode 100644 search/all_12.js
 create mode 100644 search/all_13.html
 create mode 100644 search/all_13.js
 create mode 100644 search/classes_1.html
 create mode 100644 search/classes_1.js
 create mode 100644 search/classes_2.html
 create mode 100644 search/classes_2.js
 create mode 100644 search/classes_3.html
 create mode 100644 search/classes_3.js
 create mode 100644 search/classes_4.html
 create mode 100644 search/classes_4.js
 create mode 100644 search/classes_5.html
 create mode 100644 search/classes_5.js
 create mode 100644 search/classes_6.html
 create mode 100644 search/classes_6.js
 create mode 100644 structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc-members.html
 create mode 100644 structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html
 create mode 100644 structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.js
 create mode 100644 structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare-members.html
 create mode 100644 structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html
 create mode 100644 structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.js
 create mode 100644 structflatbuffers_1_1_indirect_helper-members.html
 create mode 100644 structflatbuffers_1_1_indirect_helper.html
 create mode 100644 structflatbuffers_1_1_indirect_helper.js
 create mode 100644 structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4-members.html
 create mode 100644 structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html
 create mode 100644 structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.js
 create mode 100644 structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4-members.html
 create mode 100644 structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html
 create mode 100644 structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.js
 create mode 100644 structflatbuffers_1_1_offset-members.html
 create mode 100644 structflatbuffers_1_1_offset.html
 create mode 100644 structflatbuffers_1_1_offset.js
 create mode 100644 structflatbuffers_1_1_string-members.html
 create mode 100644 structflatbuffers_1_1_string.html
 create mode 100644 structflatbuffers_1_1_string.js
 create mode 100644 structflatbuffers_1_1_string.png
 create mode 100644 structflatbuffers_1_1_vector_iterator-members.html
 create mode 100644 structflatbuffers_1_1_vector_iterator.html
 create mode 100644 structflatbuffers_1_1_vector_iterator.js
 create mode 100644 usergroup2.html

diff --git a/_flat_buffer_builder_8cs.html b/_flat_buffer_builder_8cs.html
index 3469a177..cf1c0192 100644
--- a/_flat_buffer_builder_8cs.html
+++ b/_flat_buffer_builder_8cs.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/_flat_buffer_builder_8java.html b/_flat_buffer_builder_8java.html
index d796c656..6c13376b 100644
--- a/_flat_buffer_builder_8java.html
+++ b/_flat_buffer_builder_8java.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/_flatbuffer_builder_8php.html b/_flatbuffer_builder_8php.html
index 1168af88..0df720c7 100644
--- a/_flatbuffer_builder_8php.html
+++ b/_flatbuffer_builder_8php.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/annotated.html b/annotated.html
index 52ce6566..6b443be7 100644
--- a/annotated.html
+++ b/annotated.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
@@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     <ul class="tablist">
       <li class="current"><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>
@@ -133,7 +134,21 @@ $(document).ready(function(){initNavTree('annotated.html','');});
 <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_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_flat_buffer_builder.html" target="_self">FlatBufferBuilder</a></td><td class="desc">Helper class to hold data needed in creation of a FlatBuffer </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>
+<tr id="row_1_2_"><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_detached_buffer.html" target="_self">DetachedBuffer</a></td><td class="desc"></td></tr>
+<tr id="row_1_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_3_" class="arrow" onclick="toggleFolder('1_3_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html" target="_self">FlatBufferBuilder</a></td><td class="desc">Helper class to hold data needed in creation of a FlatBuffer </td></tr>
+<tr id="row_1_3_0_"><td class="entry"><span style="width:48px;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">FieldLoc</a></td><td class="desc"></td></tr>
+<tr id="row_1_3_1_" class="even"><td class="entry"><span style="width:48px;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">StringOffsetCompare</a></td><td class="desc"></td></tr>
+<tr id="row_1_4_"><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_indirect_helper.html" target="_self">IndirectHelper</a></td><td class="desc"></td></tr>
+<tr id="row_1_5_" 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="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html" target="_self">IndirectHelper&lt; const T * &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_1_6_"><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_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html" target="_self">IndirectHelper&lt; Offset&lt; T &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_1_7_" 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="structflatbuffers_1_1_offset.html" target="_self">Offset</a></td><td class="desc"></td></tr>
+<tr id="row_1_8_"><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">String</a></td><td class="desc"></td></tr>
+<tr id="row_1_9_" 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_vector.html" target="_self">Vector</a></td><td class="desc"></td></tr>
+<tr id="row_1_10_"><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_1vector__downward.html" target="_self">vector_downward</a></td><td class="desc"></td></tr>
+<tr id="row_1_11_" 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="structflatbuffers_1_1_vector_iterator.html" target="_self">VectorIterator</a></td><td class="desc"></td></tr>
+<tr id="row_1_12_"><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_vector_of_any.html" target="_self">VectorOfAny</a></td><td class="desc"></td></tr>
 <tr id="row_2_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespace_flat_buffers.html" target="_self">FlatBuffers</a></td><td class="desc"></td></tr>
 <tr id="row_2_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="class_flat_buffers_1_1_flat_buffer_builder.html" target="_self">FlatBufferBuilder</a></td><td class="desc">Responsible for building up and accessing a FlatBuffer formatted byte array (via ByteBuffer) </td></tr>
 <tr id="row_3_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_3_" class="arrow" onclick="toggleFolder('3_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>Google</b></td><td class="desc"></td></tr>
diff --git a/annotated.js b/annotated.js
index c5c2cfbd..68d3e7f8 100644
--- a/annotated.js
+++ b/annotated.js
@@ -8,7 +8,19 @@ var annotated =
       ] ]
     ] ],
     [ "flatbuffers", null, [
-      [ "FlatBufferBuilder", "classflatbuffers_1_1_flat_buffer_builder.html", "classflatbuffers_1_1_flat_buffer_builder" ]
+      [ "Allocator", "classflatbuffers_1_1_allocator.html", "classflatbuffers_1_1_allocator" ],
+      [ "DefaultAllocator", "classflatbuffers_1_1_default_allocator.html", "classflatbuffers_1_1_default_allocator" ],
+      [ "DetachedBuffer", "classflatbuffers_1_1_detached_buffer.html", "classflatbuffers_1_1_detached_buffer" ],
+      [ "FlatBufferBuilder", "classflatbuffers_1_1_flat_buffer_builder.html", "classflatbuffers_1_1_flat_buffer_builder" ],
+      [ "IndirectHelper", "structflatbuffers_1_1_indirect_helper.html", "structflatbuffers_1_1_indirect_helper" ],
+      [ "IndirectHelper< const T * >", "structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html", "structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4" ],
+      [ "IndirectHelper< Offset< T > >", "structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html", "structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4" ],
+      [ "Offset", "structflatbuffers_1_1_offset.html", "structflatbuffers_1_1_offset" ],
+      [ "String", "structflatbuffers_1_1_string.html", "structflatbuffers_1_1_string" ],
+      [ "Vector", "classflatbuffers_1_1_vector.html", "classflatbuffers_1_1_vector" ],
+      [ "vector_downward", "classflatbuffers_1_1vector__downward.html", "classflatbuffers_1_1vector__downward" ],
+      [ "VectorIterator", "structflatbuffers_1_1_vector_iterator.html", "structflatbuffers_1_1_vector_iterator" ],
+      [ "VectorOfAny", "classflatbuffers_1_1_vector_of_any.html", "classflatbuffers_1_1_vector_of_any" ]
     ] ],
     [ "FlatBuffers", "namespace_flat_buffers.html", "namespace_flat_buffers" ],
     [ "Google", null, [
diff --git a/class_flat_buffers_1_1_flat_buffer_builder-members.html b/class_flat_buffers_1_1_flat_buffer_builder-members.html
index 878d3cd5..8235f0b3 100644
--- a/class_flat_buffers_1_1_flat_buffer_builder-members.html
+++ b/class_flat_buffers_1_1_flat_buffer_builder-members.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
@@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     <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>
diff --git a/class_flat_buffers_1_1_flat_buffer_builder.html b/class_flat_buffers_1_1_flat_buffer_builder.html
index eabe34ae..5dc92209 100644
--- a/class_flat_buffers_1_1_flat_buffer_builder.html
+++ b/class_flat_buffers_1_1_flat_buffer_builder.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
@@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     <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>
diff --git a/class_google_1_1_flat_buffers_1_1_flatbuffer_builder-members.html b/class_google_1_1_flat_buffers_1_1_flatbuffer_builder-members.html
index 6b4b639a..77174bb5 100644
--- a/class_google_1_1_flat_buffers_1_1_flatbuffer_builder-members.html
+++ b/class_google_1_1_flat_buffers_1_1_flatbuffer_builder-members.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
@@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     <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>
diff --git a/class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html b/class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html
index 25352492..2c55be20 100644
--- a/class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html
+++ b/class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
@@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     <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>
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 224f928f..d10f78ee 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
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
@@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     <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>
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 12b8d4c9..d55bcc11 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
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
@@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     <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>
diff --git a/classes.html b/classes.html
index 2ad5a490..ef4c03a5 100644
--- a/classes.html
+++ b/classes.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
@@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     <ul class="tablist">
       <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
       <li class="current"><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>
@@ -126,15 +127,27 @@ $(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_F">F</a></div>
+<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>
 <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_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="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="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></tr>
-<tr><td valign="top"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> (flatbuffers)&#160;&#160;&#160;</td><td></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></td><td></td></tr>
-<tr><td></td><td></td><td></td></tr>
+<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="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>
+</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></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></td><td></td><td></td><td></td><td></td></tr>
 </table>
-<div class="qindex"><a class="qindex" href="#letter_F">F</a></div>
+<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><!-- contents -->
 </div><!-- doc-content -->
 <!-- Google Analytics -->
diff --git a/classflatbuffers_1_1_allocator-members.html b/classflatbuffers_1_1_allocator-members.html
new file mode 100644
index 00000000..d2b4a945
--- /dev/null
+++ b/classflatbuffers_1_1_allocator-members.html
@@ -0,0 +1,149 @@
+<!-- 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('classflatbuffers_1_1_allocator.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">flatbuffers::Allocator Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocate</b>(size_t size)=0 (defined in <a class="el" href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>deallocate</b>(uint8_t *p, size_t size)=0 (defined in <a class="el" href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reallocate_downward</b>(uint8_t *old_p, size_t old_size, size_t new_size) (defined in <a class="el" href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~Allocator</b>() (defined in <a class="el" href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</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/classflatbuffers_1_1_allocator.html b/classflatbuffers_1_1_allocator.html
new file mode 100644
index 00000000..b716b469
--- /dev/null
+++ b/classflatbuffers_1_1_allocator.html
@@ -0,0 +1,170 @@
+<!-- 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: flatbuffers::Allocator 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('classflatbuffers_1_1_allocator.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="classflatbuffers_1_1_allocator-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">flatbuffers::Allocator Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Inheritance diagram for flatbuffers::Allocator:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="classflatbuffers_1_1_allocator.png" usemap="#flatbuffers::Allocator_map" alt=""/>
+  <map id="flatbuffers::Allocator_map" name="flatbuffers::Allocator_map">
+<area href="classflatbuffers_1_1_default_allocator.html" alt="flatbuffers::DefaultAllocator" shape="rect" coords="0,56,166,80"/>
+</map>
+ </div></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:afbce153366f4087f2876384ecc9d0674"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbce153366f4087f2876384ecc9d0674"></a>
+virtual uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>allocate</b> (size_t size)=0</td></tr>
+<tr class="separator:afbce153366f4087f2876384ecc9d0674"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab72efb51f31b9238373f5922ac282a89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab72efb51f31b9238373f5922ac282a89"></a>
+virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>deallocate</b> (uint8_t *p, size_t size)=0</td></tr>
+<tr class="separator:ab72efb51f31b9238373f5922ac282a89"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae94248cd85a8abf1aa5c0cc957d1cb69"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae94248cd85a8abf1aa5c0cc957d1cb69"></a>
+virtual uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>reallocate_downward</b> (uint8_t *old_p, size_t old_size, size_t new_size)</td></tr>
+<tr class="separator:ae94248cd85a8abf1aa5c0cc957d1cb69"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="flatbuffers_8h_source.html">flatbuffers.h</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/classflatbuffers_1_1_allocator.js b/classflatbuffers_1_1_allocator.js
new file mode 100644
index 00000000..9c092d7b
--- /dev/null
+++ b/classflatbuffers_1_1_allocator.js
@@ -0,0 +1,7 @@
+var classflatbuffers_1_1_allocator =
+[
+    [ "~Allocator", "classflatbuffers_1_1_allocator.html#a96abc6f31fe94e932d7f4daac10388b9", null ],
+    [ "allocate", "classflatbuffers_1_1_allocator.html#afbce153366f4087f2876384ecc9d0674", null ],
+    [ "deallocate", "classflatbuffers_1_1_allocator.html#ab72efb51f31b9238373f5922ac282a89", null ],
+    [ "reallocate_downward", "classflatbuffers_1_1_allocator.html#ae94248cd85a8abf1aa5c0cc957d1cb69", null ]
+];
\ No newline at end of file
diff --git a/classflatbuffers_1_1_allocator.png b/classflatbuffers_1_1_allocator.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd6481f772c710c98dd5a3a48ce79311e2953edf
GIT binary patch
literal 710
zcmeAS@N?(olHy`uVBq!ia0vp^%YZn5gBeIJnfuQXNJ#|vgt-3y{~ySF@#br3|Dg#$
z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~g?hR;hEy=VotxXgL_vV9yFKOKe}6mH
zDdDl3uTQtwc`xEI$BipyCZDGYI91rQG;Du7iy>@>T7&5KS+T9T_uDo`mop{!zMFGj
zhK=D)(dwP$cQd}-Wl&cAwg2j!{?%_LUEbF3d-C*>wm)-%XC;;1d~4dDcy?{wp9P;3
zW`7Oa^ZT1u!?&!N_h#M7-+unG>;9RY46>JhUp{@;ENUOumg~xAzhsv#p85MU({`z?
z$=76>|80H7|2j-vZq*{)&z{8_UoeRODa)UCm9=Fa`>fY{ISUS6c0KPJr?q#^^0Q9z
ztg&Ky&)whYGj-nMt?QX}KFE7BXvYX2;JVJT;gBignj8E#fL^j@xK_h(?|gYion8FH
zpR%)NKQ*tY>s%IY)gZf$Godw`DdHj2!??MBj?XeYmT^Y?m_)9k*QMKqzMh*7nW~=b
zS|!<Z=;of<)%@<|PLsr1{^rZ*uZ&AS@%gjXtwn#Y-1(hn@;lG-m1phQhRQdBn^GQ^
z&(ah>sk%Iuf11!FPu`!F%QbzkrL0kV#Zyox7j!&%b!AI-o^M0)hbd>PwC~kct9l$Z
zWs7Ke)9kZYT-jSGth-Lw(ec%cO*ebyN9CFB7C)w`b~c9V`mCiPr=)aE&NKL~Df=Xq
z@X?=la(vdm4RX2DcHOm`_WtUk?T^*YmfoBH?yQ<>cd4{i?N0OEb88k>?zCMeW-DH~
z@=MV?Gw#^)^UA)SE8cut<alGjExuXZUgtk=yZobnsfy&IS(8#)v%MyXuG91k%K?VO
dkE(wR(=IEmH@vKU4w&c|JYD@<);T3K0RT2TP^SO@

literal 0
HcmV?d00001

diff --git a/classflatbuffers_1_1_default_allocator-members.html b/classflatbuffers_1_1_default_allocator-members.html
new file mode 100644
index 00000000..02755b6f
--- /dev/null
+++ b/classflatbuffers_1_1_default_allocator-members.html
@@ -0,0 +1,150 @@
+<!-- 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('classflatbuffers_1_1_default_allocator.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">flatbuffers::DefaultAllocator Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classflatbuffers_1_1_default_allocator.html">flatbuffers::DefaultAllocator</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocate</b>(size_t size) FLATBUFFERS_OVERRIDE (defined in <a class="el" href="classflatbuffers_1_1_default_allocator.html">flatbuffers::DefaultAllocator</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_default_allocator.html">flatbuffers::DefaultAllocator</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>deallocate</b>(uint8_t *p, size_t) FLATBUFFERS_OVERRIDE (defined in <a class="el" href="classflatbuffers_1_1_default_allocator.html">flatbuffers::DefaultAllocator</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_default_allocator.html">flatbuffers::DefaultAllocator</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>instance</b>() (defined in <a class="el" href="classflatbuffers_1_1_default_allocator.html">flatbuffers::DefaultAllocator</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_default_allocator.html">flatbuffers::DefaultAllocator</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reallocate_downward</b>(uint8_t *old_p, size_t old_size, size_t new_size) (defined in <a class="el" href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~Allocator</b>() (defined in <a class="el" href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</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/classflatbuffers_1_1_default_allocator.html b/classflatbuffers_1_1_default_allocator.html
new file mode 100644
index 00000000..ea9eb4bf
--- /dev/null
+++ b/classflatbuffers_1_1_default_allocator.html
@@ -0,0 +1,178 @@
+<!-- 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: flatbuffers::DefaultAllocator 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('classflatbuffers_1_1_default_allocator.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="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="classflatbuffers_1_1_default_allocator-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">flatbuffers::DefaultAllocator Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Inheritance diagram for flatbuffers::DefaultAllocator:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="classflatbuffers_1_1_default_allocator.png" usemap="#flatbuffers::DefaultAllocator_map" alt=""/>
+  <map id="flatbuffers::DefaultAllocator_map" name="flatbuffers::DefaultAllocator_map">
+<area href="classflatbuffers_1_1_allocator.html" alt="flatbuffers::Allocator" shape="rect" coords="0,0,166,24"/>
+</map>
+ </div></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:a9ddbc3a812e35a46a36b37baa17503d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ddbc3a812e35a46a36b37baa17503d0"></a>
+virtual uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>allocate</b> (size_t size) FLATBUFFERS_OVERRIDE</td></tr>
+<tr class="separator:a9ddbc3a812e35a46a36b37baa17503d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69f1e08a9f98cd86d04a0bc5ad08b187"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69f1e08a9f98cd86d04a0bc5ad08b187"></a>
+virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>deallocate</b> (uint8_t *p, size_t) FLATBUFFERS_OVERRIDE</td></tr>
+<tr class="separator:a69f1e08a9f98cd86d04a0bc5ad08b187"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_methods_classflatbuffers_1_1_allocator"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classflatbuffers_1_1_allocator')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classflatbuffers_1_1_allocator.html">flatbuffers::Allocator</a></td></tr>
+<tr class="memitem:ae94248cd85a8abf1aa5c0cc957d1cb69 inherit pub_methods_classflatbuffers_1_1_allocator"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae94248cd85a8abf1aa5c0cc957d1cb69"></a>
+virtual uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>reallocate_downward</b> (uint8_t *old_p, size_t old_size, size_t new_size)</td></tr>
+<tr class="separator:ae94248cd85a8abf1aa5c0cc957d1cb69 inherit pub_methods_classflatbuffers_1_1_allocator"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a57604c8749237a162bb22fcea09482ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57604c8749237a162bb22fcea09482ef"></a>
+static <a class="el" href="classflatbuffers_1_1_default_allocator.html">DefaultAllocator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>instance</b> ()</td></tr>
+<tr class="separator:a57604c8749237a162bb22fcea09482ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="flatbuffers_8h_source.html">flatbuffers.h</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/classflatbuffers_1_1_default_allocator.js b/classflatbuffers_1_1_default_allocator.js
new file mode 100644
index 00000000..b69e7b84
--- /dev/null
+++ b/classflatbuffers_1_1_default_allocator.js
@@ -0,0 +1,6 @@
+var classflatbuffers_1_1_default_allocator =
+[
+    [ "allocate", "classflatbuffers_1_1_default_allocator.html#a9ddbc3a812e35a46a36b37baa17503d0", null ],
+    [ "deallocate", "classflatbuffers_1_1_default_allocator.html#a69f1e08a9f98cd86d04a0bc5ad08b187", null ],
+    [ "instance", "classflatbuffers_1_1_default_allocator.html#a57604c8749237a162bb22fcea09482ef", null ]
+];
\ No newline at end of file
diff --git a/classflatbuffers_1_1_default_allocator.png b/classflatbuffers_1_1_default_allocator.png
new file mode 100644
index 0000000000000000000000000000000000000000..341d7d0cc8370aefc2e80cd1a59fef258e7b68c4
GIT binary patch
literal 704
zcmeAS@N?(olHy`uVBq!ia0vp^%YZn5gBeIJnfuQXNJ#|vgt-3y{~ySF@#br3|Dg#$
z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~`FpxJhEy=Vo%?#-V+9_zcKx9H|0ix|
zJ!CuQ#hP%ht<#Kr4<Gg6_4{8WbNpkCh04p9JC><LKAbfv<!GESOY1Lz^$V?)JhOwI
z+Z0PEct&rVHD5yd?7rwpZlBiw**;4#ZFNoO%HEUSN7}y336fg6>&>@W&o?{^vp<#K
zIcvw{vsI_>)mE!|yuE64cGj)!$DhAjmLC>0!D`vh%TL}(=q~rlS|2^@eeBJwW&idZ
zT<i9BhUxJI^=p3~-gmXNeO1QknoBV`yHsL7+}<3y$~)-A&V@VeW=|?Pc-Pn8b)L5E
ze*f9McHCC^Rk8bvXKL9V&0g+(iRu65DJt4A!IRb$_<C+SWU6|yYx}c8nd6TcH#}qg
zP_xhZ^VeTo=igtbiLPsYK0TvqDf5kovlzm5s5OYL<4kDHW{SYgJzBp;(uw1IJHv;P
z7~un4*I70!$|}41<)7J${kxSJxPvVD9yeA^o$&Ot)~!W*chu$qgGqXU`ZrVNXB*Q`
z?0NLwBw25fx7Y3EwrVPZ(wB<8g6CXMS);a!MPvT*D?e{!&3ia2T6n=L-kWQ-zqz|T
zoQdbUM1tTZexu&F9-Xq!%kq^379^iaGp@_JnN=oyOjYe{2-o#lJ3~In>6&;qsD<sW
z;N9>e@bIJQv+Uov&tCd&OaIgAtuNp1@GPGDeRuk1&yz{_+q~lEoqeYgpAje5zZwyS
z>)y{R`+ll=v$e=`?u9q_W_5e{zutEG$9&ZWMWisPiCd=F@}cA(gIcR{Tc@hJ4KTSe
Nc)I$ztaD0e0s!&=Qv(11

literal 0
HcmV?d00001

diff --git a/classflatbuffers_1_1_detached_buffer-members.html b/classflatbuffers_1_1_detached_buffer-members.html
new file mode 100644
index 00000000..a0112a17
--- /dev/null
+++ b/classflatbuffers_1_1_detached_buffer-members.html
@@ -0,0 +1,162 @@
+<!-- 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('classflatbuffers_1_1_detached_buffer.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">flatbuffers::DetachedBuffer Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classflatbuffers_1_1_detached_buffer.html">flatbuffers::DetachedBuffer</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>buf_</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>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"><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>
+  <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>
+</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/classflatbuffers_1_1_detached_buffer.html b/classflatbuffers_1_1_detached_buffer.html
new file mode 100644
index 00000000..f19dc398
--- /dev/null
+++ b/classflatbuffers_1_1_detached_buffer.html
@@ -0,0 +1,204 @@
+<!-- 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: flatbuffers::DetachedBuffer 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('classflatbuffers_1_1_detached_buffer.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="#pub-attribs">Public Attributes</a> &#124;
+<a href="classflatbuffers_1_1_detached_buffer-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">flatbuffers::DetachedBuffer Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<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:aa4805376aebda238661d5ac1107bac9a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4805376aebda238661d5ac1107bac9a"></a>
+const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>data</b> () const </td></tr>
+<tr class="separator:aa4805376aebda238661d5ac1107bac9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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: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>
+<tr class="memitem:aebfcd21e5ce5a906684d573e59503556"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aebfcd21e5ce5a906684d573e59503556"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>DetachedBuffer</b> (<a class="el" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;&amp;other)</td></tr>
+<tr class="separator:aebfcd21e5ce5a906684d573e59503556"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aef5440a10f42f2c067f2857dc74fc15b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef5440a10f42f2c067f2857dc74fc15b"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>FLATBUFFERS_DELETE_FUNC</b> (<a class="el" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a>(const <a class="el" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;other)) FLATBUFFERS_DELETE_FUNC(<a class="el" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> &amp;operator</td></tr>
+<tr class="separator:aef5440a10f42f2c067f2857dc74fc15b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaede53d7b7efc586eaeca5688619acf1"><td class="memTemplParams" colspan="2"><a class="anchor" id="aaede53d7b7efc586eaeca5688619acf1"></a>
+template&lt;class T &gt; </td></tr>
+<tr class="memitem:aaede53d7b7efc586eaeca5688619acf1"><td class="memTemplItemLeft" align="right" valign="top">const T *&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetRoot</b> () const </td></tr>
+<tr class="separator:aaede53d7b7efc586eaeca5688619acf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a030d603f1f72c17b515a1e8621a5482c"><td class="memTemplParams" colspan="2"><a class="anchor" id="a030d603f1f72c17b515a1e8621a5482c"></a>
+template&lt;class T &gt; </td></tr>
+<tr class="memitem:a030d603f1f72c17b515a1e8621a5482c"><td class="memTemplItemLeft" align="right" valign="top">T *&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetRoot</b> ()</td></tr>
+<tr class="separator:a030d603f1f72c17b515a1e8621a5482c"><td class="memSeparator" colspan="2">&#160;</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: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>
+<tr class="memitem:a9056cfb89cf255efda378a5155c26c2b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9056cfb89cf255efda378a5155c26c2b"></a>
+template&lt;class T &gt; </td></tr>
+<tr class="memitem:a9056cfb89cf255efda378a5155c26c2b"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Verify</b> () const </td></tr>
+<tr class="separator:a9056cfb89cf255efda378a5155c26c2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a7e6327751066fe086a18b881ec3a07ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e6327751066fe086a18b881ec3a07ce"></a>
+uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>buf_</b></td></tr>
+<tr class="separator:a7e6327751066fe086a18b881ec3a07ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a63229682fea7e65b8ecd0678d5d1996b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63229682fea7e65b8ecd0678d5d1996b"></a>
+uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>cur_</b></td></tr>
+<tr class="separator:a63229682fea7e65b8ecd0678d5d1996b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab3fb53f0c57d06cd5848cfb59fd656f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3fb53f0c57d06cd5848cfb59fd656f2"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>own_allocator_</b></td></tr>
+<tr class="separator:ab3fb53f0c57d06cd5848cfb59fd656f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeabe28bec13ac0fe7465142969d467d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeabe28bec13ac0fe7465142969d467d7"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>reserved_</b></td></tr>
+<tr class="separator:aeabe28bec13ac0fe7465142969d467d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0f138004d6acacc5aab3ce69bf5a8ebd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f138004d6acacc5aab3ce69bf5a8ebd"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>size_</b></td></tr>
+<tr class="separator:a0f138004d6acacc5aab3ce69bf5a8ebd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="flatbuffers_8h_source.html">flatbuffers.h</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/classflatbuffers_1_1_detached_buffer.js b/classflatbuffers_1_1_detached_buffer.js
new file mode 100644
index 00000000..9e7adcd6
--- /dev/null
+++ b/classflatbuffers_1_1_detached_buffer.js
@@ -0,0 +1,20 @@
+var classflatbuffers_1_1_detached_buffer =
+[
+    [ "DetachedBuffer", "classflatbuffers_1_1_detached_buffer.html#a587b562bcee4d600272ae25845e9f197", null ],
+    [ "DetachedBuffer", "classflatbuffers_1_1_detached_buffer.html#abae2caaa17d721325235755e6a4feea0", null ],
+    [ "DetachedBuffer", "classflatbuffers_1_1_detached_buffer.html#aebfcd21e5ce5a906684d573e59503556", null ],
+    [ "~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 ],
+    [ "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 ],
+    [ "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 ],
+    [ "cur_", "classflatbuffers_1_1_detached_buffer.html#a63229682fea7e65b8ecd0678d5d1996b", null ],
+    [ "own_allocator_", "classflatbuffers_1_1_detached_buffer.html#ab3fb53f0c57d06cd5848cfb59fd656f2", null ],
+    [ "reserved_", "classflatbuffers_1_1_detached_buffer.html#aeabe28bec13ac0fe7465142969d467d7", null ],
+    [ "size_", "classflatbuffers_1_1_detached_buffer.html#a0f138004d6acacc5aab3ce69bf5a8ebd", null ]
+];
\ No newline at end of file
diff --git a/classflatbuffers_1_1_flat_buffer_builder-members.html b/classflatbuffers_1_1_flat_buffer_builder-members.html
index 9a5eabd9..e48c724d 100644
--- a/classflatbuffers_1_1_flat_buffer_builder-members.html
+++ b/classflatbuffers_1_1_flat_buffer_builder-members.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
@@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     <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>
@@ -129,20 +130,22 @@ $(document).ready(function(){initNavTree('classflatbuffers_1_1_flat_buffer_build
 
 <p>This is the complete list of members for <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">flatbuffers::FlatBufferBuilder</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412">Clear</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#ab478a645216d2d613fc7b7c29b0ff9d1">CreateSharedString</a>(const char *str, 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#a3eb68613e5883dc4b8fff6cf7d1223d7">CreateSharedString</a>(const char *str)</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#a10e8ec7d1c8fbdc21b1c7047bbbe38d9">CreateSharedString</a>(const std::string &amp;str)</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#a840b769fbb4148f97d3eed266e4690c3">CreateSharedString</a>(const String *str)</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#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(const char *str, 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#aad93d113ac24e86ed04b5236b3f4c0c5">CreateString</a>(const char *str)</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#a8c3af55e64f5cda9aefa38ac5287ef9f">CreateString</a>(const std::string &amp;str)</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#ac0b6a1c5d949f20ad84367fc0f9e1506">CreateString</a>(const String *str)</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#ab77d800e77fa76bc758a6c399fd37685">CreateString</a>(const T &amp;str)</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#a43f51ba9c8f4f24ea2247a3979d095b8">CreateStruct</a>(const T &amp;structobj)</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#ac2b96292fa0fb1534fe7fd218a094d0c">CreateUninitializedVector</a>(size_t len, size_t elemsize, uint8_t **buf)</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#a2305b63d367845972b51669dd995cc50">CreateUninitializedVector</a>(size_t len, T **buf)</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#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</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 bgcolor="#f0f0f0" class="even"><td class="entry"><b>buf_</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><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412">Clear</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#ab478a645216d2d613fc7b7c29b0ff9d1">CreateSharedString</a>(const char *str, 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#a3eb68613e5883dc4b8fff6cf7d1223d7">CreateSharedString</a>(const char *str)</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#a10e8ec7d1c8fbdc21b1c7047bbbe38d9">CreateSharedString</a>(const std::string &amp;str)</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#a840b769fbb4148f97d3eed266e4690c3">CreateSharedString</a>(const String *str)</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#aec6f9df2a0366b540b24822414d92cbe">CreateString</a>(const char *str, 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#aad93d113ac24e86ed04b5236b3f4c0c5">CreateString</a>(const char *str)</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#a8c3af55e64f5cda9aefa38ac5287ef9f">CreateString</a>(const std::string &amp;str)</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#ac0b6a1c5d949f20ad84367fc0f9e1506">CreateString</a>(const String *str)</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#ab77d800e77fa76bc758a6c399fd37685">CreateString</a>(const T &amp;str)</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#a43f51ba9c8f4f24ea2247a3979d095b8">CreateStruct</a>(const T &amp;structobj)</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#ac2b96292fa0fb1534fe7fd218a094d0c">CreateUninitializedVector</a>(size_t len, size_t elemsize, uint8_t **buf)</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#a2305b63d367845972b51669dd995cc50">CreateUninitializedVector</a>(size_t len, T **buf)</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#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</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 bgcolor="#f0f0f0"><td class="entry"><b>CreateVector</b>(const Offset&lt; T &gt; *v, size_t len) (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#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>
@@ -158,17 +161,31 @@ $(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#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 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><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>
-  <tr class="even"><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">Finish</a>(Offset&lt; T &gt; root, const char *file_identifier=nullptr)</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#a7ba8462e408431054c99d25120326220">FinishSizePrefixed</a>(Offset&lt; T &gt; root, const char *file_identifier=nullptr)</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#ac72b54a75e0c329e0ce0b8fab758e256">FlatBufferBuilder</a>(uoffset_t initial_size=1024, const simple_allocator *allocator=nullptr)</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><span class="mlabel">explicit</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a">ForceDefaults</a>(bool fd)</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#aa1ebce1f3f46832946a95952af1e9c2b">GetBufferMinAlignment</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#a8dc35f792179df4ca850492c1796d8b8">GetBufferPointer</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#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><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 class="even"><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><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a21c7f933d7ff1212f2090763ef9f0c44">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>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>
+  <tr><td class="entry"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">Finish</a>(Offset&lt; T &gt; root, const char *file_identifier=nullptr)</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>Finish</b>(uoffset_t root, const char *file_identifier, bool size_prefix) (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><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>finished</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#a7ba8462e408431054c99d25120326220">FinishSizePrefixed</a>(Offset&lt; T &gt; root, const char *file_identifier=nullptr)</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#ae4ab74f53187e6c3e6041d34e01904c4">FlatBufferBuilder</a>(size_t initial_size=1024, Allocator *allocator=nullptr, bool own_allocator=false)</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><span class="mlabel">explicit</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FlatBufferBuilder</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 bgcolor="#f0f0f0"><td class="entry"><b>force_defaults_</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#a16a8fd46b34ad7727406c37b65b6b27a">ForceDefaults</a>(bool fd)</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#aa1ebce1f3f46832946a95952af1e9c2b">GetBufferMinAlignment</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#a8dc35f792179df4ca850492c1796d8b8">GetBufferPointer</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#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>
 </table></div><!-- contents -->
 </div><!-- doc-content -->
diff --git a/classflatbuffers_1_1_flat_buffer_builder.html b/classflatbuffers_1_1_flat_buffer_builder.html
index 1030d1ec..6574d218 100644
--- a/classflatbuffers_1_1_flat_buffer_builder.html
+++ b/classflatbuffers_1_1_flat_buffer_builder.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
@@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     <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>
@@ -126,6 +127,9 @@ $(document).ready(function(){initNavTree('classflatbuffers_1_1_flat_buffer_build
 <a href="#nested-classes">Classes</a> &#124;
 <a href="#pub-methods">Public Member Functions</a> &#124;
 <a href="#pub-static-attribs">Static Public Attributes</a> &#124;
+<a href="#pro-types">Protected Types</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> &#124;
 <a href="classflatbuffers_1_1_flat_buffer_builder-members.html">List of all members</a>  </div>
   <div class="headertitle">
 <div class="title">flatbuffers::FlatBufferBuilder Class Reference<div class="ingroups"><a class="el" href="group__flatbuffers__cpp__api.html">C++ API</a></div></div>  </div>
@@ -140,127 +144,138 @@ $(document).ready(function(){initNavTree('classflatbuffers_1_1_flat_buffer_build
 <div class="textblock"><p>Helper class to hold data needed in creation of a FlatBuffer. </p>
 <p>To serialize data, you typically call one of the <code>Create*()</code> functions in the generated code, which in turn call a sequence of <code>StartTable</code>/ <code>PushElement</code>/<code>AddElement</code>/<code>EndTable</code>, or the builtin <code>CreateString</code>/ <code>CreateVector</code> functions. Do this is depth-first order to build up a tree to the root. <code>Finish()</code> wraps up the buffer ready for transport. </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">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html">FieldLoc</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">StringOffsetCompare</a></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:ae94b94ba71ea0aeb2d9a98c43b713412"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412">Clear</a> ()</td></tr>
 <tr class="memdesc:ae94b94ba71ea0aeb2d9a98c43b713412"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset all the state in this FlatBufferBuilder so it can be reused to construct another buffer.  <a href="#ae94b94ba71ea0aeb2d9a98c43b713412">More...</a><br /></td></tr>
 <tr class="separator:ae94b94ba71ea0aeb2d9a98c43b713412"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab478a645216d2d613fc7b7c29b0ff9d1"><td class="memItemLeft" align="right" valign="top">Offset&lt; String &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1">CreateSharedString</a> (const char *str, size_t len)</td></tr>
+<tr class="memitem:ab478a645216d2d613fc7b7c29b0ff9d1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="structflatbuffers_1_1_string.html">String</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1">CreateSharedString</a> (const char *str, size_t len)</td></tr>
 <tr class="memdesc:ab478a645216d2d613fc7b7c29b0ff9d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store a string in the buffer, which can contain any binary data.  <a href="#ab478a645216d2d613fc7b7c29b0ff9d1">More...</a><br /></td></tr>
 <tr class="separator:ab478a645216d2d613fc7b7c29b0ff9d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3eb68613e5883dc4b8fff6cf7d1223d7"><td class="memItemLeft" align="right" valign="top">Offset&lt; String &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7">CreateSharedString</a> (const char *str)</td></tr>
+<tr class="memitem:a3eb68613e5883dc4b8fff6cf7d1223d7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="structflatbuffers_1_1_string.html">String</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7">CreateSharedString</a> (const char *str)</td></tr>
 <tr class="memdesc:a3eb68613e5883dc4b8fff6cf7d1223d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store a string in the buffer, which null-terminated.  <a href="#a3eb68613e5883dc4b8fff6cf7d1223d7">More...</a><br /></td></tr>
 <tr class="separator:a3eb68613e5883dc4b8fff6cf7d1223d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a10e8ec7d1c8fbdc21b1c7047bbbe38d9"><td class="memItemLeft" align="right" valign="top">Offset&lt; String &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a10e8ec7d1c8fbdc21b1c7047bbbe38d9">CreateSharedString</a> (const std::string &amp;str)</td></tr>
+<tr class="memitem:a10e8ec7d1c8fbdc21b1c7047bbbe38d9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="structflatbuffers_1_1_string.html">String</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a10e8ec7d1c8fbdc21b1c7047bbbe38d9">CreateSharedString</a> (const std::string &amp;str)</td></tr>
 <tr class="memdesc:a10e8ec7d1c8fbdc21b1c7047bbbe38d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store a string in the buffer, which can contain any binary data.  <a href="#a10e8ec7d1c8fbdc21b1c7047bbbe38d9">More...</a><br /></td></tr>
 <tr class="separator:a10e8ec7d1c8fbdc21b1c7047bbbe38d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a840b769fbb4148f97d3eed266e4690c3"><td class="memItemLeft" align="right" valign="top">Offset&lt; String &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3">CreateSharedString</a> (const String *str)</td></tr>
+<tr class="memitem:a840b769fbb4148f97d3eed266e4690c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="structflatbuffers_1_1_string.html">String</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3">CreateSharedString</a> (const <a class="el" href="structflatbuffers_1_1_string.html">String</a> *str)</td></tr>
 <tr class="memdesc:a840b769fbb4148f97d3eed266e4690c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store a string in the buffer, which can contain any binary data.  <a href="#a840b769fbb4148f97d3eed266e4690c3">More...</a><br /></td></tr>
 <tr class="separator:a840b769fbb4148f97d3eed266e4690c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aec6f9df2a0366b540b24822414d92cbe"><td class="memItemLeft" align="right" valign="top">Offset&lt; String &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a> (const char *str, size_t len)</td></tr>
+<tr class="memitem:aec6f9df2a0366b540b24822414d92cbe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="structflatbuffers_1_1_string.html">String</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe">CreateString</a> (const char *str, size_t len)</td></tr>
 <tr class="memdesc:aec6f9df2a0366b540b24822414d92cbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store a string in the buffer, which can contain any binary data.  <a href="#aec6f9df2a0366b540b24822414d92cbe">More...</a><br /></td></tr>
 <tr class="separator:aec6f9df2a0366b540b24822414d92cbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aad93d113ac24e86ed04b5236b3f4c0c5"><td class="memItemLeft" align="right" valign="top">Offset&lt; String &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5">CreateString</a> (const char *str)</td></tr>
+<tr class="memitem:aad93d113ac24e86ed04b5236b3f4c0c5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="structflatbuffers_1_1_string.html">String</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5">CreateString</a> (const char *str)</td></tr>
 <tr class="memdesc:aad93d113ac24e86ed04b5236b3f4c0c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store a string in the buffer, which is null-terminated.  <a href="#aad93d113ac24e86ed04b5236b3f4c0c5">More...</a><br /></td></tr>
 <tr class="separator:aad93d113ac24e86ed04b5236b3f4c0c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8c3af55e64f5cda9aefa38ac5287ef9f"><td class="memItemLeft" align="right" valign="top">Offset&lt; String &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f">CreateString</a> (const std::string &amp;str)</td></tr>
+<tr class="memitem:a8c3af55e64f5cda9aefa38ac5287ef9f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="structflatbuffers_1_1_string.html">String</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f">CreateString</a> (const std::string &amp;str)</td></tr>
 <tr class="memdesc:a8c3af55e64f5cda9aefa38ac5287ef9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store a string in the buffer, which can contain any binary data.  <a href="#a8c3af55e64f5cda9aefa38ac5287ef9f">More...</a><br /></td></tr>
 <tr class="separator:a8c3af55e64f5cda9aefa38ac5287ef9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac0b6a1c5d949f20ad84367fc0f9e1506"><td class="memItemLeft" align="right" valign="top">Offset&lt; String &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506">CreateString</a> (const String *str)</td></tr>
+<tr class="memitem:ac0b6a1c5d949f20ad84367fc0f9e1506"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="structflatbuffers_1_1_string.html">String</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506">CreateString</a> (const <a class="el" href="structflatbuffers_1_1_string.html">String</a> *str)</td></tr>
 <tr class="memdesc:ac0b6a1c5d949f20ad84367fc0f9e1506"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store a string in the buffer, which can contain any binary data.  <a href="#ac0b6a1c5d949f20ad84367fc0f9e1506">More...</a><br /></td></tr>
 <tr class="separator:ac0b6a1c5d949f20ad84367fc0f9e1506"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ab77d800e77fa76bc758a6c399fd37685"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:ab77d800e77fa76bc758a6c399fd37685"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; String &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685">CreateString</a> (const T &amp;str)</td></tr>
+<tr class="memitem:ab77d800e77fa76bc758a6c399fd37685"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="structflatbuffers_1_1_string.html">String</a> &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685">CreateString</a> (const T &amp;str)</td></tr>
 <tr class="memdesc:ab77d800e77fa76bc758a6c399fd37685"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store a string in the buffer, which can contain any binary data.  <a href="#ab77d800e77fa76bc758a6c399fd37685">More...</a><br /></td></tr>
 <tr class="separator:ab77d800e77fa76bc758a6c399fd37685"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a43f51ba9c8f4f24ea2247a3979d095b8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a43f51ba9c8f4f24ea2247a3979d095b8"></a>
 template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a43f51ba9c8f4f24ea2247a3979d095b8"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; const T * &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a43f51ba9c8f4f24ea2247a3979d095b8">CreateStruct</a> (const T &amp;structobj)</td></tr>
+<tr class="memitem:a43f51ba9c8f4f24ea2247a3979d095b8"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; const T * &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a43f51ba9c8f4f24ea2247a3979d095b8">CreateStruct</a> (const T &amp;structobj)</td></tr>
 <tr class="memdesc:a43f51ba9c8f4f24ea2247a3979d095b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a struct by itself, typically to be part of a union. <br /></td></tr>
 <tr class="separator:a43f51ba9c8f4f24ea2247a3979d095b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac2b96292fa0fb1534fe7fd218a094d0c"><td class="memItemLeft" align="right" valign="top">uoffset_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c">CreateUninitializedVector</a> (size_t len, size_t elemsize, uint8_t **buf)</td></tr>
 <tr class="memdesc:ac2b96292fa0fb1534fe7fd218a094d0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specialized version of <code>CreateVector</code> for non-copying use cases.  <a href="#ac2b96292fa0fb1534fe7fd218a094d0c">More...</a><br /></td></tr>
 <tr class="separator:ac2b96292fa0fb1534fe7fd218a094d0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2305b63d367845972b51669dd995cc50"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a2305b63d367845972b51669dd995cc50"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; Vector&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50">CreateUninitializedVector</a> (size_t len, T **buf)</td></tr>
+<tr class="memitem:a2305b63d367845972b51669dd995cc50"><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#a2305b63d367845972b51669dd995cc50">CreateUninitializedVector</a> (size_t len, T **buf)</td></tr>
 <tr class="memdesc:a2305b63d367845972b51669dd995cc50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specialized version of <code>CreateVector</code> for non-copying use cases.  <a href="#a2305b63d367845972b51669dd995cc50">More...</a><br /></td></tr>
 <tr class="separator:a2305b63d367845972b51669dd995cc50"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2cca5c89246a53e80e6ad9487f4c36f3"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a2cca5c89246a53e80e6ad9487f4c36f3"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; Vector&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a> (const T *v, size_t len)</td></tr>
+<tr class="memitem:a2cca5c89246a53e80e6ad9487f4c36f3"><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#a2cca5c89246a53e80e6ad9487f4c36f3">CreateVector</a> (const T *v, size_t len)</td></tr>
 <tr class="memdesc:a2cca5c89246a53e80e6ad9487f4c36f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize an array into a FlatBuffer <code>vector</code>.  <a href="#a2cca5c89246a53e80e6ad9487f4c36f3">More...</a><br /></td></tr>
 <tr class="separator:a2cca5c89246a53e80e6ad9487f4c36f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a44960c5aca0227f960c96a7ed4b881b4"><td class="memTemplParams" colspan="2"><a class="anchor" id="a44960c5aca0227f960c96a7ed4b881b4"></a>
+template&lt;typename T &gt; </td></tr>
+<tr class="memitem:a44960c5aca0227f960c96a7ed4b881b4"><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; <a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; T &gt; &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>CreateVector</b> (const <a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; T &gt; *v, size_t len)</td></tr>
+<tr class="separator:a44960c5aca0227f960c96a7ed4b881b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af715dd24dd37cb0151dc7a980ad0f207"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:af715dd24dd37cb0151dc7a980ad0f207"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; Vector&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207">CreateVector</a> (const std::vector&lt; T &gt; &amp;v)</td></tr>
+<tr class="memitem:af715dd24dd37cb0151dc7a980ad0f207"><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#af715dd24dd37cb0151dc7a980ad0f207">CreateVector</a> (const std::vector&lt; T &gt; &amp;v)</td></tr>
 <tr class="memdesc:af715dd24dd37cb0151dc7a980ad0f207"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize a <code>std::vector</code> into a FlatBuffer <code>vector</code>.  <a href="#af715dd24dd37cb0151dc7a980ad0f207">More...</a><br /></td></tr>
 <tr class="separator:af715dd24dd37cb0151dc7a980ad0f207"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a274b1afcfa16bab2c884129b2788db19"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a274b1afcfa16bab2c884129b2788db19"></a>
-Offset&lt; Vector&lt; uint8_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>CreateVector</b> (const std::vector&lt; bool &gt; &amp;v)</td></tr>
+<a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="classflatbuffers_1_1_vector.html">Vector</a>&lt; uint8_t &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>CreateVector</b> (const std::vector&lt; bool &gt; &amp;v)</td></tr>
 <tr class="separator:a274b1afcfa16bab2c884129b2788db19"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a1080c9e370e2d9d9d872dadd1131436b"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a1080c9e370e2d9d9d872dadd1131436b"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; Vector&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="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: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">Offset&lt; Vector&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="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>
 <tr class="separator:a3d57074082aaab8cdeb8474ff9df0b53"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a11c291ccd2159604c149600ee6180b95"><td class="memTemplParams" colspan="2">template&lt;typename T , typename S &gt; </td></tr>
-<tr class="memitem:a11c291ccd2159604c149600ee6180b95"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; Vector&lt; const T * &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95">CreateVectorOfNativeStructs</a> (const std::vector&lt; S &gt; &amp;v)</td></tr>
+<tr class="memitem:a11c291ccd2159604c149600ee6180b95"><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#a11c291ccd2159604c149600ee6180b95">CreateVectorOfNativeStructs</a> (const std::vector&lt; S &gt; &amp;v)</td></tr>
 <tr class="memdesc:a11c291ccd2159604c149600ee6180b95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize a <code>std::vector</code> of native structs into a FlatBuffer <code>vector</code>.  <a href="#a11c291ccd2159604c149600ee6180b95">More...</a><br /></td></tr>
 <tr class="separator:a11c291ccd2159604c149600ee6180b95"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a23aa4c910e053446cc404bc486012e54"><td class="memTemplParams" colspan="2">template&lt;typename T , typename S &gt; </td></tr>
-<tr class="memitem:a23aa4c910e053446cc404bc486012e54"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; Vector&lt; const T * &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54">CreateVectorOfSortedNativeStructs</a> (std::vector&lt; S &gt; *v)</td></tr>
+<tr class="memitem:a23aa4c910e053446cc404bc486012e54"><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#a23aa4c910e053446cc404bc486012e54">CreateVectorOfSortedNativeStructs</a> (std::vector&lt; S &gt; *v)</td></tr>
 <tr class="memdesc:a23aa4c910e053446cc404bc486012e54"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize a <code>std::vector</code> of native structs into a FlatBuffer <code>vector</code> in sorted order.  <a href="#a23aa4c910e053446cc404bc486012e54">More...</a><br /></td></tr>
 <tr class="separator:a23aa4c910e053446cc404bc486012e54"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a799701af34c398d8eb86e049b73bcecf"><td class="memTemplParams" colspan="2">template&lt;typename T , typename S &gt; </td></tr>
-<tr class="memitem:a799701af34c398d8eb86e049b73bcecf"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; Vector&lt; const T * &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf">CreateVectorOfSortedNativeStructs</a> (S *v, size_t len)</td></tr>
+<tr class="memitem:a799701af34c398d8eb86e049b73bcecf"><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#a799701af34c398d8eb86e049b73bcecf">CreateVectorOfSortedNativeStructs</a> (S *v, size_t len)</td></tr>
 <tr class="memdesc:a799701af34c398d8eb86e049b73bcecf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize an array of native structs into a FlatBuffer <code>vector</code> in sorted order.  <a href="#a799701af34c398d8eb86e049b73bcecf">More...</a><br /></td></tr>
 <tr class="separator:a799701af34c398d8eb86e049b73bcecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a7cc10b709dfa3e72083843d1a5e36c15"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a7cc10b709dfa3e72083843d1a5e36c15"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; Vector&lt; const T * &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15">CreateVectorOfSortedStructs</a> (std::vector&lt; T &gt; *v)</td></tr>
+<tr class="memitem:a7cc10b709dfa3e72083843d1a5e36c15"><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#a7cc10b709dfa3e72083843d1a5e36c15">CreateVectorOfSortedStructs</a> (std::vector&lt; T &gt; *v)</td></tr>
 <tr class="memdesc:a7cc10b709dfa3e72083843d1a5e36c15"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize a <code>std::vector</code> of structs into a FlatBuffer <code>vector</code> in sorted order.  <a href="#a7cc10b709dfa3e72083843d1a5e36c15">More...</a><br /></td></tr>
 <tr class="separator:a7cc10b709dfa3e72083843d1a5e36c15"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ab1f44cc1b130e13b41e9a80de76e25cf"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:ab1f44cc1b130e13b41e9a80de76e25cf"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; Vector&lt; const T * &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf">CreateVectorOfSortedStructs</a> (T *v, size_t len)</td></tr>
+<tr class="memitem:ab1f44cc1b130e13b41e9a80de76e25cf"><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#ab1f44cc1b130e13b41e9a80de76e25cf">CreateVectorOfSortedStructs</a> (T *v, size_t len)</td></tr>
 <tr class="memdesc:ab1f44cc1b130e13b41e9a80de76e25cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize an array of structs into a FlatBuffer <code>vector</code> in sorted order.  <a href="#ab1f44cc1b130e13b41e9a80de76e25cf">More...</a><br /></td></tr>
 <tr class="separator:ab1f44cc1b130e13b41e9a80de76e25cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2130ef232ff405eebe2e7f184ecd06e6"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a2130ef232ff405eebe2e7f184ecd06e6"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; Vector&lt; Offset&lt; T &gt; &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6">CreateVectorOfSortedTables</a> (Offset&lt; T &gt; *v, size_t len)</td></tr>
+<tr class="memitem:a2130ef232ff405eebe2e7f184ecd06e6"><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; <a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; T &gt; &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6">CreateVectorOfSortedTables</a> (<a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; T &gt; *v, size_t len)</td></tr>
 <tr class="memdesc:a2130ef232ff405eebe2e7f184ecd06e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize an array of <code>table</code> offsets as a <code>vector</code> in the buffer in sorted order.  <a href="#a2130ef232ff405eebe2e7f184ecd06e6">More...</a><br /></td></tr>
 <tr class="separator:a2130ef232ff405eebe2e7f184ecd06e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac64d11c219559ea51567eab556e13135"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:ac64d11c219559ea51567eab556e13135"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; Vector&lt; Offset&lt; T &gt; &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135">CreateVectorOfSortedTables</a> (std::vector&lt; Offset&lt; T &gt;&gt; *v)</td></tr>
+<tr class="memitem:ac64d11c219559ea51567eab556e13135"><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; <a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; T &gt; &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135">CreateVectorOfSortedTables</a> (std::vector&lt; <a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; T &gt;&gt; *v)</td></tr>
 <tr class="memdesc:ac64d11c219559ea51567eab556e13135"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize an array of <code>table</code> offsets as a <code>vector</code> in the buffer in sorted order.  <a href="#ac64d11c219559ea51567eab556e13135">More...</a><br /></td></tr>
 <tr class="separator:ac64d11c219559ea51567eab556e13135"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a592110519a6c8db1926f1365bf2a58e6"><td class="memItemLeft" align="right" valign="top">Offset&lt; Vector&lt; Offset&lt; String &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6">CreateVectorOfStrings</a> (const std::vector&lt; std::string &gt; &amp;v)</td></tr>
+<tr class="memitem:a592110519a6c8db1926f1365bf2a58e6"><td class="memItemLeft" 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; <a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="structflatbuffers_1_1_string.html">String</a> &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6">CreateVectorOfStrings</a> (const std::vector&lt; std::string &gt; &amp;v)</td></tr>
 <tr class="memdesc:a592110519a6c8db1926f1365bf2a58e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize a <code>std::vector&lt;std::string&gt;</code> into a FlatBuffer <code>vector</code>.  <a href="#a592110519a6c8db1926f1365bf2a58e6">More...</a><br /></td></tr>
 <tr class="separator:a592110519a6c8db1926f1365bf2a58e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afede51fd9c32d146cbb1832f57c5e1b7"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:afede51fd9c32d146cbb1832f57c5e1b7"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; Vector&lt; const T * &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7">CreateVectorOfStructs</a> (const T *v, size_t len)</td></tr>
+<tr class="memitem:afede51fd9c32d146cbb1832f57c5e1b7"><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#afede51fd9c32d146cbb1832f57c5e1b7">CreateVectorOfStructs</a> (const T *v, size_t len)</td></tr>
 <tr class="memdesc:afede51fd9c32d146cbb1832f57c5e1b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serialize an array of structs into a FlatBuffer <code>vector</code>.  <a href="#afede51fd9c32d146cbb1832f57c5e1b7">More...</a><br /></td></tr>
 <tr class="separator:afede51fd9c32d146cbb1832f57c5e1b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a6e90ada59d9553636f72ce8e4a892f72"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a6e90ada59d9553636f72ce8e4a892f72"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; Vector&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="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:a8704709a2e25ad04679212ee4126b1a1"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a8704709a2e25ad04679212ee4126b1a1"><td class="memTemplItemLeft" align="right" valign="top">Offset&lt; Vector&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="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>
 <tr class="separator:a8704709a2e25ad04679212ee4126b1a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aa905b29dce19a1795c7bce375cf29961"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961">DedupVtables</a> (bool dedup)</td></tr>
 <tr class="memdesc:aa905b29dce19a1795c7bce375cf29961"><td class="mdescLeft">&#160;</td><td class="mdescRight">By default vtables are deduped in order to save space.  <a href="#aa905b29dce19a1795c7bce375cf29961">More...</a><br /></td></tr>
 <tr class="separator:aa905b29dce19a1795c7bce375cf29961"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a0c9e507b373d598b51052fab4fa34912"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a0c9e507b373d598b51052fab4fa34912"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">Finish</a> (Offset&lt; T &gt; root, const char *file_identifier=nullptr)</td></tr>
+<tr class="memitem:a0c9e507b373d598b51052fab4fa34912"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">Finish</a> (<a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; T &gt; root, const char *file_identifier=nullptr)</td></tr>
 <tr class="memdesc:a0c9e507b373d598b51052fab4fa34912"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finish serializing a buffer by writing the root offset.  <a href="#a0c9e507b373d598b51052fab4fa34912">More...</a><br /></td></tr>
 <tr class="separator:a0c9e507b373d598b51052fab4fa34912"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a7ba8462e408431054c99d25120326220"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a7ba8462e408431054c99d25120326220"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220">FinishSizePrefixed</a> (Offset&lt; T &gt; root, const char *file_identifier=nullptr)</td></tr>
+<tr class="memitem:a7ba8462e408431054c99d25120326220"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220">FinishSizePrefixed</a> (<a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; T &gt; root, const char *file_identifier=nullptr)</td></tr>
 <tr class="memdesc:a7ba8462e408431054c99d25120326220"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finish a buffer with a 32 bit size field pre-fixed (size of the buffer following the size field).  <a href="#a7ba8462e408431054c99d25120326220">More...</a><br /></td></tr>
 <tr class="separator:a7ba8462e408431054c99d25120326220"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac72b54a75e0c329e0ce0b8fab758e256"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ac72b54a75e0c329e0ce0b8fab758e256">FlatBufferBuilder</a> (uoffset_t initial_size=1024, const simple_allocator *allocator=nullptr)</td></tr>
-<tr class="memdesc:ac72b54a75e0c329e0ce0b8fab758e256"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor for FlatBufferBuilder.  <a href="#ac72b54a75e0c329e0ce0b8fab758e256">More...</a><br /></td></tr>
-<tr class="separator:ac72b54a75e0c329e0ce0b8fab758e256"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae4ab74f53187e6c3e6041d34e01904c4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4">FlatBufferBuilder</a> (size_t initial_size=1024, <a class="el" href="classflatbuffers_1_1_allocator.html">Allocator</a> *allocator=nullptr, bool own_allocator=false)</td></tr>
+<tr class="memdesc:ae4ab74f53187e6c3e6041d34e01904c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor for FlatBufferBuilder.  <a href="#ae4ab74f53187e6c3e6041d34e01904c4">More...</a><br /></td></tr>
+<tr class="separator:ae4ab74f53187e6c3e6041d34e01904c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a16a8fd46b34ad7727406c37b65b6b27a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a">ForceDefaults</a> (bool fd)</td></tr>
 <tr class="memdesc:a16a8fd46b34ad7727406c37b65b6b27a"><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="#a16a8fd46b34ad7727406c37b65b6b27a">More...</a><br /></td></tr>
 <tr class="separator:a16a8fd46b34ad7727406c37b65b6b27a"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -276,9 +291,15 @@ Offset&lt; Vector&lt; uint8_t &gt; &gt;&#160;</td><td class="memItemRight" valig
 <tr class="memitem:ac1bfd609f7f736e9a37cedae77448b63"><td class="memItemLeft" align="right" valign="top">uoffset_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a> () const </td></tr>
 <tr class="memdesc:ac1bfd609f7f736e9a37cedae77448b63"><td class="mdescLeft">&#160;</td><td class="mdescRight">The current size of the serialized buffer, counting from the end.  <a href="#ac1bfd609f7f736e9a37cedae77448b63">More...</a><br /></td></tr>
 <tr class="separator:ac1bfd609f7f736e9a37cedae77448b63"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a21c7f933d7ff1212f2090763ef9f0c44"><td class="memItemLeft" align="right" valign="top">unique_ptr_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a21c7f933d7ff1212f2090763ef9f0c44">ReleaseBufferPointer</a> ()</td></tr>
-<tr class="memdesc:a21c7f933d7ff1212f2090763ef9f0c44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the released pointer to the serialized buffer.  <a href="#a21c7f933d7ff1212f2090763ef9f0c44">More...</a><br /></td></tr>
-<tr class="separator:a21c7f933d7ff1212f2090763ef9f0c44"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5e2c3a1e47f0ab4a3a3f07a07a52fb45"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45">Release</a> ()</td></tr>
+<tr class="memdesc:a5e2c3a1e47f0ab4a3a3f07a07a52fb45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the released DetachedBuffer.  <a href="#a5e2c3a1e47f0ab4a3a3f07a07a52fb45">More...</a><br /></td></tr>
+<tr class="separator:a5e2c3a1e47f0ab4a3a3f07a07a52fb45"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0e715d9019060b4b753c4e5228be56e8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8">ReleaseBufferPointer</a> ()</td></tr>
+<tr class="memdesc:a0e715d9019060b4b753c4e5228be56e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the released pointer to the serialized buffer.  <a href="#a0e715d9019060b4b753c4e5228be56e8">More...</a><br /></td></tr>
+<tr class="separator:a0e715d9019060b4b753c4e5228be56e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a952495120d5c56d600640091334b5341"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a952495120d5c56d600640091334b5341"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>Reset</b> ()</td></tr>
+<tr class="separator:a952495120d5c56d600640091334b5341"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>
@@ -286,9 +307,59 @@ Static Public Attributes</h2></td></tr>
 static const size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">kFileIdentifierLength</a> = 4</td></tr>
 <tr class="memdesc:af8c7583c92e1d1d6f438977da5158d19"><td class="mdescLeft">&#160;</td><td class="mdescRight">The length of a FlatBuffer file header. <br /></td></tr>
 <tr class="separator:af8c7583c92e1d1d6f438977da5158d19"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
+Protected Types</h2></td></tr>
+<tr class="memitem:a9190cb2d5a4324ab0c52263b834fff09"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9190cb2d5a4324ab0c52263b834fff09"></a>
+typedef std::set&lt; <a class="el" href="structflatbuffers_1_1_offset.html">Offset</a><br class="typebreak" />
+&lt; <a class="el" href="structflatbuffers_1_1_string.html">String</a> &gt;<br class="typebreak" />
+, <a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">StringOffsetCompare</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>StringOffsetMap</b></td></tr>
+<tr class="separator:a9190cb2d5a4324ab0c52263b834fff09"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a2e4de5642bad6dcd01eb7e7eaf719c89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e4de5642bad6dcd01eb7e7eaf719c89"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>Finish</b> (uoffset_t root, const char *file_identifier, bool size_prefix)</td></tr>
+<tr class="separator:a2e4de5642bad6dcd01eb7e7eaf719c89"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ace4606286a25d3fedfb1532934d4cea1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace4606286a25d3fedfb1532934d4cea1"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>FlatBufferBuilder</b> (const <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> &amp;)</td></tr>
+<tr class="separator:ace4606286a25d3fedfb1532934d4cea1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a376bb6858e8b1baab9a437f3f9f0b334"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a376bb6858e8b1baab9a437f3f9f0b334"></a>
+<a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a> &amp;)</td></tr>
+<tr class="separator:a376bb6858e8b1baab9a437f3f9f0b334"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a9a3886be63710d8bb88f2ade4ac8420d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a3886be63710d8bb88f2ade4ac8420d"></a>
+<a class="el" href="classflatbuffers_1_1vector__downward.html">vector_downward</a>&#160;</td><td class="memItemRight" valign="bottom"><b>buf_</b></td></tr>
+<tr class="separator:a9a3886be63710d8bb88f2ade4ac8420d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6b31b32fb478a9ec68164e1579c7ebe7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b31b32fb478a9ec68164e1579c7ebe7"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>dedup_vtables_</b></td></tr>
+<tr class="separator:a6b31b32fb478a9ec68164e1579c7ebe7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab2cc618aeb6f6c411c7ab734649e1a81"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab2cc618aeb6f6c411c7ab734649e1a81"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>finished</b></td></tr>
+<tr class="separator:ab2cc618aeb6f6c411c7ab734649e1a81"><td class="memSeparator" colspan="2">&#160;</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: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>
+<tr class="memitem:add6d502accf426e35f91f2539baff6b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add6d502accf426e35f91f2539baff6b2"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>nested</b></td></tr>
+<tr class="separator:add6d502accf426e35f91f2539baff6b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adda5db5eceb1465e9a71ddc012d70839"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adda5db5eceb1465e9a71ddc012d70839"></a>
+std::vector&lt; <a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html">FieldLoc</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>offsetbuf_</b></td></tr>
+<tr class="separator:adda5db5eceb1465e9a71ddc012d70839"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa7e64b654cef62869c3dfd27def92e5d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7e64b654cef62869c3dfd27def92e5d"></a>
+StringOffsetMap *&#160;</td><td class="memItemRight" valign="bottom"><b>string_pool</b></td></tr>
+<tr class="separator:aa7e64b654cef62869c3dfd27def92e5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a17c05ea503f311eaf6e56a1be3ac1c49"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17c05ea503f311eaf6e56a1be3ac1c49"></a>
+std::vector&lt; uoffset_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>vtables_</b></td></tr>
+<tr class="separator:a17c05ea503f311eaf6e56a1be3ac1c49"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="ac72b54a75e0c329e0ce0b8fab758e256"></a>
+<a class="anchor" id="ae4ab74f53187e6c3e6041d34e01904c4"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -298,14 +369,20 @@ static const size_t&#160;</td><td class="memItemRight" valign="bottom"><a class=
         <tr>
           <td class="memname">flatbuffers::FlatBufferBuilder::FlatBufferBuilder </td>
           <td>(</td>
-          <td class="paramtype">uoffset_t&#160;</td>
+          <td class="paramtype">size_t&#160;</td>
           <td class="paramname"><em>initial_size</em> = <code>1024</code>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const simple_allocator *&#160;</td>
-          <td class="paramname"><em>allocator</em> = <code>nullptr</code>&#160;</td>
+          <td class="paramtype"><a class="el" href="classflatbuffers_1_1_allocator.html">Allocator</a> *&#160;</td>
+          <td class="paramname"><em>allocator</em> = <code>nullptr</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>own_allocator</em> = <code>false</code>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -323,8 +400,9 @@ static const size_t&#160;</td><td class="memItemRight" valign="bottom"><a class=
 <p>Default constructor for FlatBufferBuilder. </p>
 <dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
-    <tr><td class="paramdir">[in]</td><td class="paramname">initial_size</td><td>The initial size of the buffer, in bytes. Defaults to<code>1024</code>. </td></tr>
-    <tr><td class="paramdir">[in]</td><td class="paramname">allocator</td><td>A pointer to the <code>simple_allocator</code> that should be used. Defaults to <code>nullptr</code>, which means the <code>default_allocator</code> will be be used. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">initial_size</td><td>The initial size of the buffer, in bytes. Defaults to <code>1024</code>. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">allocator</td><td>An <code>Allocator</code> to use. Defaults to a new instance of a <code>DefaultAllocator</code>. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">own_allocator</td><td>Whether the builder/vector should own the allocator. Defaults to / <code>false</code>. </td></tr>
   </table>
   </dd>
 </dl>
@@ -365,7 +443,7 @@ static const size_t&#160;</td><td class="memItemRight" valign="bottom"><a class=
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;String&gt; flatbuffers::FlatBufferBuilder::CreateSharedString </td>
+          <td class="memname"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;<a class="el" href="structflatbuffers_1_1_string.html">String</a>&gt; flatbuffers::FlatBufferBuilder::CreateSharedString </td>
           <td>(</td>
           <td class="paramtype">const char *&#160;</td>
           <td class="paramname"><em>str</em>, </td>
@@ -409,7 +487,7 @@ static const size_t&#160;</td><td class="memItemRight" valign="bottom"><a class=
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;String&gt; flatbuffers::FlatBufferBuilder::CreateSharedString </td>
+          <td class="memname"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;<a class="el" href="structflatbuffers_1_1_string.html">String</a>&gt; flatbuffers::FlatBufferBuilder::CreateSharedString </td>
           <td>(</td>
           <td class="paramtype">const char *&#160;</td>
           <td class="paramname"><em>str</em></td><td>)</td>
@@ -442,7 +520,7 @@ static const size_t&#160;</td><td class="memItemRight" valign="bottom"><a class=
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;String&gt; flatbuffers::FlatBufferBuilder::CreateSharedString </td>
+          <td class="memname"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;<a class="el" href="structflatbuffers_1_1_string.html">String</a>&gt; flatbuffers::FlatBufferBuilder::CreateSharedString </td>
           <td>(</td>
           <td class="paramtype">const std::string &amp;&#160;</td>
           <td class="paramname"><em>str</em></td><td>)</td>
@@ -475,9 +553,9 @@ static const size_t&#160;</td><td class="memItemRight" valign="bottom"><a class=
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;String&gt; flatbuffers::FlatBufferBuilder::CreateSharedString </td>
+          <td class="memname"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;<a class="el" href="structflatbuffers_1_1_string.html">String</a>&gt; flatbuffers::FlatBufferBuilder::CreateSharedString </td>
           <td>(</td>
-          <td class="paramtype">const String *&#160;</td>
+          <td class="paramtype">const <a class="el" href="structflatbuffers_1_1_string.html">String</a> *&#160;</td>
           <td class="paramname"><em>str</em></td><td>)</td>
           <td></td>
         </tr>
@@ -508,7 +586,7 @@ static const size_t&#160;</td><td class="memItemRight" valign="bottom"><a class=
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;String&gt; flatbuffers::FlatBufferBuilder::CreateString </td>
+          <td class="memname"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;<a class="el" href="structflatbuffers_1_1_string.html">String</a>&gt; flatbuffers::FlatBufferBuilder::CreateString </td>
           <td>(</td>
           <td class="paramtype">const char *&#160;</td>
           <td class="paramname"><em>str</em>, </td>
@@ -552,7 +630,7 @@ static const size_t&#160;</td><td class="memItemRight" valign="bottom"><a class=
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;String&gt; flatbuffers::FlatBufferBuilder::CreateString </td>
+          <td class="memname"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;<a class="el" href="structflatbuffers_1_1_string.html">String</a>&gt; flatbuffers::FlatBufferBuilder::CreateString </td>
           <td>(</td>
           <td class="paramtype">const char *&#160;</td>
           <td class="paramname"><em>str</em></td><td>)</td>
@@ -585,7 +663,7 @@ static const size_t&#160;</td><td class="memItemRight" valign="bottom"><a class=
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;String&gt; flatbuffers::FlatBufferBuilder::CreateString </td>
+          <td class="memname"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;<a class="el" href="structflatbuffers_1_1_string.html">String</a>&gt; flatbuffers::FlatBufferBuilder::CreateString </td>
           <td>(</td>
           <td class="paramtype">const std::string &amp;&#160;</td>
           <td class="paramname"><em>str</em></td><td>)</td>
@@ -618,9 +696,9 @@ static const size_t&#160;</td><td class="memItemRight" valign="bottom"><a class=
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;String&gt; flatbuffers::FlatBufferBuilder::CreateString </td>
+          <td class="memname"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;<a class="el" href="structflatbuffers_1_1_string.html">String</a>&gt; flatbuffers::FlatBufferBuilder::CreateString </td>
           <td>(</td>
-          <td class="paramtype">const String *&#160;</td>
+          <td class="paramtype">const <a class="el" href="structflatbuffers_1_1_string.html">String</a> *&#160;</td>
           <td class="paramname"><em>str</em></td><td>)</td>
           <td></td>
         </tr>
@@ -653,7 +731,7 @@ template&lt;typename T &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;String&gt; flatbuffers::FlatBufferBuilder::CreateString </td>
+          <td class="memname"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;<a class="el" href="structflatbuffers_1_1_string.html">String</a>&gt; flatbuffers::FlatBufferBuilder::CreateString </td>
           <td>(</td>
           <td class="paramtype">const T &amp;&#160;</td>
           <td class="paramname"><em>str</em></td><td>)</td>
@@ -738,7 +816,7 @@ template&lt;typename T &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;T&gt; &gt; flatbuffers::FlatBufferBuilder::CreateUninitializedVector </td>
+          <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::CreateUninitializedVector </td>
           <td>(</td>
           <td class="paramtype">size_t&#160;</td>
           <td class="paramname"><em>len</em>, </td>
@@ -789,7 +867,7 @@ template&lt;typename T &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;T&gt; &gt; flatbuffers::FlatBufferBuilder::CreateVector </td>
+          <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">const T *&#160;</td>
           <td class="paramname"><em>v</em>, </td>
@@ -841,7 +919,7 @@ template&lt;typename T &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;T&gt; &gt; flatbuffers::FlatBufferBuilder::CreateVector </td>
+          <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">const std::vector&lt; T &gt; &amp;&#160;</td>
           <td class="paramname"><em>v</em></td><td>)</td>
@@ -882,7 +960,7 @@ template&lt;typename T &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;T&gt; &gt; flatbuffers::FlatBufferBuilder::CreateVector </td>
+          <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>
@@ -933,7 +1011,7 @@ template&lt;typename T , typename S &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;const T *&gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfNativeStructs </td>
+          <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::CreateVectorOfNativeStructs </td>
           <td>(</td>
           <td class="paramtype">const S *&#160;</td>
           <td class="paramname"><em>v</em>, </td>
@@ -986,7 +1064,7 @@ template&lt;typename T , typename S &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;const T *&gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfNativeStructs </td>
+          <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::CreateVectorOfNativeStructs </td>
           <td>(</td>
           <td class="paramtype">const std::vector&lt; S &gt; &amp;&#160;</td>
           <td class="paramname"><em>v</em></td><td>)</td>
@@ -1028,7 +1106,7 @@ template&lt;typename T , typename S &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;const T *&gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfSortedNativeStructs </td>
+          <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::CreateVectorOfSortedNativeStructs </td>
           <td>(</td>
           <td class="paramtype">std::vector&lt; S &gt; *&#160;</td>
           <td class="paramname"><em>v</em></td><td>)</td>
@@ -1070,7 +1148,7 @@ template&lt;typename T , typename S &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;const T *&gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfSortedNativeStructs </td>
+          <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::CreateVectorOfSortedNativeStructs </td>
           <td>(</td>
           <td class="paramtype">S *&#160;</td>
           <td class="paramname"><em>v</em>, </td>
@@ -1123,7 +1201,7 @@ template&lt;typename T &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;const T *&gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfSortedStructs </td>
+          <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::CreateVectorOfSortedStructs </td>
           <td>(</td>
           <td class="paramtype">std::vector&lt; T &gt; *&#160;</td>
           <td class="paramname"><em>v</em></td><td>)</td>
@@ -1164,7 +1242,7 @@ template&lt;typename T &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;const T *&gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfSortedStructs </td>
+          <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::CreateVectorOfSortedStructs </td>
           <td>(</td>
           <td class="paramtype">T *&#160;</td>
           <td class="paramname"><em>v</em>, </td>
@@ -1216,9 +1294,9 @@ template&lt;typename T &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;Offset&lt;T&gt; &gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfSortedTables </td>
+          <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;<a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;T&gt; &gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfSortedTables </td>
           <td>(</td>
-          <td class="paramtype">Offset&lt; T &gt; *&#160;</td>
+          <td class="paramtype"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; T &gt; *&#160;</td>
           <td class="paramname"><em>v</em>, </td>
         </tr>
         <tr>
@@ -1268,9 +1346,9 @@ template&lt;typename T &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;Offset&lt;T&gt; &gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfSortedTables </td>
+          <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;<a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;T&gt; &gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfSortedTables </td>
           <td>(</td>
-          <td class="paramtype">std::vector&lt; Offset&lt; T &gt;&gt; *&#160;</td>
+          <td class="paramtype">std::vector&lt; <a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; T &gt;&gt; *&#160;</td>
           <td class="paramname"><em>v</em></td><td>)</td>
           <td></td>
         </tr>
@@ -1307,7 +1385,7 @@ template&lt;typename T &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;Offset&lt;String&gt; &gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfStrings </td>
+          <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;<a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt;<a class="el" href="structflatbuffers_1_1_string.html">String</a>&gt; &gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfStrings </td>
           <td>(</td>
           <td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
           <td class="paramname"><em>v</em></td><td>)</td>
@@ -1342,7 +1420,7 @@ template&lt;typename T &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;const T *&gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfStructs </td>
+          <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">const T *&#160;</td>
           <td class="paramname"><em>v</em>, </td>
@@ -1394,7 +1472,7 @@ template&lt;typename T &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;const T *&gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfStructs </td>
+          <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>
@@ -1445,7 +1523,7 @@ template&lt;typename T &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">Offset&lt;Vector&lt;const T *&gt; &gt; flatbuffers::FlatBufferBuilder::CreateVectorOfStructs </td>
+          <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">const std::vector&lt; T &gt; &amp;&#160;</td>
           <td class="paramname"><em>v</em></td><td>)</td>
@@ -1520,7 +1598,7 @@ template&lt;typename T &gt; </div>
         <tr>
           <td class="memname">void flatbuffers::FlatBufferBuilder::Finish </td>
           <td>(</td>
-          <td class="paramtype">Offset&lt; T &gt;&#160;</td>
+          <td class="paramtype"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; T &gt;&#160;</td>
           <td class="paramname"><em>root</em>, </td>
         </tr>
         <tr>
@@ -1564,7 +1642,7 @@ template&lt;typename T &gt; </div>
         <tr>
           <td class="memname">void flatbuffers::FlatBufferBuilder::FinishSizePrefixed </td>
           <td>(</td>
-          <td class="paramtype">Offset&lt; T &gt;&#160;</td>
+          <td class="paramtype"><a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; T &gt;&#160;</td>
           <td class="paramname"><em>root</em>, </td>
         </tr>
         <tr>
@@ -1727,7 +1805,33 @@ template&lt;typename T &gt; </div>
 
 </div>
 </div>
-<a class="anchor" id="a21c7f933d7ff1212f2090763ef9f0c44"></a>
+<a class="anchor" id="a5e2c3a1e47f0ab4a3a3f07a07a52fb45"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> flatbuffers::FlatBufferBuilder::Release </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>Get the released DetachedBuffer. </p>
+<dl class="section return"><dt>Returns</dt><dd>A <code>DetachedBuffer</code> that owns the buffer and its allocator. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a0e715d9019060b4b753c4e5228be56e8"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -1735,7 +1839,7 @@ template&lt;typename T &gt; </div>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">unique_ptr_t flatbuffers::FlatBufferBuilder::ReleaseBufferPointer </td>
+          <td class="memname"><a class="el" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a> flatbuffers::FlatBufferBuilder::ReleaseBufferPointer </td>
           <td>(</td>
           <td class="paramname"></td><td>)</td>
           <td></td>
@@ -1750,7 +1854,7 @@ template&lt;typename T &gt; </div>
 
 <p>Get the released pointer to the serialized buffer. </p>
 <dl class="section warning"><dt>Warning</dt><dd>Do NOT attempt to use this FlatBufferBuilder afterwards! </dd></dl>
-<dl class="section return"><dt>Returns</dt><dd>The <code>unique_ptr</code> returned has a special allocator that knows how to deallocate this pointer (since it points to the middle of an allocation). Thus, do not mix this pointer with other <code>unique_ptr</code>'s, or call <code>release()</code>/<code>reset()</code> on it. </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>A <code>FlatBuffer</code> that owns the buffer and its allocator and behaves similar to a <code>unique_ptr</code> with a deleter. Deprecated: use Release() instead </dd></dl>
 
 </div>
 </div>
diff --git a/classflatbuffers_1_1_flat_buffer_builder.js b/classflatbuffers_1_1_flat_buffer_builder.js
index f404b7f2..1637a321 100644
--- a/classflatbuffers_1_1_flat_buffer_builder.js
+++ b/classflatbuffers_1_1_flat_buffer_builder.js
@@ -1,7 +1,11 @@
 var classflatbuffers_1_1_flat_buffer_builder =
 [
-    [ "FlatBufferBuilder", "classflatbuffers_1_1_flat_buffer_builder.html#ac72b54a75e0c329e0ce0b8fab758e256", null ],
+    [ "FieldLoc", "structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html", "structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc" ],
+    [ "StringOffsetCompare", "structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html", "structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare" ],
+    [ "StringOffsetMap", "classflatbuffers_1_1_flat_buffer_builder.html#a9190cb2d5a4324ab0c52263b834fff09", null ],
+    [ "FlatBufferBuilder", "classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4", null ],
     [ "~FlatBufferBuilder", "classflatbuffers_1_1_flat_buffer_builder.html#a01dabf5cdd6b1b2881337e1e84aa1683", null ],
+    [ "FlatBufferBuilder", "classflatbuffers_1_1_flat_buffer_builder.html#ace4606286a25d3fedfb1532934d4cea1", null ],
     [ "Clear", "classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412", null ],
     [ "CreateSharedString", "classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1", null ],
     [ "CreateSharedString", "classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7", null ],
@@ -16,6 +20,7 @@ var classflatbuffers_1_1_flat_buffer_builder =
     [ "CreateUninitializedVector", "classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c", null ],
     [ "CreateUninitializedVector", "classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50", null ],
     [ "CreateVector", "classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3", null ],
+    [ "CreateVector", "classflatbuffers_1_1_flat_buffer_builder.html#a44960c5aca0227f960c96a7ed4b881b4", null ],
     [ "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 ],
@@ -33,12 +38,25 @@ var classflatbuffers_1_1_flat_buffer_builder =
     [ "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 ],
+    [ "Finish", "classflatbuffers_1_1_flat_buffer_builder.html#a2e4de5642bad6dcd01eb7e7eaf719c89", null ],
     [ "FinishSizePrefixed", "classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220", null ],
     [ "ForceDefaults", "classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a", null ],
     [ "GetBufferMinAlignment", "classflatbuffers_1_1_flat_buffer_builder.html#aa1ebce1f3f46832946a95952af1e9c2b", null ],
     [ "GetBufferPointer", "classflatbuffers_1_1_flat_buffer_builder.html#a8dc35f792179df4ca850492c1796d8b8", null ],
     [ "GetCurrentBufferPointer", "classflatbuffers_1_1_flat_buffer_builder.html#a3f4252e9bc005ba6c700469544fdccc9", null ],
     [ "GetSize", "classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63", null ],
-    [ "ReleaseBufferPointer", "classflatbuffers_1_1_flat_buffer_builder.html#a21c7f933d7ff1212f2090763ef9f0c44", null ],
-    [ "kFileIdentifierLength", "classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19", null ]
+    [ "operator=", "classflatbuffers_1_1_flat_buffer_builder.html#a376bb6858e8b1baab9a437f3f9f0b334", null ],
+    [ "Release", "classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45", null ],
+    [ "ReleaseBufferPointer", "classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8", null ],
+    [ "Reset", "classflatbuffers_1_1_flat_buffer_builder.html#a952495120d5c56d600640091334b5341", null ],
+    [ "buf_", "classflatbuffers_1_1_flat_buffer_builder.html#a9a3886be63710d8bb88f2ade4ac8420d", null ],
+    [ "dedup_vtables_", "classflatbuffers_1_1_flat_buffer_builder.html#a6b31b32fb478a9ec68164e1579c7ebe7", null ],
+    [ "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 ],
+    [ "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 ],
+    [ "string_pool", "classflatbuffers_1_1_flat_buffer_builder.html#aa7e64b654cef62869c3dfd27def92e5d", null ],
+    [ "vtables_", "classflatbuffers_1_1_flat_buffer_builder.html#a17c05ea503f311eaf6e56a1be3ac1c49", null ]
 ];
\ No newline at end of file
diff --git a/classflatbuffers_1_1_vector-members.html b/classflatbuffers_1_1_vector-members.html
new file mode 100644
index 00000000..46ea30fb
--- /dev/null
+++ b/classflatbuffers_1_1_vector-members.html
@@ -0,0 +1,171 @@
+<!-- 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('classflatbuffers_1_1_vector.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">flatbuffers::Vector&lt; T &gt; Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>begin</b>() (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>begin</b>() const  (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>Data</b>() const  (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Data</b>() (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>data</b>() const  (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>data</b>() (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>end</b>() (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>end</b>() const  (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>Get</b>(uoffset_t i) const  (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetAs</b>(uoffset_t i) const  (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>GetAsString</b>(uoffset_t i) const  (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetEnum</b>(uoffset_t i) const  (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>GetMutableObject</b>(uoffset_t i) const  (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetStructFromOffset</b>(size_t o) const  (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Length</b>() const  (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>length_</b> (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LookupByKey</b>(K key) const  (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>mutable_return_type</b> typedef (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Mutate</b>(uoffset_t i, const T &amp;val) (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>MutateOffset</b>(uoffset_t i, const uint8_t *val) (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(uoffset_t i) const  (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>return_type</b> typedef (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size</b>() const  (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>Vector</b>() (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; T &gt;</a></td><td class="entry"><span class="mlabel">protected</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/classflatbuffers_1_1_vector.html b/classflatbuffers_1_1_vector.html
new file mode 100644
index 00000000..d0ceef72
--- /dev/null
+++ b/classflatbuffers_1_1_vector.html
@@ -0,0 +1,244 @@
+<!-- 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: flatbuffers::Vector&lt; T &gt; Class Template 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('classflatbuffers_1_1_vector.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-types">Public Types</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> &#124;
+<a href="classflatbuffers_1_1_vector-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">flatbuffers::Vector&lt; T &gt; Class Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a66212ee5146550ed418a358a8b756dc6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66212ee5146550ed418a358a8b756dc6"></a>
+typedef <a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>&lt; T, <br class="typebreak" />
+typename <a class="el" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a>&lt; T &gt;<br class="typebreak" />
+::return_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+<tr class="separator:a66212ee5146550ed418a358a8b756dc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0eeca1798d12e29e1003e6f831668986"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0eeca1798d12e29e1003e6f831668986"></a>
+typedef <a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>&lt; T, <br class="typebreak" />
+typename <a class="el" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a>&lt; T &gt;<br class="typebreak" />
+::mutable_return_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+<tr class="separator:a0eeca1798d12e29e1003e6f831668986"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7703f4b1cbb1f99087b48cd58abb740e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7703f4b1cbb1f99087b48cd58abb740e"></a>
+typedef <a class="el" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a>&lt; T &gt;<br class="typebreak" />
+::mutable_return_type&#160;</td><td class="memItemRight" valign="bottom"><b>mutable_return_type</b></td></tr>
+<tr class="separator:a7703f4b1cbb1f99087b48cd58abb740e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a28dab085738663f5c866cf6570bb6289"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28dab085738663f5c866cf6570bb6289"></a>
+typedef <a class="el" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a>&lt; T &gt;<br class="typebreak" />
+::return_type&#160;</td><td class="memItemRight" valign="bottom"><b>return_type</b></td></tr>
+<tr class="separator:a28dab085738663f5c866cf6570bb6289"><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:ac1ab40cdffad6cd50c222fe42c51437b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1ab40cdffad6cd50c222fe42c51437b"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>begin</b> ()</td></tr>
+<tr class="separator:ac1ab40cdffad6cd50c222fe42c51437b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a248da154992320d3ebf75cba205628eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a248da154992320d3ebf75cba205628eb"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">const_iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>begin</b> () const </td></tr>
+<tr class="separator:a248da154992320d3ebf75cba205628eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3a78e000a9301e5310adc014c36137cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3a78e000a9301e5310adc014c36137cd"></a>
+const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>Data</b> () const </td></tr>
+<tr class="separator:a3a78e000a9301e5310adc014c36137cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0ab8113b331fb069dbaa0a108f6077e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ab8113b331fb069dbaa0a108f6077e1"></a>
+uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>Data</b> ()</td></tr>
+<tr class="separator:a0ab8113b331fb069dbaa0a108f6077e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a417d1d01e6d7580042aa6bd5eb35fadd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a417d1d01e6d7580042aa6bd5eb35fadd"></a>
+const T *&#160;</td><td class="memItemRight" valign="bottom"><b>data</b> () const </td></tr>
+<tr class="separator:a417d1d01e6d7580042aa6bd5eb35fadd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a874b185e7dec18bb24b1f0ee42afb7cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a874b185e7dec18bb24b1f0ee42afb7cb"></a>
+T *&#160;</td><td class="memItemRight" valign="bottom"><b>data</b> ()</td></tr>
+<tr class="separator:a874b185e7dec18bb24b1f0ee42afb7cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a53e9c0cb1d27e4bd355034dbd43f0127"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a53e9c0cb1d27e4bd355034dbd43f0127"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>end</b> ()</td></tr>
+<tr class="separator:a53e9c0cb1d27e4bd355034dbd43f0127"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afb74addfd0fd7ae205c02ebf33d25ea2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb74addfd0fd7ae205c02ebf33d25ea2"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">const_iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>end</b> () const </td></tr>
+<tr class="separator:afb74addfd0fd7ae205c02ebf33d25ea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a06d6b1b963b1d738d74afb1cd7ed973c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06d6b1b963b1d738d74afb1cd7ed973c"></a>
+return_type&#160;</td><td class="memItemRight" valign="bottom"><b>Get</b> (uoffset_t i) const </td></tr>
+<tr class="separator:a06d6b1b963b1d738d74afb1cd7ed973c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4155ce66380a2cb863e005164ce8ec33"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4155ce66380a2cb863e005164ce8ec33"></a>
+template&lt;typename U &gt; </td></tr>
+<tr class="memitem:a4155ce66380a2cb863e005164ce8ec33"><td class="memTemplItemLeft" align="right" valign="top">const U *&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetAs</b> (uoffset_t i) const </td></tr>
+<tr class="separator:a4155ce66380a2cb863e005164ce8ec33"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a92d04847cc257e3ec9c75b7514988f13"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92d04847cc257e3ec9c75b7514988f13"></a>
+const <a class="el" href="structflatbuffers_1_1_string.html">String</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>GetAsString</b> (uoffset_t i) const </td></tr>
+<tr class="separator:a92d04847cc257e3ec9c75b7514988f13"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4aab53d31e0f3048fceeee9658efdf41"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4aab53d31e0f3048fceeee9658efdf41"></a>
+template&lt;typename E &gt; </td></tr>
+<tr class="memitem:a4aab53d31e0f3048fceeee9658efdf41"><td class="memTemplItemLeft" align="right" valign="top">E&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetEnum</b> (uoffset_t i) const </td></tr>
+<tr class="separator:a4aab53d31e0f3048fceeee9658efdf41"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab0a55bc4f498fbbd81efc47f3435be97"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab0a55bc4f498fbbd81efc47f3435be97"></a>
+mutable_return_type&#160;</td><td class="memItemRight" valign="bottom"><b>GetMutableObject</b> (uoffset_t i) const </td></tr>
+<tr class="separator:ab0a55bc4f498fbbd81efc47f3435be97"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a39668795e4e5462568cf985291a27f21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39668795e4e5462568cf985291a27f21"></a>
+const void *&#160;</td><td class="memItemRight" valign="bottom"><b>GetStructFromOffset</b> (size_t o) const </td></tr>
+<tr class="separator:a39668795e4e5462568cf985291a27f21"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa2372140c6a4331774fe15dff81d1d7b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2372140c6a4331774fe15dff81d1d7b"></a>
+uoffset_t&#160;</td><td class="memItemRight" valign="bottom"><b>Length</b> () const </td></tr>
+<tr class="separator:aa2372140c6a4331774fe15dff81d1d7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a88a9fb17715f2845e3aebd4193007d61"><td class="memTemplParams" colspan="2"><a class="anchor" id="a88a9fb17715f2845e3aebd4193007d61"></a>
+template&lt;typename K &gt; </td></tr>
+<tr class="memitem:a88a9fb17715f2845e3aebd4193007d61"><td class="memTemplItemLeft" align="right" valign="top">return_type&#160;</td><td class="memTemplItemRight" valign="bottom"><b>LookupByKey</b> (K key) const </td></tr>
+<tr class="separator:a88a9fb17715f2845e3aebd4193007d61"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8342962f2f9d5e872c90abdeaea8d24e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8342962f2f9d5e872c90abdeaea8d24e"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>Mutate</b> (uoffset_t i, const T &amp;val)</td></tr>
+<tr class="separator:a8342962f2f9d5e872c90abdeaea8d24e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a29803cd584a620bf076a69b6e97ecf5c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29803cd584a620bf076a69b6e97ecf5c"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>MutateOffset</b> (uoffset_t i, const uint8_t *val)</td></tr>
+<tr class="separator:a29803cd584a620bf076a69b6e97ecf5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7f62ee2a80431226cf14dd7348613f35"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f62ee2a80431226cf14dd7348613f35"></a>
+return_type&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (uoffset_t i) const </td></tr>
+<tr class="separator:a7f62ee2a80431226cf14dd7348613f35"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3aa5f37912192c5adf734ed24145174d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3aa5f37912192c5adf734ed24145174d"></a>
+uoffset_t&#160;</td><td class="memItemRight" valign="bottom"><b>size</b> () const </td></tr>
+<tr class="separator:a3aa5f37912192c5adf734ed24145174d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a62170e531ab5fcef8b4c717c0e84553d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62170e531ab5fcef8b4c717c0e84553d"></a>
+uoffset_t&#160;</td><td class="memItemRight" valign="bottom"><b>length_</b></td></tr>
+<tr class="separator:a62170e531ab5fcef8b4c717c0e84553d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="flatbuffers_8h_source.html">flatbuffers.h</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/classflatbuffers_1_1_vector.js b/classflatbuffers_1_1_vector.js
new file mode 100644
index 00000000..4bc6d907
--- /dev/null
+++ b/classflatbuffers_1_1_vector.js
@@ -0,0 +1,29 @@
+var classflatbuffers_1_1_vector =
+[
+    [ "const_iterator", "classflatbuffers_1_1_vector.html#a66212ee5146550ed418a358a8b756dc6", null ],
+    [ "iterator", "classflatbuffers_1_1_vector.html#a0eeca1798d12e29e1003e6f831668986", null ],
+    [ "mutable_return_type", "classflatbuffers_1_1_vector.html#a7703f4b1cbb1f99087b48cd58abb740e", null ],
+    [ "return_type", "classflatbuffers_1_1_vector.html#a28dab085738663f5c866cf6570bb6289", null ],
+    [ "Vector", "classflatbuffers_1_1_vector.html#ab51b30f24f9841203b4364af38d424b8", null ],
+    [ "begin", "classflatbuffers_1_1_vector.html#ac1ab40cdffad6cd50c222fe42c51437b", null ],
+    [ "begin", "classflatbuffers_1_1_vector.html#a248da154992320d3ebf75cba205628eb", null ],
+    [ "Data", "classflatbuffers_1_1_vector.html#a3a78e000a9301e5310adc014c36137cd", null ],
+    [ "Data", "classflatbuffers_1_1_vector.html#a0ab8113b331fb069dbaa0a108f6077e1", null ],
+    [ "data", "classflatbuffers_1_1_vector.html#a417d1d01e6d7580042aa6bd5eb35fadd", null ],
+    [ "data", "classflatbuffers_1_1_vector.html#a874b185e7dec18bb24b1f0ee42afb7cb", null ],
+    [ "end", "classflatbuffers_1_1_vector.html#a53e9c0cb1d27e4bd355034dbd43f0127", null ],
+    [ "end", "classflatbuffers_1_1_vector.html#afb74addfd0fd7ae205c02ebf33d25ea2", null ],
+    [ "Get", "classflatbuffers_1_1_vector.html#a06d6b1b963b1d738d74afb1cd7ed973c", null ],
+    [ "GetAs", "classflatbuffers_1_1_vector.html#a4155ce66380a2cb863e005164ce8ec33", null ],
+    [ "GetAsString", "classflatbuffers_1_1_vector.html#a92d04847cc257e3ec9c75b7514988f13", null ],
+    [ "GetEnum", "classflatbuffers_1_1_vector.html#a4aab53d31e0f3048fceeee9658efdf41", null ],
+    [ "GetMutableObject", "classflatbuffers_1_1_vector.html#ab0a55bc4f498fbbd81efc47f3435be97", null ],
+    [ "GetStructFromOffset", "classflatbuffers_1_1_vector.html#a39668795e4e5462568cf985291a27f21", null ],
+    [ "Length", "classflatbuffers_1_1_vector.html#aa2372140c6a4331774fe15dff81d1d7b", null ],
+    [ "LookupByKey", "classflatbuffers_1_1_vector.html#a88a9fb17715f2845e3aebd4193007d61", null ],
+    [ "Mutate", "classflatbuffers_1_1_vector.html#a8342962f2f9d5e872c90abdeaea8d24e", null ],
+    [ "MutateOffset", "classflatbuffers_1_1_vector.html#a29803cd584a620bf076a69b6e97ecf5c", null ],
+    [ "operator[]", "classflatbuffers_1_1_vector.html#a7f62ee2a80431226cf14dd7348613f35", null ],
+    [ "size", "classflatbuffers_1_1_vector.html#a3aa5f37912192c5adf734ed24145174d", null ],
+    [ "length_", "classflatbuffers_1_1_vector.html#a62170e531ab5fcef8b4c717c0e84553d", null ]
+];
\ No newline at end of file
diff --git a/classflatbuffers_1_1_vector_of_any-members.html b/classflatbuffers_1_1_vector_of_any-members.html
new file mode 100644
index 00000000..98fbc768
--- /dev/null
+++ b/classflatbuffers_1_1_vector_of_any-members.html
@@ -0,0 +1,150 @@
+<!-- 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('classflatbuffers_1_1_vector_of_any.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">flatbuffers::VectorOfAny Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classflatbuffers_1_1_vector_of_any.html">flatbuffers::VectorOfAny</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Data</b>() const  (defined in <a class="el" href="classflatbuffers_1_1_vector_of_any.html">flatbuffers::VectorOfAny</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector_of_any.html">flatbuffers::VectorOfAny</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_vector_of_any.html">flatbuffers::VectorOfAny</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector_of_any.html">flatbuffers::VectorOfAny</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>length_</b> (defined in <a class="el" href="classflatbuffers_1_1_vector_of_any.html">flatbuffers::VectorOfAny</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector_of_any.html">flatbuffers::VectorOfAny</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>size</b>() const  (defined in <a class="el" href="classflatbuffers_1_1_vector_of_any.html">flatbuffers::VectorOfAny</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector_of_any.html">flatbuffers::VectorOfAny</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>VectorOfAny</b>() (defined in <a class="el" href="classflatbuffers_1_1_vector_of_any.html">flatbuffers::VectorOfAny</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector_of_any.html">flatbuffers::VectorOfAny</a></td><td class="entry"><span class="mlabel">protected</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/classflatbuffers_1_1_vector_of_any.html b/classflatbuffers_1_1_vector_of_any.html
new file mode 100644
index 00000000..d64da26e
--- /dev/null
+++ b/classflatbuffers_1_1_vector_of_any.html
@@ -0,0 +1,168 @@
+<!-- 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: flatbuffers::VectorOfAny 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('classflatbuffers_1_1_vector_of_any.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="#pro-attribs">Protected Attributes</a> &#124;
+<a href="classflatbuffers_1_1_vector_of_any-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">flatbuffers::VectorOfAny Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<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:af84f1a5138506c8835ff1ef1b5194767"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af84f1a5138506c8835ff1ef1b5194767"></a>
+const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>Data</b> () const </td></tr>
+<tr class="separator:af84f1a5138506c8835ff1ef1b5194767"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4ddb1c5d56cf35be5705a63c97b780ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ddb1c5d56cf35be5705a63c97b780ed"></a>
+uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>Data</b> ()</td></tr>
+<tr class="separator:a4ddb1c5d56cf35be5705a63c97b780ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae7445c6c623cf74d9b77b11cd87bdf4e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7445c6c623cf74d9b77b11cd87bdf4e"></a>
+uoffset_t&#160;</td><td class="memItemRight" valign="bottom"><b>size</b> () const </td></tr>
+<tr class="separator:ae7445c6c623cf74d9b77b11cd87bdf4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:ab299b866b29e7010b4b0572daa38c95f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab299b866b29e7010b4b0572daa38c95f"></a>
+uoffset_t&#160;</td><td class="memItemRight" valign="bottom"><b>length_</b></td></tr>
+<tr class="separator:ab299b866b29e7010b4b0572daa38c95f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="flatbuffers_8h_source.html">flatbuffers.h</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/classflatbuffers_1_1_vector_of_any.js b/classflatbuffers_1_1_vector_of_any.js
new file mode 100644
index 00000000..4efdd769
--- /dev/null
+++ b/classflatbuffers_1_1_vector_of_any.js
@@ -0,0 +1,8 @@
+var classflatbuffers_1_1_vector_of_any =
+[
+    [ "VectorOfAny", "classflatbuffers_1_1_vector_of_any.html#a6fb11905e2ac4ad77193151bbe47030a", null ],
+    [ "Data", "classflatbuffers_1_1_vector_of_any.html#af84f1a5138506c8835ff1ef1b5194767", null ],
+    [ "Data", "classflatbuffers_1_1_vector_of_any.html#a4ddb1c5d56cf35be5705a63c97b780ed", null ],
+    [ "size", "classflatbuffers_1_1_vector_of_any.html#ae7445c6c623cf74d9b77b11cd87bdf4e", null ],
+    [ "length_", "classflatbuffers_1_1_vector_of_any.html#ab299b866b29e7010b4b0572daa38c95f", null ]
+];
\ No newline at end of file
diff --git a/classflatbuffers_1_1vector__downward-members.html b/classflatbuffers_1_1vector__downward-members.html
new file mode 100644
index 00000000..6819cbae
--- /dev/null
+++ b/classflatbuffers_1_1vector__downward-members.html
@@ -0,0 +1,163 @@
+<!-- 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('classflatbuffers_1_1vector__downward.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">flatbuffers::vector_downward Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>buf</b>() const  (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>capacity</b>() const  (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>clear</b>() (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>data</b>() const  (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>data_at</b>(size_t offset) const  (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>fill</b>(size_t zero_pad_bytes) (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fill_big</b>(size_t zero_pad_bytes) (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_allocator</b>() (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>growth_policy</b>(size_t bytes) (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>make_space</b>(size_t len) (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pop</b>(size_t bytes_to_remove) (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>push</b>(const uint8_t *bytes, size_t num) (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>push_small</b>(const T &amp;little_endian_t) (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>release</b>() (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</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_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</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_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>vector_downward</b>(size_t initial_size=1024, Allocator *allocator=nullptr, bool own_allocator=false) (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~vector_downward</b>() (defined in <a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1vector__downward.html">flatbuffers::vector_downward</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/classflatbuffers_1_1vector__downward.html b/classflatbuffers_1_1vector__downward.html
new file mode 100644
index 00000000..2ff18606
--- /dev/null
+++ b/classflatbuffers_1_1vector__downward.html
@@ -0,0 +1,204 @@
+<!-- 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: flatbuffers::vector_downward 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('classflatbuffers_1_1vector__downward.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="classflatbuffers_1_1vector__downward-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">flatbuffers::vector_downward Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<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:a30d500190ca6fe63296b751b37004945"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30d500190ca6fe63296b751b37004945"></a>
+uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>buf</b> () const </td></tr>
+<tr class="separator:a30d500190ca6fe63296b751b37004945"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5edea7ae27f81a770547ec1aada6a666"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5edea7ae27f81a770547ec1aada6a666"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>capacity</b> () const </td></tr>
+<tr class="separator:a5edea7ae27f81a770547ec1aada6a666"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae701e8e1cc468d1a3141e0fa22dc3a70"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae701e8e1cc468d1a3141e0fa22dc3a70"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>clear</b> ()</td></tr>
+<tr class="separator:ae701e8e1cc468d1a3141e0fa22dc3a70"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a403cfdb1088a2f95ca5a4899dd45e313"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a403cfdb1088a2f95ca5a4899dd45e313"></a>
+uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>data</b> () const </td></tr>
+<tr class="separator:a403cfdb1088a2f95ca5a4899dd45e313"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac2983200e66457e256301e5bb6ffa2a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2983200e66457e256301e5bb6ffa2a8"></a>
+uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>data_at</b> (size_t offset) const </td></tr>
+<tr class="separator:ac2983200e66457e256301e5bb6ffa2a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a692f950a105db47f983ff80d4e5c3772"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a692f950a105db47f983ff80d4e5c3772"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>fill</b> (size_t zero_pad_bytes)</td></tr>
+<tr class="separator:a692f950a105db47f983ff80d4e5c3772"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a99e13c5b83569b07df357c76feb1e614"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99e13c5b83569b07df357c76feb1e614"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>fill_big</b> (size_t zero_pad_bytes)</td></tr>
+<tr class="separator:a99e13c5b83569b07df357c76feb1e614"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abc8846756ed814d1722913105e0da7a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc8846756ed814d1722913105e0da7a3"></a>
+<a class="el" href="classflatbuffers_1_1_allocator.html">Allocator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>get_allocator</b> ()</td></tr>
+<tr class="separator:abc8846756ed814d1722913105e0da7a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a00f9fca894e2a2963ae0867ff443d0c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00f9fca894e2a2963ae0867ff443d0c2"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>growth_policy</b> (size_t bytes)</td></tr>
+<tr class="separator:a00f9fca894e2a2963ae0867ff443d0c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4a0686bb0afe2feefec0502f527a11bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a0686bb0afe2feefec0502f527a11bf"></a>
+uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>make_space</b> (size_t len)</td></tr>
+<tr class="separator:a4a0686bb0afe2feefec0502f527a11bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a23cd3d0692fe86eacc6324ea4b58a599"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23cd3d0692fe86eacc6324ea4b58a599"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>pop</b> (size_t bytes_to_remove)</td></tr>
+<tr class="separator:a23cd3d0692fe86eacc6324ea4b58a599"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8cfd1b66f93043acb9905519e9998ced"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8cfd1b66f93043acb9905519e9998ced"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>push</b> (const uint8_t *bytes, size_t num)</td></tr>
+<tr class="separator:a8cfd1b66f93043acb9905519e9998ced"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a23d309dc71c82cc13d1edefff0e7dd8f"><td class="memTemplParams" colspan="2"><a class="anchor" id="a23d309dc71c82cc13d1edefff0e7dd8f"></a>
+template&lt;typename T &gt; </td></tr>
+<tr class="memitem:a23d309dc71c82cc13d1edefff0e7dd8f"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>push_small</b> (const T &amp;little_endian_t)</td></tr>
+<tr class="separator:a23d309dc71c82cc13d1edefff0e7dd8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aefa75049c70c00591f7786aeb9def1fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefa75049c70c00591f7786aeb9def1fe"></a>
+<a class="el" href="classflatbuffers_1_1_detached_buffer.html">DetachedBuffer</a>&#160;</td><td class="memItemRight" valign="bottom"><b>release</b> ()</td></tr>
+<tr class="separator:aefa75049c70c00591f7786aeb9def1fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4a5203e2960492f54ac4428d4caee0fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a5203e2960492f54ac4428d4caee0fc"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
+<tr class="separator:a4a5203e2960492f54ac4428d4caee0fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a551fe42b05fef8fc3f6dc6b955c6196b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a551fe42b05fef8fc3f6dc6b955c6196b"></a>
+uoffset_t&#160;</td><td class="memItemRight" valign="bottom"><b>size</b> () const </td></tr>
+<tr class="separator:a551fe42b05fef8fc3f6dc6b955c6196b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a909d38da327dbe36825d059cff0c96e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a909d38da327dbe36825d059cff0c96e4"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>vector_downward</b> (size_t initial_size=1024, <a class="el" href="classflatbuffers_1_1_allocator.html">Allocator</a> *allocator=nullptr, bool own_allocator=false)</td></tr>
+<tr class="separator:a909d38da327dbe36825d059cff0c96e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="flatbuffers_8h_source.html">flatbuffers.h</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/classflatbuffers_1_1vector__downward.js b/classflatbuffers_1_1vector__downward.js
new file mode 100644
index 00000000..56961050
--- /dev/null
+++ b/classflatbuffers_1_1vector__downward.js
@@ -0,0 +1,21 @@
+var classflatbuffers_1_1vector__downward =
+[
+    [ "vector_downward", "classflatbuffers_1_1vector__downward.html#a909d38da327dbe36825d059cff0c96e4", null ],
+    [ "~vector_downward", "classflatbuffers_1_1vector__downward.html#ad99943ac8c66263f3587e18539e9f176", null ],
+    [ "buf", "classflatbuffers_1_1vector__downward.html#a30d500190ca6fe63296b751b37004945", null ],
+    [ "capacity", "classflatbuffers_1_1vector__downward.html#a5edea7ae27f81a770547ec1aada6a666", null ],
+    [ "clear", "classflatbuffers_1_1vector__downward.html#ae701e8e1cc468d1a3141e0fa22dc3a70", null ],
+    [ "data", "classflatbuffers_1_1vector__downward.html#a403cfdb1088a2f95ca5a4899dd45e313", null ],
+    [ "data_at", "classflatbuffers_1_1vector__downward.html#ac2983200e66457e256301e5bb6ffa2a8", null ],
+    [ "fill", "classflatbuffers_1_1vector__downward.html#a692f950a105db47f983ff80d4e5c3772", null ],
+    [ "fill_big", "classflatbuffers_1_1vector__downward.html#a99e13c5b83569b07df357c76feb1e614", null ],
+    [ "get_allocator", "classflatbuffers_1_1vector__downward.html#abc8846756ed814d1722913105e0da7a3", null ],
+    [ "growth_policy", "classflatbuffers_1_1vector__downward.html#a00f9fca894e2a2963ae0867ff443d0c2", null ],
+    [ "make_space", "classflatbuffers_1_1vector__downward.html#a4a0686bb0afe2feefec0502f527a11bf", null ],
+    [ "pop", "classflatbuffers_1_1vector__downward.html#a23cd3d0692fe86eacc6324ea4b58a599", null ],
+    [ "push", "classflatbuffers_1_1vector__downward.html#a8cfd1b66f93043acb9905519e9998ced", null ],
+    [ "push_small", "classflatbuffers_1_1vector__downward.html#a23d309dc71c82cc13d1edefff0e7dd8f", null ],
+    [ "release", "classflatbuffers_1_1vector__downward.html#aefa75049c70c00591f7786aeb9def1fe", null ],
+    [ "reset", "classflatbuffers_1_1vector__downward.html#a4a5203e2960492f54ac4428d4caee0fc", null ],
+    [ "size", "classflatbuffers_1_1vector__downward.html#a551fe42b05fef8fc3f6dc6b955c6196b", null ]
+];
\ No newline at end of file
diff --git a/contributing.html b/contributing.html
index e9fa745a..7bc93fe0 100644
--- a/contributing.html
+++ b/contributing.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/dir_05194b7bb14e4bdbd759acf3e4294839.html b/dir_05194b7bb14e4bdbd759acf3e4294839.html
index d7923310..b9671a50 100644
--- a/dir_05194b7bb14e4bdbd759acf3e4294839.html
+++ b/dir_05194b7bb14e4bdbd759acf3e4294839.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/dir_0e37bed226164927aa2c526e48e3c9af.html b/dir_0e37bed226164927aa2c526e48e3c9af.html
index ab69c397..9e6a4ac5 100644
--- a/dir_0e37bed226164927aa2c526e48e3c9af.html
+++ b/dir_0e37bed226164927aa2c526e48e3c9af.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/dir_1036070c9379c90b9865e1585bb57938.html b/dir_1036070c9379c90b9865e1585bb57938.html
index d68f2fd0..a544d0da 100644
--- a/dir_1036070c9379c90b9865e1585bb57938.html
+++ b/dir_1036070c9379c90b9865e1585bb57938.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/dir_2867b8401105090ba43035c8b1fd9c0c.html b/dir_2867b8401105090ba43035c8b1fd9c0c.html
index e7150008..6b8aef41 100644
--- a/dir_2867b8401105090ba43035c8b1fd9c0c.html
+++ b/dir_2867b8401105090ba43035c8b1fd9c0c.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/dir_427baa8a9a5be237f298d4545d0d1ce2.html b/dir_427baa8a9a5be237f298d4545d0d1ce2.html
index 4362b348..eb9cfe7f 100644
--- a/dir_427baa8a9a5be237f298d4545d0d1ce2.html
+++ b/dir_427baa8a9a5be237f298d4545d0d1ce2.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/dir_4d44a7834a0220e3079d88886922def6.html b/dir_4d44a7834a0220e3079d88886922def6.html
index 877ac1a5..2986895b 100644
--- a/dir_4d44a7834a0220e3079d88886922def6.html
+++ b/dir_4d44a7834a0220e3079d88886922def6.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
@@ -116,7 +116,7 @@ $(document).ready(function(){initNavTree('dir_4d44a7834a0220e3079d88886922def6.h
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
 Files</h2></td></tr>
-<tr class="memitem:flatbuffers_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="flatbuffers_8h.html">flatbuffers.h</a> <a href="flatbuffers_8h_source.html">[code]</a></td></tr>
+<tr class="memitem:flatbuffers_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>flatbuffers.h</b> <a href="flatbuffers_8h_source.html">[code]</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 </div><!-- contents -->
diff --git a/dir_6f01889fa69585f5458dd2f93b8129fa.html b/dir_6f01889fa69585f5458dd2f93b8129fa.html
index 89ec6944..8f7aef2c 100644
--- a/dir_6f01889fa69585f5458dd2f93b8129fa.html
+++ b/dir_6f01889fa69585f5458dd2f93b8129fa.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/dir_7837fde3ab9c1fb2fc5be7b717af8d79.html b/dir_7837fde3ab9c1fb2fc5be7b717af8d79.html
index bff9f1b0..f63d59a8 100644
--- a/dir_7837fde3ab9c1fb2fc5be7b717af8d79.html
+++ b/dir_7837fde3ab9c1fb2fc5be7b717af8d79.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/dir_8a22873406ddef3ffbbc0bacea2033ba.html b/dir_8a22873406ddef3ffbbc0bacea2033ba.html
index 7142b12d..4ab74341 100644
--- a/dir_8a22873406ddef3ffbbc0bacea2033ba.html
+++ b/dir_8a22873406ddef3ffbbc0bacea2033ba.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/dir_93c6ba7fb77bae0709fae89c9c13b44a.html b/dir_93c6ba7fb77bae0709fae89c9c13b44a.html
index 9b83b4da..287d2b1e 100644
--- a/dir_93c6ba7fb77bae0709fae89c9c13b44a.html
+++ b/dir_93c6ba7fb77bae0709fae89c9c13b44a.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/dir_aa1ba5078724e0ea09d9b49b3a016128.html b/dir_aa1ba5078724e0ea09d9b49b3a016128.html
index b85ed1a4..0b8620f5 100644
--- a/dir_aa1ba5078724e0ea09d9b49b3a016128.html
+++ b/dir_aa1ba5078724e0ea09d9b49b3a016128.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/dir_bebd57e0257eca849e35e7c4620d27be.html b/dir_bebd57e0257eca849e35e7c4620d27be.html
index 289279a8..bdd48de6 100644
--- a/dir_bebd57e0257eca849e35e7c4620d27be.html
+++ b/dir_bebd57e0257eca849e35e7c4620d27be.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html
index 9f0072de..9f1d9669 100644
--- a/dir_d44c64559bbebec7f509842c48db8b23.html
+++ b/dir_d44c64559bbebec7f509842c48db8b23.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flatbuffers_8h_source.html b/flatbuffers_8h_source.html
index 75247ec4..be996a36 100644
--- a/flatbuffers_8h_source.html
+++ b/flatbuffers_8h_source.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
@@ -113,7 +113,7 @@ $(document).ready(function(){initNavTree('flatbuffers_8h_source.html','');});
 <div class="title">flatbuffers.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="flatbuffers_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
 <div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Copyright 2014 Google Inc. All rights reserved.</span></div>
 <div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div>
 <div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div>
@@ -132,2086 +132,2116 @@ $(document).ready(function(){initNavTree('flatbuffers_8h_source.html','');});
 <div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#ifndef FLATBUFFERS_H_</span></div>
 <div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#define FLATBUFFERS_H_</span></div>
 <div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;assert.h&gt;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &quot;flatbuffers/base.h&quot;</span></div>
 <div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div>
-<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#ifndef ARDUINO</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#ifndef ARDUINO</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#include &lt;utility.h&gt;</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#include &lt;set&gt;</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="keyword">namespace </span>flatbuffers {</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">// Wrapper for uoffset_t to allow safe template specialization.</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">// Value is allowed to be 0 to indicate a null object (see e.g. AddOffset).</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="structflatbuffers_1_1_offset.html">   25</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_offset.html">Offset</a> {</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;  uoffset_t o;</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;  <a class="code" href="structflatbuffers_1_1_offset.html">Offset</a>() : o(0) {}</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;  <a class="code" href="structflatbuffers_1_1_offset.html">Offset</a>(uoffset_t _o) : o(_o) {}</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;  <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;void&gt;</a> Union()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="structflatbuffers_1_1_offset.html">Offset&lt;void&gt;</a>(o); }</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;  <span class="keywordtype">bool</span> IsNull()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !o; }</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;};</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> EndianCheck() {</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;  <span class="keywordtype">int</span> endiantest = 1;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;  <span class="comment">// If this fails, see FLATBUFFERS_LITTLEENDIAN above.</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;  assert(*reinterpret_cast&lt;char *&gt;(&amp;endiantest) == FLATBUFFERS_LITTLEENDIAN);</div>
+<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="preprocessor">#ifdef _STLPORT_VERSION</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">  #define FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#ifndef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">  #include &lt;functional&gt;</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment">/// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment"></span><span class="preprocessor">#if __cplusplus &lt;= 199711L &amp;&amp; \</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">    (!defined(_MSC_VER) || _MSC_VER &lt; 1600) &amp;&amp; \</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">    (!defined(__GNUC__) || \</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">      (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ &lt; 40400))</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">  #error A C++11 compatible compiler with support for the auto typing is \</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">         required for FlatBuffers.</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">  #error __cplusplus _MSC_VER __GNUC__  __GNUC_MINOR__  __GNUC_PATCHLEVEL__</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;</div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#if !defined(__clang__) &amp;&amp; \</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">    defined(__GNUC__) &amp;&amp; \</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">    (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ &lt; 40600)</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <span class="comment">// Backwards compatability for g++ 4.4, and 4.5 which don&#39;t have the nullptr</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  <span class="comment">// and constexpr keywords. Note the __clang__ check is needed, because clang</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">// presents itself as an older GNUC compiler.</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">  #ifndef nullptr_t</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="keyword">const</span> <span class="keyword">class </span>nullptr_t {</div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;      <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">inline</span> <span class="keyword">operator</span> T*() <span class="keyword">const</span> { <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;      <span class="keywordtype">void</span> operator&amp;() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    } <span class="keyword">nullptr</span> = {};</div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="preprocessor">  #ifndef constexpr</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor">    #define constexpr const</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="preprocessor">#endif</span></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;<span class="comment">// The wire format uses a little endian encoding (since that&#39;s efficient for</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="comment">// the common platforms).</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="preprocessor">#if defined(__s390x__)</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="preprocessor">  #define FLATBUFFERS_LITTLEENDIAN 0</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="preprocessor">#endif // __s390x__</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="preprocessor">#if !defined(FLATBUFFERS_LITTLEENDIAN)</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="preprocessor">  #if defined(__GNUC__) || defined(__clang__)</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="preprocessor">    #ifdef __BIG_ENDIAN__</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="preprocessor">      #define FLATBUFFERS_LITTLEENDIAN 0</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="preprocessor">    #else</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="preprocessor">      #define FLATBUFFERS_LITTLEENDIAN 1</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="preprocessor">    #endif // __BIG_ENDIAN__</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="preprocessor">  #elif defined(_MSC_VER)</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="preprocessor">    #if defined(_M_PPC)</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="preprocessor">      #define FLATBUFFERS_LITTLEENDIAN 0</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="preprocessor">    #else</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="preprocessor">      #define FLATBUFFERS_LITTLEENDIAN 1</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="preprocessor">    #endif</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="preprocessor">  #else</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor">    #error Unable to determine endianness, define FLATBUFFERS_LITTLEENDIAN.</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="preprocessor">#endif // !defined(FLATBUFFERS_LITTLEENDIAN)</span></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;<span class="preprocessor">#define FLATBUFFERS_VERSION_MAJOR 1</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="preprocessor">#define FLATBUFFERS_VERSION_MINOR 6</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="preprocessor">#define FLATBUFFERS_VERSION_REVISION 0</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="preprocessor">#define FLATBUFFERS_STRING_EXPAND(X) #X</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="preprocessor">#define FLATBUFFERS_STRING(X) FLATBUFFERS_STRING_EXPAND(X)</span></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;<span class="preprocessor">#if (!defined(_MSC_VER) || _MSC_VER &gt; 1600) &amp;&amp; \</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="preprocessor">    (!defined(__GNUC__) || (__GNUC__ * 100 + __GNUC_MINOR__ &gt;= 407))</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="preprocessor">  #define FLATBUFFERS_FINAL_CLASS final</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="preprocessor">  #define FLATBUFFERS_FINAL_CLASS</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="preprocessor">#if (!defined(_MSC_VER) || _MSC_VER &gt;= 1900) &amp;&amp; \</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="preprocessor">    (!defined(__GNUC__) || (__GNUC__ * 100 + __GNUC_MINOR__ &gt;= 406))</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="preprocessor">  #define FLATBUFFERS_CONSTEXPR constexpr</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="preprocessor">  #define FLATBUFFERS_CONSTEXPR</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="preprocessor">#if defined(__GXX_EXPERIMENTAL_CXX0X__) &amp;&amp; __GNUC__ * 10 + __GNUC_MINOR__ &gt;= 46 || \</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="preprocessor">    defined(_MSC_FULL_VER) &amp;&amp; _MSC_FULL_VER &gt;= 190023026</span></div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="preprocessor">  #define FLATBUFFERS_NOEXCEPT noexcept</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;<span class="preprocessor">  #define FLATBUFFERS_NOEXCEPT</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="preprocessor">#endif</span></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;<span class="preprocessor">#if defined(_MSC_VER)</span></div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="preprocessor">#pragma warning(push)</span></div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="preprocessor">#pragma warning(disable: 4127) // C4127: conditional expression is constant</span></div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="comment">/// @endcond</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="comment">/// @file</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="comment"></span><span class="keyword">namespace </span>flatbuffers {</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="comment">/// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="comment"></span><span class="comment">// Our default offset / size type, 32bit on purpose on 64bit systems.</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="comment">// Also, using a consistent offset type maintains compatibility of serialized</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="comment">// offset values between 32bit and 64bit systems.</span></div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="keyword">typedef</span> uint32_t uoffset_t;</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="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="comment">// Signed offsets for references that can go in both directions.</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="keyword">typedef</span> int32_t soffset_t;</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;<span class="comment">// Offset/index used in v-tables, can be changed to uint8_t in</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;<span class="comment">// format forks to save a bit of space if desired.</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="keyword">typedef</span> uint16_t voffset_t;</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;<span class="keyword">typedef</span> uintmax_t largest_scalar_t;</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="comment">// In 32bits, this evaluates to 2GB - 1</span></div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="preprocessor">#define FLATBUFFERS_MAX_BUFFER_SIZE ((1ULL &lt;&lt; (sizeof(soffset_t) * 8 - 1)) - 1)</span></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="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;<span class="comment">// We support aligning the contents of buffers up to this size.</span></div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<span class="preprocessor">#define FLATBUFFERS_MAX_ALIGNMENT 16</span></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;<span class="preprocessor">#ifndef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<span class="comment">// Pointer to relinquished memory.</span></div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="keyword">typedef</span> std::unique_ptr&lt;uint8_t, std::function&lt;void(uint8_t * <span class="comment">/* unused */</span>)&gt;&gt;</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;          unique_ptr_t;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="comment">// Wrapper for uoffset_t to allow safe template specialization.</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="comment">// Value is allowed to be 0 to indicate a null object (see e.g. AddOffset).</span></div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>Offset {</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  uoffset_t o;</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  Offset() : o(0) {}</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  Offset(uoffset_t _o) : o(_o) {}</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  Offset&lt;void&gt; Union()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Offset&lt;void&gt;(o); }</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  <span class="keywordtype">bool</span> IsNull()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !o; }</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;};</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;<span class="keyword">inline</span> <span class="keywordtype">void</span> EndianCheck() {</div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;  <span class="keywordtype">int</span> endiantest = 1;</div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  <span class="comment">// If this fails, see FLATBUFFERS_LITTLEENDIAN above.</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;  assert(*reinterpret_cast&lt;char *&gt;(&amp;endiantest) == FLATBUFFERS_LITTLEENDIAN);</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  (void)endiantest;</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;}</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="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T EndianSwap(T t) {</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;<span class="preprocessor">  #if defined(_MSC_VER)</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;<span class="preprocessor">    #define FLATBUFFERS_BYTESWAP16 _byteswap_ushort</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;<span class="preprocessor">    #define FLATBUFFERS_BYTESWAP32 _byteswap_ulong</span></div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;<span class="preprocessor">    #define FLATBUFFERS_BYTESWAP64 _byteswap_uint64</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;<span class="preprocessor">  #else</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;<span class="preprocessor">    #if defined(__GNUC__) &amp;&amp; __GNUC__ * 100 + __GNUC_MINOR__ &lt; 408</span></div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;      <span class="comment">// __builtin_bswap16 was missing prior to GCC 4.8.</span></div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="preprocessor">      #define FLATBUFFERS_BYTESWAP16(x) \</span></div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</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="l00190"></a><span class="lineno">  190</span>&#160;<span class="preprocessor">    #else</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;<span class="preprocessor">      #define FLATBUFFERS_BYTESWAP16 __builtin_bswap16</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;<span class="preprocessor">    #endif</span></div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;<span class="preprocessor">    #define FLATBUFFERS_BYTESWAP32 __builtin_bswap32</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;<span class="preprocessor">    #define FLATBUFFERS_BYTESWAP64 __builtin_bswap64</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</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="l00197"></a><span class="lineno">  197</span>&#160;    <span class="keywordflow">return</span> t;</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</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="l00199"></a><span class="lineno">  199</span>&#160;    <span class="keyword">auto</span> r = FLATBUFFERS_BYTESWAP16(*reinterpret_cast&lt;uint16_t *&gt;(&amp;t));</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</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="l00201"></a><span class="lineno">  201</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="l00202"></a><span class="lineno">  202</span>&#160;    <span class="keyword">auto</span> r = FLATBUFFERS_BYTESWAP32(*reinterpret_cast&lt;uint32_t *&gt;(&amp;t));</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</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="l00204"></a><span class="lineno">  204</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="l00205"></a><span class="lineno">  205</span>&#160;    <span class="keyword">auto</span> r = FLATBUFFERS_BYTESWAP64(*reinterpret_cast&lt;uint64_t *&gt;(&amp;t));</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</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="l00207"></a><span class="lineno">  207</span>&#160;  } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    assert(0);</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="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="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="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="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T EndianScalar(T t) {</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="preprocessor">  #if FLATBUFFERS_LITTLEENDIAN</span></div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    <span class="keywordflow">return</span> t;</div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;<span class="preprocessor">  #else</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    <span class="keywordflow">return</span> EndianSwap(t);</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;}</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;</div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; T ReadScalar(<span class="keyword">const</span> <span class="keywordtype">void</span> *p) {</div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  <span class="keywordflow">return</span> EndianScalar(*reinterpret_cast&lt;const T *&gt;(p));</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;</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> WriteScalar(<span class="keywordtype">void</span> *p, T t) {</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;  *<span class="keyword">reinterpret_cast&lt;</span>T *<span class="keyword">&gt;</span>(p) = EndianScalar(t);</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;</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">size_t</span> AlignOf() {</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;<span class="preprocessor">  #ifdef _MSC_VER</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    <span class="keywordflow">return</span> __alignof(T);</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;<span class="preprocessor">  #else</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;<span class="preprocessor">    #ifndef alignof</span></div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;      <span class="keywordflow">return</span> __alignof__(T);</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;<span class="preprocessor">    #else</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">alignof</span>(T);</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;<span class="preprocessor">    #endif</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;<span class="preprocessor">  #endif</span></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">// When we read serialized data from memory, in the case of most scalars,</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</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="l00242"></a><span class="lineno">  242</span>&#160;<span class="comment">// perform the indirection and return a pointer.</span></div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;<span class="comment">// The template specialization below does just that.</span></div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</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="l00245"></a><span class="lineno">  245</span>&#160;<span class="comment">// return type like this.</span></div>
-<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;<span class="comment">// The typedef is for the convenience of callers of this function</span></div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;<span class="comment">// (avoiding the need for a trailing return decltype)</span></div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IndirectHelper {</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  <span class="keyword">typedef</span> T return_type;</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  <span class="keyword">typedef</span> T mutable_return_type;</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</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="l00252"></a><span class="lineno">  252</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="l00253"></a><span class="lineno">  253</span>&#160;    <span class="keywordflow">return</span> EndianScalar((reinterpret_cast&lt;const T *&gt;(p))[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="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IndirectHelper&lt;Offset&lt;T&gt;&gt; {</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  <span class="keyword">typedef</span> <span class="keyword">const</span> T *return_type;</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  <span class="keyword">typedef</span> T *mutable_return_type;</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</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="l00260"></a><span class="lineno">  260</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="l00261"></a><span class="lineno">  261</span>&#160;    p += i * <span class="keyword">sizeof</span>(uoffset_t);</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>return_type<span class="keyword">&gt;</span>(p + ReadScalar&lt;uoffset_t&gt;(p));</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="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IndirectHelper&lt;const T *&gt; {</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  <span class="keyword">typedef</span> <span class="keyword">const</span> T *return_type;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  <span class="keyword">typedef</span> T *mutable_return_type;</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</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="l00269"></a><span class="lineno">  269</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="l00270"></a><span class="lineno">  270</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="l00271"></a><span class="lineno">  271</span>&#160;  }</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;</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;<span class="comment">// An STL compatible iterator implementation for Vector below, effectively</span></div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;<span class="comment">// calling Get() for every element.</span></div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</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="l00277"></a><span class="lineno">  277</span>&#160;<span class="keyword">struct </span>VectorIterator</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    : <span class="keyword">public</span> std::iterator&lt;std::random_access_iterator_tag, IT, uoffset_t&gt; {</div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  <span class="keyword">typedef</span> std::iterator&lt;std::random_access_iterator_tag, IT, uoffset_t&gt; super_type;</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="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="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="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="keyword">public</span>:</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;  VectorIterator(<span class="keyword">const</span> uint8_t *data, uoffset_t i) :</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;      data_(data + IndirectHelper&lt;T&gt;::element_stride * i) {}</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;  VectorIterator(<span class="keyword">const</span> VectorIterator &amp;other) : data_(other.data_) {}</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;<span class="preprocessor">  #ifndef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;  VectorIterator(VectorIterator &amp;&amp;other) : data_(std::move(other.data_)) {}</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  VectorIterator &amp;operator=(<span class="keyword">const</span> VectorIterator &amp;other) {</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    data_ = other.data_;</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</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;</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;  VectorIterator &amp;operator=(VectorIterator &amp;&amp;other) {</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;    data_ = other.data_;</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</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;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;  <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> VectorIterator &amp;other)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    <span class="keywordflow">return</span> data_ == other.data_;</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;  <span class="keywordtype">bool</span> operator&lt;(<span class="keyword">const</span> VectorIterator &amp;other)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    <span class="keywordflow">return</span> data_ &lt; other.data_;</div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;  }</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;  <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> VectorIterator &amp;other)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    <span class="keywordflow">return</span> data_ != other.data_;</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;</div>
-<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;  ptrdiff_t operator-(<span class="keyword">const</span> VectorIterator &amp;other)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    <span class="keywordflow">return</span> (data_ - other.data_) / IndirectHelper&lt;T&gt;::element_stride;</div>
-<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;  }</div>
-<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;</div>
-<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  <span class="keyword">typename</span> super_type::value_type operator *()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    <span class="keywordflow">return</span> IndirectHelper&lt;T&gt;::Read(data_, 0);</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;</div>
-<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;  <span class="keyword">typename</span> super_type::value_type operator-&gt;()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    <span class="keywordflow">return</span> IndirectHelper&lt;T&gt;::Read(data_, 0);</div>
-<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;  }</div>
-<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;</div>
-<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;  VectorIterator &amp;operator++() {</div>
-<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;    data_ += IndirectHelper&lt;T&gt;::element_stride;</div>
-<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;  }</div>
-<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;</div>
-<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;  VectorIterator operator++(<span class="keywordtype">int</span>) {</div>
-<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    VectorIterator temp(data_, 0);</div>
-<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    data_ += IndirectHelper&lt;T&gt;::element_stride;</div>
-<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    <span class="keywordflow">return</span> temp;</div>
-<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;  }</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;  VectorIterator operator+(<span class="keyword">const</span> uoffset_t &amp;offset)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    <span class="keywordflow">return</span> VectorIterator(data_ + offset * IndirectHelper&lt;T&gt;::element_stride, 0);</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;</div>
-<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;  VectorIterator&amp; operator+=(<span class="keyword">const</span> uoffset_t &amp;offset) {</div>
-<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;    data_ += offset * IndirectHelper&lt;T&gt;::element_stride;</div>
-<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</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;</div>
-<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;  VectorIterator &amp;operator--() {</div>
-<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    data_ -= IndirectHelper&lt;T&gt;::element_stride;</div>
-<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;  }</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;  VectorIterator operator--(<span class="keywordtype">int</span>) {</div>
-<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    VectorIterator temp(data_, 0);</div>
-<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;    data_ -= IndirectHelper&lt;T&gt;::element_stride;</div>
-<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;    <span class="keywordflow">return</span> temp;</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;  VectorIterator operator-(<span class="keyword">const</span> uoffset_t &amp;offset) {</div>
-<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    <span class="keywordflow">return</span> VectorIterator(data_ - offset * IndirectHelper&lt;T&gt;::element_stride, 0);</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;</div>
-<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;  VectorIterator&amp; operator-=(<span class="keyword">const</span> uoffset_t &amp;offset) {</div>
-<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    data_ -= offset * IndirectHelper&lt;T&gt;::element_stride;</div>
-<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;  }</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="keyword">private</span>:</div>
-<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;  <span class="keyword">const</span> uint8_t *data_;</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;</div>
-<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;<span class="keyword">struct </span>String;</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="comment">// This is used as a helper type for accessing vectors.</span></div>
-<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;<span class="comment">// Vector::data() assumes the vector elements start after the length field.</span></div>
-<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keyword">class </span>Vector {</div>
-<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;  <span class="keyword">typedef</span> VectorIterator&lt;T, typename IndirectHelper&lt;T&gt;::mutable_return_type&gt;</div>
-<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;    iterator;</div>
-<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;  <span class="keyword">typedef</span> VectorIterator&lt;T, typename IndirectHelper&lt;T&gt;::return_type&gt;</div>
-<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    const_iterator;</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;  uoffset_t size()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> EndianScalar(length_); }</div>
-<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;</div>
-<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;  <span class="comment">// Deprecated: use size(). Here for backwards compatibility.</span></div>
-<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;  uoffset_t Length()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> size(); }</div>
-<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;</div>
-<div class="line"><a name="l00384"></a><span class="lineno">  384</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="l00385"></a><span class="lineno">  385</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="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="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="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="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="l00386"></a><span class="lineno">  386</span>&#160;</div>
-<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;  return_type Get(uoffset_t i)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;    assert(i &lt; size());</div>
-<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    <span class="keywordflow">return</span> IndirectHelper&lt;T&gt;::Read(Data(), i);</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;</div>
-<div class="line"><a name="l00392"></a><span class="lineno">  392</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="l00393"></a><span class="lineno">  393</span>&#160;</div>
-<div class="line"><a name="l00394"></a><span class="lineno">  394</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="l00395"></a><span class="lineno">  395</span>&#160;  <span class="comment">// type. This function makes it convenient to retrieve value with enum</span></div>
-<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;  <span class="comment">// type E.</span></div>
-<div class="line"><a name="l00397"></a><span class="lineno">  397</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="l00398"></a><span class="lineno">  398</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="l00399"></a><span class="lineno">  399</span>&#160;  }</div>
-<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;</div>
-<div class="line"><a name="l00401"></a><span class="lineno">  401</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="l00402"></a><span class="lineno">  402</span>&#160;  <span class="comment">// to make sure this is the right type!</span></div>
-<div class="line"><a name="l00403"></a><span class="lineno">  403</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="l00404"></a><span class="lineno">  404</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="l00405"></a><span class="lineno">  405</span>&#160;  }</div>
-<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;</div>
-<div class="line"><a name="l00407"></a><span class="lineno">  407</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="l00408"></a><span class="lineno">  408</span>&#160;  <span class="comment">// to make sure this is actually a string!</span></div>
-<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;  <span class="keyword">const</span> String *GetAsString(uoffset_t i)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>String *<span class="keyword">&gt;</span>(Get(i));</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;</div>
-<div class="line"><a name="l00413"></a><span class="lineno">  413</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="l00414"></a><span class="lineno">  414</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="l00415"></a><span class="lineno">  415</span>&#160;  }</div>
-<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;</div>
-<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;  iterator begin() { <span class="keywordflow">return</span> iterator(Data(), 0); }</div>
-<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;  const_iterator begin()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> const_iterator(Data(), 0); }</div>
-<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;</div>
-<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;  iterator end() { <span class="keywordflow">return</span> iterator(Data(), size()); }</div>
-<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;  const_iterator end()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> const_iterator(Data(), size()); }</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="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="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="comment">// Change elements if you have a non-const pointer to this object.</span></div>
-<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;  <span class="comment">// Scalars only. See reflection.h, and the documentation.</span></div>
-<div class="line"><a name="l00425"></a><span class="lineno">  425</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="l00426"></a><span class="lineno">  426</span>&#160;    assert(i &lt; size());</div>
-<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;    WriteScalar(data() + i, val);</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;</div>
-<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;  <span class="comment">// Change an element of a vector of tables (or strings).</span></div>
-<div class="line"><a name="l00431"></a><span class="lineno">  431</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="l00432"></a><span class="lineno">  432</span>&#160;  <span class="comment">// e.g. reflection::AddFlatBuffer().</span></div>
-<div class="line"><a name="l00433"></a><span class="lineno">  433</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="l00434"></a><span class="lineno">  434</span>&#160;    assert(i &lt; size());</div>
-<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;    assert(<span class="keyword">sizeof</span>(T) == <span class="keyword">sizeof</span>(uoffset_t));</div>
-<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;    WriteScalar(data() + i,</div>
-<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;                static_cast&lt;uoffset_t&gt;(val - (Data() + i * <span class="keyword">sizeof</span>(uoffset_t))));</div>
-<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;  }</div>
-<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;</div>
-<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;  <span class="comment">// Get a mutable pointer to tables/strings inside this vector.</span></div>
-<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;  mutable_return_type GetMutableObject(uoffset_t i)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;    assert(i &lt; size());</div>
-<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span>mutable_return_type<span class="keyword">&gt;</span>(IndirectHelper&lt;T&gt;::Read(Data(), i));</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="comment">// The raw data in little endian format. Use with care.</span></div>
-<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;  <span class="keyword">const</span> uint8_t *Data()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00448"></a><span class="lineno">  448</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="l00449"></a><span class="lineno">  449</span>&#160;  }</div>
-<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;</div>
-<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;  uint8_t *Data() {</div>
-<div class="line"><a name="l00452"></a><span class="lineno">  452</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="l00453"></a><span class="lineno">  453</span>&#160;  }</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;  <span class="comment">// Similarly, but typed, much like std::vector::data</span></div>
-<div class="line"><a name="l00456"></a><span class="lineno">  456</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="l00457"></a><span class="lineno">  457</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="l00458"></a><span class="lineno">  458</span>&#160;</div>
-<div class="line"><a name="l00459"></a><span class="lineno">  459</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="l00460"></a><span class="lineno">  460</span>&#160;    <span class="keywordtype">void</span> *search_result = std::bsearch(&amp;key, Data(), size(),</div>
-<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;        IndirectHelper&lt;T&gt;::element_stride, KeyCompare&lt;K&gt;);</div>
-<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;</div>
-<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;    <span class="keywordflow">if</span> (!search_result) {</div>
-<div class="line"><a name="l00464"></a><span class="lineno">  464</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="l00465"></a><span class="lineno">  465</span>&#160;    }</div>
-<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;</div>
-<div class="line"><a name="l00467"></a><span class="lineno">  467</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="l00468"></a><span class="lineno">  468</span>&#160;</div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;    <span class="keywordflow">return</span> IndirectHelper&lt;T&gt;::Read(element, 0);</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;</div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</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="l00474"></a><span class="lineno">  474</span>&#160;  <span class="comment">// try to construct these manually.</span></div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;  Vector();</div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;</div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;  uoffset_t length_;</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;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;  <span class="comment">// This class is a pointer. Copying will therefore create an invalid object.</span></div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;  <span class="comment">// Private and unimplemented copy constructor.</span></div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;  Vector(<span class="keyword">const</span> Vector&amp;);</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="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="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="l00485"></a><span class="lineno">  485</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="l00486"></a><span class="lineno">  486</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="l00487"></a><span class="lineno">  487</span>&#160;    <span class="keyword">auto</span> table = IndirectHelper&lt;T&gt;::Read(data, 0);</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;    <span class="comment">// std::bsearch compares with the operands transposed, so we negate the</span></div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;    <span class="comment">// result here.</span></div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;    <span class="keywordflow">return</span> -table-&gt;KeyCompareWithValue(*key);</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;};</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="comment">// Represent a vector much like the template above, but in this case we</span></div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</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="l00497"></a><span class="lineno">  497</span>&#160;<span class="keyword">class </span>VectorOfAny {</div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;  uoffset_t size()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> EndianScalar(length_); }</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;  <span class="keyword">const</span> uint8_t *Data()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</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="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;  uint8_t *Data() {</div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</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="l00506"></a><span class="lineno">  506</span>&#160;  }</div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;  VectorOfAny();</div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;</div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;  uoffset_t length_;</div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;</div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;  VectorOfAny(<span class="keyword">const</span> VectorOfAny&amp;);</div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;};</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;<span class="preprocessor">#ifndef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</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="l00518"></a><span class="lineno">  518</span>&#160;Vector&lt;Offset&lt;T&gt;&gt; *VectorCast(Vector&lt;Offset&lt;U&gt;&gt; *ptr) {</div>
-<div class="line"><a name="l00519"></a><span class="lineno">  519</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="l00520"></a><span class="lineno">  520</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>Vector&lt;Offset&lt;T&gt;<span class="keyword">&gt;</span> *&gt;(ptr);</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;</div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</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="l00524"></a><span class="lineno">  524</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="l00525"></a><span class="lineno">  525</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="l00526"></a><span class="lineno">  526</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="l00527"></a><span class="lineno">  527</span>&#160;}</div>
-<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;<span class="comment">// Convenient helper function to get the length of any vector, regardless</span></div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;<span class="comment">// of wether it is null or not (the field is not set).</span></div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</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="l00533"></a><span class="lineno">  533</span>&#160;  <span class="keywordflow">return</span> v ? v-&gt;Length() : 0;</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;}</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;<span class="keyword">struct </span>String : <span class="keyword">public</span> Vector&lt;char&gt; {</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</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="l00538"></a><span class="lineno">  538</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="l00539"></a><span class="lineno">  539</span>&#160;</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;  <span class="keywordtype">bool</span> operator &lt;(<span class="keyword">const</span> String &amp;o)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;    <span class="keywordflow">return</span> strcmp(c_str(), o.c_str()) &lt; 0;</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;</div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;<span class="comment">// Simple indirection for buffer allocation, to allow this to be overridden</span></div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;<span class="comment">// with custom allocation (see the FlatBufferBuilder constructor).</span></div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;<span class="keyword">class </span>simple_allocator {</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;  <span class="keyword">virtual</span> ~simple_allocator() {}</div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;  <span class="keyword">virtual</span> uint8_t *allocate(<span class="keywordtype">size_t</span> size)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">new</span> uint8_t[size]; }</div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> deallocate(uint8_t *p)<span class="keyword"> const </span>{ <span class="keyword">delete</span>[] p; }</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</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="comment">// This is a minimal replication of std::vector&lt;uint8_t&gt; functionality,</span></div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</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="l00556"></a><span class="lineno">  556</span>&#160;<span class="comment">// in the lowest address in the vector.</span></div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;<span class="keyword">class </span>vector_downward {</div>
-<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;  <span class="keyword">explicit</span> vector_downward(<span class="keywordtype">size_t</span> initial_size,</div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;                           <span class="keyword">const</span> simple_allocator &amp;allocator)</div>
-<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;    : reserved_((initial_size + sizeof(largest_scalar_t) - 1) &amp;</div>
-<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;        ~(sizeof(largest_scalar_t) - 1)),</div>
-<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;      buf_(allocator.allocate(reserved_)),</div>
-<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;      cur_(buf_ + reserved_),</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;      allocator_(allocator) {}</div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;</div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;  ~vector_downward() {</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;    <span class="keywordflow">if</span> (buf_)</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;      allocator_.deallocate(buf_);</div>
-<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;  }</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;</div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;  <span class="keywordtype">void</span> clear() {</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;    <span class="keywordflow">if</span> (buf_ == <span class="keyword">nullptr</span>)</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;      buf_ = allocator_.allocate(reserved_);</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="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="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;    cur_ = buf_ + reserved_;</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;</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;<span class="preprocessor">  #ifndef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;  <span class="comment">// Relinquish the pointer to the caller.</span></div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;  unique_ptr_t release() {</div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;    <span class="comment">// Actually deallocate from the start of the allocated memory.</span></div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;    std::function&lt;void(uint8_t *)&gt; deleter(</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;      std::bind(&amp;simple_allocator::deallocate, allocator_, buf_));</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;    <span class="comment">// Point to the desired offset.</span></div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;    unique_ptr_t retval(data(), deleter);</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;    <span class="comment">// Don&#39;t deallocate when this instance is destroyed.</span></div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;    buf_ = <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;    cur_ = <span class="keyword">nullptr</span>;</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;    <span class="keywordflow">return</span> retval;</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;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;</div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;  <span class="keywordtype">size_t</span> growth_policy(<span class="keywordtype">size_t</span> bytes) {</div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;    <span class="keywordflow">return</span> (bytes / 2) &amp; ~(<span class="keyword">sizeof</span>(largest_scalar_t) - 1);</div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;  }</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;</div>
-<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;  uint8_t *make_space(<span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;    <span class="keywordflow">if</span> (len &gt; static_cast&lt;size_t&gt;(cur_ - buf_)) {</div>
-<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;      reallocate(len);</div>
-<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;    }</div>
-<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;    cur_ -= len;</div>
-<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;    <span class="comment">// Beyond this, signed offsets may not have enough range:</span></div>
-<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;    <span class="comment">// (FlatBuffers &gt; 2GB not supported).</span></div>
-<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;    assert(size() &lt; FLATBUFFERS_MAX_BUFFER_SIZE);</div>
-<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;    <span class="keywordflow">return</span> cur_;</div>
-<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;  }</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;  uoffset_t size()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;    assert(cur_ != <span class="keyword">nullptr</span> &amp;&amp; buf_ != <span class="keyword">nullptr</span>);</div>
-<div class="line"><a name="l00614"></a><span class="lineno">  614</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="l00615"></a><span class="lineno">  615</span>&#160;  }</div>
-<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;</div>
-<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;  uint8_t *data()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;    assert(cur_ != <span class="keyword">nullptr</span>);</div>
-<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;    <span class="keywordflow">return</span> cur_;</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;  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="l00623"></a><span class="lineno">  623</span>&#160;</div>
-<div class="line"><a name="l00624"></a><span class="lineno">  624</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="l00625"></a><span class="lineno">  625</span>&#160;    <span class="keyword">auto</span> dest = make_space(num);</div>
-<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;    memcpy(dest, bytes, num);</div>
-<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;  }</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;  <span class="comment">// Specialized version of push() that avoids memcpy call for small data.</span></div>
-<div class="line"><a name="l00630"></a><span class="lineno">  630</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="l00631"></a><span class="lineno">  631</span>&#160;    <span class="keyword">auto</span> dest = make_space(<span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l00632"></a><span class="lineno">  632</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="l00633"></a><span class="lineno">  633</span>&#160;  }</div>
-<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;</div>
-<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;  <span class="comment">// fill() is most frequently called with small byte counts (&lt;= 4),</span></div>
-<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;  <span class="comment">// which is why we&#39;re using loops rather than calling memset.</span></div>
-<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;  <span class="keywordtype">void</span> fill(<span class="keywordtype">size_t</span> zero_pad_bytes) {</div>
-<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;    <span class="keyword">auto</span> dest = make_space(zero_pad_bytes);</div>
-<div class="line"><a name="l00639"></a><span class="lineno">  639</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="l00640"></a><span class="lineno">  640</span>&#160;  }</div>
-<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;</div>
-<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;  <span class="comment">// Version for when we know the size is larger.</span></div>
-<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;  <span class="keywordtype">void</span> fill_big(<span class="keywordtype">size_t</span> zero_pad_bytes) {</div>
-<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;    <span class="keyword">auto</span> dest = make_space(zero_pad_bytes);</div>
-<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;    memset(dest, 0, zero_pad_bytes);</div>
-<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;  }</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;  <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="l00649"></a><span class="lineno">  649</span>&#160;</div>
-<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;  <span class="comment">// You shouldn&#39;t really be copying instances of this class.</span></div>
-<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;  vector_downward(<span class="keyword">const</span> vector_downward &amp;);</div>
-<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;  vector_downward &amp;operator=(<span class="keyword">const</span> vector_downward &amp;);</div>
-<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;</div>
-<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;  <span class="keywordtype">size_t</span> reserved_;</div>
-<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;  uint8_t *buf_;</div>
-<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;  uint8_t *cur_;  <span class="comment">// Points at location between empty (below) and used (above).</span></div>
-<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;  <span class="keyword">const</span> simple_allocator &amp;allocator_;</div>
-<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;</div>
-<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;  <span class="keywordtype">void</span> reallocate(<span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;    <span class="keyword">auto</span> old_size = size();</div>
-<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;    <span class="keyword">auto</span> largest_align = AlignOf&lt;largest_scalar_t&gt;();</div>
-<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;    reserved_ += (std::max)(len, growth_policy(reserved_));</div>
-<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;    <span class="comment">// Round up to avoid undefined behavior from unaligned loads and stores.</span></div>
-<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;    reserved_ = (reserved_ + (largest_align - 1)) &amp; ~(largest_align - 1);</div>
-<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;    <span class="keyword">auto</span> new_buf = allocator_.allocate(reserved_);</div>
-<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;    <span class="keyword">auto</span> new_cur = new_buf + reserved_ - old_size;</div>
-<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;    memcpy(new_cur, cur_, old_size);</div>
-<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;    cur_ = new_cur;</div>
-<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;    allocator_.deallocate(buf_);</div>
-<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;    buf_ = new_buf;</div>
-<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;  }</div>
-<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;};</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;<span class="comment">// Converts a Field ID to a virtual table offset.</span></div>
-<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;<span class="keyword">inline</span> voffset_t FieldIndexToOffset(voffset_t field_id) {</div>
-<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;  <span class="comment">// Should correspond to what EndTable() below builds up.</span></div>
-<div class="line"><a name="l00678"></a><span class="lineno">  678</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="l00679"></a><span class="lineno">  679</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="l00680"></a><span class="lineno">  680</span>&#160;}</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">// Computes how many bytes you&#39;d have to pad to be able to write an</span></div>
-<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;<span class="comment">// &quot;scalar_size&quot; scalar if the buffer had grown to &quot;buf_size&quot; (downwards in</span></div>
-<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;<span class="comment">// memory).</span></div>
-<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">size_t</span> PaddingBytes(<span class="keywordtype">size_t</span> buf_size, <span class="keywordtype">size_t</span> scalar_size) {</div>
-<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;  <span class="keywordflow">return</span> ((~buf_size) + 1) &amp; (scalar_size - 1);</div>
-<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;}</div>
-<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;</div>
-<div class="line"><a name="l00689"></a><span class="lineno">  689</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="l00690"></a><span class="lineno">  690</span>&#160;  <span class="keywordflow">return</span> v.empty() ? <span class="keyword">nullptr</span> : &amp;v.front();</div>
-<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;}</div>
-<div class="line"><a name="l00692"></a><span class="lineno">  692</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="l00693"></a><span class="lineno">  693</span>&#160;  <span class="keywordflow">return</span> v.empty() ? <span class="keyword">nullptr</span> : &amp;v.front();</div>
-<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;}</div>
-<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;<span class="comment">/// @endcond</span></div>
-<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;<span class="comment">/// @addtogroup flatbuffers_cpp_api</span></div>
-<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;<span class="comment">/// @{</span></div>
-<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;<span class="comment">/// @class FlatBufferBuilder</span></div>
-<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;<span class="comment">/// @brief Helper class to hold data needed in creation of a FlatBuffer.</span></div>
-<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;<span class="comment">/// To serialize data, you typically call one of the `Create*()` functions in</span></div>
-<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;<span class="comment">/// the generated code, which in turn call a sequence of `StartTable`/</span></div>
-<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;<span class="comment">/// `PushElement`/`AddElement`/`EndTable`, or the builtin `CreateString`/</span></div>
-<div class="line"><a name="l00705"></a><span class="lineno">  705</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="l00706"></a><span class="lineno">  706</span>&#160;<span class="comment">/// the root. `Finish()` wraps up the buffer ready for transport.</span></div>
-<div class="line"><a name="l00707"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html">  707</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><span class="comment"></span></div>
-<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;<span class="comment">/// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;<span class="comment"></span>FLATBUFFERS_FINAL_CLASS<span class="comment"></span></div>
-<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;<span class="comment">/// @endcond</span></div>
-<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;<span class="comment"></span>{</div>
-<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
-<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;<span class="comment">  /// @brief Default constructor for FlatBufferBuilder.</span></div>
-<div class="line"><a name="l00714"></a><span class="lineno">  714</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="l00715"></a><span class="lineno">  715</span>&#160;<span class="comment">  /// to`1024`.</span></div>
-<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;<span class="comment">  /// @param[in] allocator A pointer to the `simple_allocator` that should be</span></div>
-<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;<span class="comment">  /// used. Defaults to `nullptr`, which means the `default_allocator` will be</span></div>
-<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;<span class="comment">  /// be used.</span></div>
-<div class="line"><a name="l00719"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ac72b54a75e0c329e0ce0b8fab758e256">  719</a></span>&#160;<span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac72b54a75e0c329e0ce0b8fab758e256">FlatBufferBuilder</a>(uoffset_t initial_size = 1024,</div>
-<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;                             <span class="keyword">const</span> simple_allocator *allocator = <span class="keyword">nullptr</span>)</div>
-<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;      : buf_(initial_size, allocator ? *allocator : default_allocator),</div>
-<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;        nested(false), finished(false), minalign_(1), force_defaults_(false),</div>
-<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;        dedup_vtables_(true), string_pool(nullptr) {</div>
-<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;    offsetbuf_.reserve(16);  <span class="comment">// Avoid first few reallocs.</span></div>
-<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;    vtables_.reserve(16);</div>
-<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;    EndianCheck();</div>
-<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;  }</div>
-<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;</div>
-<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;  ~<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html">FlatBufferBuilder</a>() {</div>
-<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;    <span class="keywordflow">if</span> (string_pool) <span class="keyword">delete</span> string_pool;</div>
-<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;  }</div>
-<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00733"></a><span class="lineno">  733</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="l00734"></a><span class="lineno">  734</span>&#160;<span class="comment">  /// to construct another buffer.</span></div>
-<div class="line"><a name="l00735"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412">  735</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="l00736"></a><span class="lineno">  736</span>&#160;    buf_.clear();</div>
-<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;    offsetbuf_.clear();</div>
-<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;    nested = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;    finished = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;    vtables_.clear();</div>
-<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;    minalign_ = 1;</div>
-<div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;    <span class="keywordflow">if</span> (string_pool) string_pool-&gt;clear();</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 The current size of the serialized buffer, counting from the end.</span></div>
-<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;<span class="comment">  /// @return Returns an `uoffset_t` with the current size of the buffer.</span></div>
-<div class="line"><a name="l00747"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">  747</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="l00748"></a><span class="lineno">  748</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;<span class="comment">  /// @brief Get the serialized buffer (after you call `Finish()`).</span></div>
-<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;<span class="comment">  /// @return Returns an `uint8_t` pointer to the FlatBuffer data inside the</span></div>
-<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;<span class="comment">  /// buffer.</span></div>
-<div class="line"><a name="l00752"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a8dc35f792179df4ca850492c1796d8b8">  752</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="l00753"></a><span class="lineno">  753</span>&#160;    Finished();</div>
-<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;    <span class="keywordflow">return</span> buf_.data();</div>
-<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;  }</div>
-<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;<span class="comment">  /// @brief Get a pointer to an unfinished buffer.</span></div>
-<div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;<span class="comment">  /// @return Returns a `uint8_t` pointer to the unfinished buffer.</span></div>
-<div class="line"><a name="l00759"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a3f4252e9bc005ba6c700469544fdccc9">  759</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="l00760"></a><span class="lineno">  760</span>&#160;</div>
-<div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;<span class="preprocessor">  #ifndef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;<span class="comment">  /// @brief Get the released pointer to the serialized buffer.</span></div>
-<div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;<span class="comment"></span><span class="comment">  /// @warning Do NOT attempt to use this FlatBufferBuilder afterwards!</span></div>
-<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;<span class="comment"></span><span class="comment">  /// @return The `unique_ptr` returned has a special allocator that knows how</span></div>
-<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;<span class="comment"></span><span class="comment">  /// to deallocate this pointer (since it points to the middle of an</span></div>
-<div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;<span class="comment"></span><span class="comment">  /// allocation). Thus, do not mix this pointer with other `unique_ptr`&#39;s, or</span></div>
-<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;<span class="comment"></span><span class="comment">  /// call `release()`/`reset()` on it.</span></div>
-<div class="line"><a name="l00768"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a21c7f933d7ff1212f2090763ef9f0c44">  768</a></span>&#160;<span class="comment"></span>  unique_ptr_t <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a21c7f933d7ff1212f2090763ef9f0c44">ReleaseBufferPointer</a>() {</div>
-<div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;    Finished();</div>
-<div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;    <span class="keywordflow">return</span> buf_.release();</div>
-<div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;  }</div>
-<div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;<span class="comment">  /// @brief get the minimum alignment this buffer needs to be accessed</span></div>
-<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;<span class="comment">  /// properly. This is only known once all elements have been written (after</span></div>
-<div class="line"><a name="l00776"></a><span class="lineno">  776</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="l00777"></a><span class="lineno">  777</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="l00778"></a><span class="lineno">  778</span>&#160;<span class="comment">  /// without first having to copy it into its own buffer.</span></div>
-<div class="line"><a name="l00779"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#aa1ebce1f3f46832946a95952af1e9c2b">  779</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="l00780"></a><span class="lineno">  780</span>&#160;    Finished();</div>
-<div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;    <span class="keywordflow">return</span> minalign_;</div>
-<div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;  }</div>
-<div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;<span class="comment"></span>  <span class="keywordtype">void</span> Finished()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00786"></a><span class="lineno">  786</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="l00787"></a><span class="lineno">  787</span>&#160;    <span class="comment">// which hasn&#39;t been finished yet. Be sure to call</span></div>
-<div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;    <span class="comment">// FlatBufferBuilder::Finish with your root table.</span></div>
-<div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;    <span class="comment">// If you really need to access an unfinished buffer, call</span></div>
-<div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;    <span class="comment">// GetCurrentBufferPointer instead.</span></div>
-<div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;    assert(finished);</div>
-<div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;  }<span class="comment"></span></div>
-<div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;<span class="comment">  /// @endcond</span></div>
-<div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00795"></a><span class="lineno">  795</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="l00796"></a><span class="lineno">  796</span>&#160;<span class="comment">  /// don&#39;t get serialized into the buffer.</span></div>
-<div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;<span class="comment">  /// @param[in] bool fd When set to `true`, always serializes default values.</span></div>
-<div class="line"><a name="l00798"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a">  798</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="l00799"></a><span class="lineno">  799</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;<span class="comment">  /// @brief By default vtables are deduped in order to save space.</span></div>
-<div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;<span class="comment">  /// @param[in] bool dedup When set to `true`, dedup vtables.</span></div>
-<div class="line"><a name="l00802"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961">  802</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="l00803"></a><span class="lineno">  803</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l00805"></a><span class="lineno">  805</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="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="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="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="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="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="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> Align(<span class="keywordtype">size_t</span> elem_size) {</div>
-<div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;    <span class="keywordflow">if</span> (elem_size &gt; minalign_) minalign_ = elem_size;</div>
-<div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;    buf_.fill(PaddingBytes(buf_.size(), elem_size));</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> PushFlatBuffer(<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;    PushBytes(bytes, size);</div>
-<div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;    finished = <span class="keyword">true</span>;</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;</div>
-<div class="line"><a name="l00817"></a><span class="lineno">  817</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="l00818"></a><span class="lineno">  818</span>&#160;    buf_.push(bytes, size);</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;</div>
-<div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;  <span class="keywordtype">void</span> PopBytes(<span class="keywordtype">size_t</span> amount) { buf_.pop(amount); }</div>
-<div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;</div>
-<div class="line"><a name="l00823"></a><span class="lineno">  823</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="l00824"></a><span class="lineno">  824</span>&#160;<span class="preprocessor">    #ifndef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;    <span class="comment">// The code assumes power of 2 sizes and endian-swap-ability.</span></div>
-<div class="line"><a name="l00826"></a><span class="lineno">  826</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="l00827"></a><span class="lineno">  827</span>&#160;<span class="preprocessor">    #endif</span></div>
-<div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;  }</div>
-<div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;</div>
-<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;  <span class="comment">// Write a single aligned scalar to the buffer</span></div>
-<div class="line"><a name="l00831"></a><span class="lineno">  831</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="l00832"></a><span class="lineno">  832</span>&#160;    AssertScalarT&lt;T&gt;();</div>
-<div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;    T litle_endian_element = EndianScalar(element);</div>
-<div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;    Align(<span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;    buf_.push_small(litle_endian_element);</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</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="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="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="l00840"></a><span class="lineno">  840</span>&#160;    <span class="comment">// Special case for offsets: see ReferTo below.</span></div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;    <span class="keywordflow">return</span> PushElement(ReferTo(off.o));</div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;  }</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</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="l00845"></a><span class="lineno">  845</span>&#160;  <span class="comment">// vtables later.</span></div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;  <span class="keywordtype">void</span> TrackField(voffset_t field, uoffset_t off) {</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;    FieldLoc fl = { off, field };</div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;    offsetbuf_.push_back(fl);</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;  }</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;  <span class="comment">// Like PushElement, but additionally tracks the field this represents.</span></div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</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="l00853"></a><span class="lineno">  853</span>&#160;    <span class="comment">// We don&#39;t serialize values equal to the default.</span></div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;    <span class="keywordflow">if</span> (e == def &amp;&amp; !force_defaults_) <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;    <span class="keyword">auto</span> off = PushElement(e);</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;    TrackField(field, off);</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> AddOffset(voffset_t field, Offset&lt;T&gt; off) {</div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</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="l00861"></a><span class="lineno">  861</span>&#160;    AddElement(field, ReferTo(off.o), static_cast&lt;uoffset_t&gt;(0));</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;</div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</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="l00865"></a><span class="lineno">  865</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="l00866"></a><span class="lineno">  866</span>&#160;    Align(AlignOf&lt;T&gt;());</div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;    buf_.push_small(*structptr);</div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;    TrackField(field, <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>());</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;</div>
-<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;  <span class="keywordtype">void</span> AddStructOffset(voffset_t field, uoffset_t off) {</div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;    TrackField(field, off);</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">// Offsets initially are relative to the end of the buffer (downwards).</span></div>
-<div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;  <span class="comment">// This function converts them to be relative to the current location</span></div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;  <span class="comment">// in the buffer (when stored here), pointing upwards.</span></div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;  uoffset_t ReferTo(uoffset_t off) {</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;    <span class="comment">// Align to ensure GetSize() below is correct.</span></div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;    Align(<span class="keyword">sizeof</span>(uoffset_t));</div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;    <span class="comment">// Offset must refer to something already in buffer.</span></div>
-<div class="line"><a name="l00882"></a><span class="lineno">  882</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="l00883"></a><span class="lineno">  883</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="l00884"></a><span class="lineno">  884</span>&#160;  }</div>
-<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;  <span class="keywordtype">void</span> NotNested() {</div>
-<div class="line"><a name="l00887"></a><span class="lineno">  887</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="l00888"></a><span class="lineno">  888</span>&#160;    <span class="comment">// during the construction of its parent table (between the MyTableBuilder</span></div>
-<div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;    <span class="comment">// and table.Finish().</span></div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;    <span class="comment">// Move the creation of these sub-objects to above the MyTableBuilder to</span></div>
-<div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;    <span class="comment">// not get this assert.</span></div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</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="l00893"></a><span class="lineno">  893</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="l00894"></a><span class="lineno">  894</span>&#160;    <span class="comment">// to not fit anymore. It also leads to vtable duplication.</span></div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;    assert(!nested);</div>
-<div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;  }</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;</div>
-<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;  <span class="comment">// From generated code (or from the parser), we call StartTable/EndTable</span></div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;  <span class="comment">// with a sequence of AddElement calls in between.</span></div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;  uoffset_t StartTable() {</div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;    NotNested();</div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;    nested = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</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="l00904"></a><span class="lineno">  904</span>&#160;  }</div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;</div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</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="l00907"></a><span class="lineno">  907</span>&#160;  <span class="comment">// table, comparing it against existing vtables, and writing the</span></div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;  <span class="comment">// resulting vtable offset.</span></div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;  uoffset_t EndTable(uoffset_t start, voffset_t numfields) {</div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;    <span class="comment">// If you get this assert, a corresponding StartTable wasn&#39;t called.</span></div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;    assert(nested);</div>
-<div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;    <span class="comment">// Write the vtable offset, which is the start of any Table.</span></div>
-<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;    <span class="comment">// We fill it&#39;s value later.</span></div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;    <span class="keyword">auto</span> vtableoffsetloc = PushElement&lt;soffset_t&gt;(0);</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;    <span class="comment">// Write a vtable, which consists entirely of voffset_t elements.</span></div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</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="l00917"></a><span class="lineno">  917</span>&#160;    <span class="comment">// by the offsets themselves. In reverse:</span></div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;    buf_.fill_big(numfields * <span class="keyword">sizeof</span>(voffset_t));</div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;    <span class="keyword">auto</span> table_object_size = vtableoffsetloc - start;</div>
-<div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;    assert(table_object_size &lt; 0x10000);  <span class="comment">// Vtable use 16bit offsets.</span></div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</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="l00922"></a><span class="lineno">  922</span>&#160;    PushElement&lt;voffset_t&gt;(FieldIndexToOffset(numfields));</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;    <span class="comment">// Write the offsets into the table</span></div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> field_location = offsetbuf_.begin();</div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;              field_location != offsetbuf_.end();</div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;            ++field_location) {</div>
-<div class="line"><a name="l00927"></a><span class="lineno">  927</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="l00928"></a><span class="lineno">  928</span>&#160;      <span class="comment">// If this asserts, it means you&#39;ve set a field twice.</span></div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;      assert(!ReadScalar&lt;voffset_t&gt;(buf_.data() + field_location-&gt;id));</div>
-<div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;      WriteScalar&lt;voffset_t&gt;(buf_.data() + field_location-&gt;id, pos);</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;    }</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;    offsetbuf_.clear();</div>
-<div class="line"><a name="l00933"></a><span class="lineno">  933</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="l00934"></a><span class="lineno">  934</span>&#160;    <span class="keyword">auto</span> vt1_size = ReadScalar&lt;voffset_t&gt;(vt1);</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</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="l00936"></a><span class="lineno">  936</span>&#160;    <span class="comment">// See if we already have generated a vtable with this exact same</span></div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</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="l00938"></a><span class="lineno">  938</span>&#160;    <span class="keywordflow">if</span> (dedup_vtables_) {</div>
-<div class="line"><a name="l00939"></a><span class="lineno">  939</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="l00940"></a><span class="lineno">  940</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="l00941"></a><span class="lineno">  941</span>&#160;        <span class="keyword">auto</span> vt2_size = *vt2;</div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</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="l00943"></a><span class="lineno">  943</span>&#160;        vt_use = *it;</div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</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="l00945"></a><span class="lineno">  945</span>&#160;        <span class="keywordflow">break</span>;</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">// If this is a new vtable, remember it.</span></div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</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="l00950"></a><span class="lineno">  950</span>&#160;      vtables_.push_back(vt_use);</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;    <span class="comment">// Fill the vtable offset we created above.</span></div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;    <span class="comment">// The offset points from the beginning of the object to where the</span></div>
-<div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;    <span class="comment">// vtable is stored.</span></div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;    <span class="comment">// Offsets default direction is downward in memory for future format</span></div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;    <span class="comment">// flexibility (storing all vtables at the start of the file).</span></div>
-<div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;    WriteScalar(buf_.data_at(vtableoffsetloc),</div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;                <span class="keyword">static_cast&lt;</span>soffset_t<span class="keyword">&gt;</span>(vt_use) -</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;                  static_cast&lt;soffset_t&gt;(vtableoffsetloc));</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;</div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;    nested = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;    <span class="keywordflow">return</span> vtableoffsetloc;</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;</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</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="l00966"></a><span class="lineno">  966</span>&#160;  <span class="comment">// just been constructed.</span></div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</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="l00968"></a><span class="lineno">  968</span>&#160;    <span class="keyword">auto</span> table_ptr = buf_.data_at(table.o);</div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;    <span class="keyword">auto</span> vtable_ptr = table_ptr - ReadScalar&lt;soffset_t&gt;(table_ptr);</div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;    <span class="keywordtype">bool</span> ok = ReadScalar&lt;voffset_t&gt;(vtable_ptr + field) != 0;</div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</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="l00972"></a><span class="lineno">  972</span>&#160;    assert(ok);</div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;    (void)ok;</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="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="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 StartStruct(<span class="keywordtype">size_t</span> alignment) {</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;    Align(alignment);</div>
-<div class="line"><a name="l00978"></a><span class="lineno">  978</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="l00979"></a><span class="lineno">  979</span>&#160;  }</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;  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="l00982"></a><span class="lineno">  982</span>&#160;</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;  <span class="keywordtype">void</span> ClearOffsets() { offsetbuf_.clear(); }</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="comment">// Aligns such that when &quot;len&quot; bytes are written, an object can be written</span></div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;  <span class="comment">// after it with &quot;alignment&quot; without padding.</span></div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</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="l00988"></a><span class="lineno">  988</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="l00989"></a><span class="lineno">  989</span>&#160;  }</div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</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="l00991"></a><span class="lineno">  991</span>&#160;    AssertScalarT&lt;T&gt;();</div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;    PreAlign(len, <span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;  }<span class="comment"></span></div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;<span class="comment">  /// @endcond</span></div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</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="l00997"></a><span class="lineno">  997</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="l00998"></a><span class="lineno">  998</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="l00999"></a><span class="lineno">  999</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
-<div class="line"><a name="l01000"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe"> 1000</a></span>&#160;<span class="comment"></span>  Offset&lt;String&gt; <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="l01001"></a><span class="lineno"> 1001</span>&#160;    NotNested();</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;    PreAlign&lt;uoffset_t&gt;(len + 1);  <span class="comment">// Always 0-terminated.</span></div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;    buf_.fill(1);</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;    PushBytes(reinterpret_cast&lt;const uint8_t *&gt;(str), len);</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;    PushElement(static_cast&lt;uoffset_t&gt;(len));</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;    <span class="keywordflow">return</span> Offset&lt;String&gt;(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>());</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;  }</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;<span class="comment">  /// @brief Store a string in the buffer, which is null-terminated.</span></div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</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="l01011"></a><span class="lineno"> 1011</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
-<div class="line"><a name="l01012"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5"> 1012</a></span>&#160;<span class="comment"></span>  Offset&lt;String&gt; <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="l01013"></a><span class="lineno"> 1013</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="l01014"></a><span class="lineno"> 1014</span>&#160;  }</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</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="l01017"></a><span class="lineno"> 1017</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="l01018"></a><span class="lineno"> 1018</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
-<div class="line"><a name="l01019"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f"> 1019</a></span>&#160;<span class="comment"></span>  Offset&lt;String&gt; <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="l01020"></a><span class="lineno"> 1020</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="l01021"></a><span class="lineno"> 1021</span>&#160;  }</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</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="l01024"></a><span class="lineno"> 1024</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="l01025"></a><span class="lineno"> 1025</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts</span></div>
-<div class="line"><a name="l01026"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506"> 1026</a></span>&#160;<span class="comment"></span>  Offset&lt;String&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506">CreateString</a>(<span class="keyword">const</span> String *str) {</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</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="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">  /// @param[in] str A const reference to a std::string like type with support</span></div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;<span class="comment">  /// of T::c_str() and T::length() to store in the buffer.</span></div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</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="l01035"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685"> 1035</a></span>&#160;    Offset&lt;String&gt; <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="l01036"></a><span class="lineno"> 1036</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="l01037"></a><span class="lineno"> 1037</span>&#160;  }</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</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="l01040"></a><span class="lineno"> 1040</span>&#160;<span class="comment">  /// If a string with this exact contents has already been serialized before,</span></div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;<span class="comment">  /// instead simply returns the offset of the existing string.</span></div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</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="l01043"></a><span class="lineno"> 1043</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="l01044"></a><span class="lineno"> 1044</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts.</span></div>
-<div class="line"><a name="l01045"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1"> 1045</a></span>&#160;<span class="comment"></span>  Offset&lt;String&gt; <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="l01046"></a><span class="lineno"> 1046</span>&#160;    <span class="keywordflow">if</span> (!string_pool)</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;      string_pool = <span class="keyword">new</span> StringOffsetMap(StringOffsetCompare(buf_));</div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;    <span class="keyword">auto</span> size_before_string = buf_.size();</div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;    <span class="comment">// Must first serialize the string, since the set is all offsets into</span></div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;    <span class="comment">// buffer.</span></div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</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="l01052"></a><span class="lineno"> 1052</span>&#160;    <span class="keyword">auto</span> it = string_pool-&gt;find(off);</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;    <span class="comment">// If it exists we reuse existing serialized data!</span></div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;    <span class="keywordflow">if</span> (it != string_pool-&gt;end()) {</div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;      <span class="comment">// We can remove the string we serialized.</span></div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;      buf_.pop(buf_.size() - size_before_string);</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;      <span class="keywordflow">return</span> *it;</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;    }</div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;    <span class="comment">// Record this string for future use.</span></div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;    string_pool-&gt;insert(off);</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;    <span class="keywordflow">return</span> off;</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 null-terminated.</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 char pointer to a C-string to add to 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#a3eb68613e5883dc4b8fff6cf7d1223d7"> 1069</a></span>&#160;<span class="comment"></span>  Offset&lt;String&gt; <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="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, strlen(str));</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 reference to a std::string to store in 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#a10e8ec7d1c8fbdc21b1c7047bbbe38d9"> 1078</a></span>&#160;<span class="comment"></span>  Offset&lt;String&gt; <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="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.c_str(), str.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">  /// @brief Store a string in the buffer, which can contain any binary data.</span></div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;<span class="comment">  /// If a string with this exact contents has already been serialized before,</span></div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;<span class="comment">  /// instead simply returns the offset of the existing string.</span></div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</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="l01086"></a><span class="lineno"> 1086</span>&#160;<span class="comment">  /// @return Returns the offset in the buffer where the string starts</span></div>
-<div class="line"><a name="l01087"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3"> 1087</a></span>&#160;<span class="comment"></span>  Offset&lt;String&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3">CreateSharedString</a>(<span class="keyword">const</span> String *str) {</div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</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="l01089"></a><span class="lineno"> 1089</span>&#160;  }</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;<span class="comment"></span>  uoffset_t EndVector(<span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;    assert(nested);  <span class="comment">// Hit if no corresponding StartVector.</span></div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;    nested = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;    <span class="keywordflow">return</span> PushElement(static_cast&lt;uoffset_t&gt;(len));</div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;  }</div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;</div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</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="l01099"></a><span class="lineno"> 1099</span>&#160;    NotNested();</div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;    nested = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;    PreAlign&lt;uoffset_t&gt;(len * elemsize);</div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;    PreAlign(len * elemsize, elemsize);  <span class="comment">// Just in case elemsize &gt; uoffset_t.</span></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;  <span class="comment">// Call this right before StartVector/CreateVector if you want to force the</span></div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;  <span class="comment">// alignment to be something different than what the element size would</span></div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;  <span class="comment">// normally dictate.</span></div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</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="l01109"></a><span class="lineno"> 1109</span>&#160;  <span class="comment">// or when storing SIMD floats, etc.</span></div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</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="l01111"></a><span class="lineno"> 1111</span>&#160;    PreAlign(len * elemsize, alignment);</div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;  }</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</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="l01115"></a><span class="lineno"> 1115</span>&#160;    <span class="keywordflow">return</span> buf_.make_space(len * elemsize);</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;  }<span class="comment"></span></div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;<span class="comment">  /// @endcond</span></div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;<span class="comment">  /// @brief Serialize an array into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;<span class="comment">  /// @tparam T The data type of the array elements.</span></div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</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="l01122"></a><span class="lineno"> 1122</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;<span class="comment">  /// @param[in] len The number of elements to serialize.</span></div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01126"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3"> 1126</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; Offset&lt;Vector&lt;T&gt;&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="l01127"></a><span class="lineno"> 1127</span>&#160;    StartVector(len, <span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;    <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(T) == 1) {</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;      PushBytes(reinterpret_cast&lt;const uint8_t *&gt;(v), len);</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;    } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;      <span class="keywordflow">for</span> (<span class="keyword">auto</span> i = len; i &gt; 0; ) {</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;        PushElement(v[--i]);</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;      }</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;    <span class="keywordflow">return</span> Offset&lt;Vector&lt;T&gt;&gt;(EndVector(len));</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="comment"></span></div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` elements.</span></div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</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="l01141"></a><span class="lineno"> 1141</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01144"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207"> 1144</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; Offset&lt;Vector&lt;T&gt;&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="l01145"></a><span class="lineno"> 1145</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="l01146"></a><span class="lineno"> 1146</span>&#160;  }</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</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="l01149"></a><span class="lineno"> 1149</span>&#160;  <span class="comment">// an array. Instead, read elements manually.</span></div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;  <span class="comment">// Background: https://isocpp.org/blog/2012/11/on-vectorbool</span></div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;  Offset&lt;Vector&lt;uint8_t&gt;&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="l01152"></a><span class="lineno"> 1152</span>&#160;    StartVector(v.size(), <span class="keyword">sizeof</span>(uint8_t));</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> i = v.size(); i &gt; 0; ) {</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;      PushElement(static_cast&lt;uint8_t&gt;(v[--i]));</div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;    }</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;    <span class="keywordflow">return</span> Offset&lt;Vector&lt;uint8_t&gt;&gt;(EndVector(v.size()));</div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;  }</div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;<span class="preprocessor">  #ifndef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;<span class="comment">  /// @brief Serialize values returned by a function into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</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="l01162"></a><span class="lineno"> 1162</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="l01163"></a><span class="lineno"> 1163</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="l01164"></a><span class="lineno"> 1164</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="l01165"></a><span class="lineno"> 1165</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="l01166"></a><span class="lineno"> 1166</span>&#160;<span class="comment"></span><span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01167"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b"> 1167</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; Offset&lt;Vector&lt;T&gt;&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="l01168"></a><span class="lineno"> 1168</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="l01169"></a><span class="lineno"> 1169</span>&#160;    std::vector&lt;T&gt; elems(vector_size);</div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</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="l01171"></a><span class="lineno"> 1171</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="l01172"></a><span class="lineno"> 1172</span>&#160;  }</div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</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="l01176"></a><span class="lineno"> 1176</span>&#160;<span class="comment">  /// This is a convenience function for a common case.</span></div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</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="l01178"></a><span class="lineno"> 1178</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01181"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6"> 1181</a></span>&#160;<span class="comment"></span>  Offset&lt;Vector&lt;Offset&lt;String&gt;&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6">CreateVectorOfStrings</a>(</div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;      <span class="keyword">const</span> std::vector&lt;std::string&gt; &amp;v) {</div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;    std::vector&lt;Offset&lt;String&gt;&gt; offsets(v.size());</div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</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="l01185"></a><span class="lineno"> 1185</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="l01186"></a><span class="lineno"> 1186</span>&#160;  }</div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;<span class="comment">  /// @brief Serialize an array of structs into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;<span class="comment">  /// @tparam T The data type of the struct array elements.</span></div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</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="l01191"></a><span class="lineno"> 1191</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;<span class="comment">  /// @param[in] len The number of elements to serialize.</span></div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01195"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7"> 1195</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; Offset&lt;Vector&lt;const T *&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7">CreateVectorOfStructs</a>(</div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;      <span class="keyword">const</span> T *v, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;    StartVector(len * <span class="keyword">sizeof</span>(T) / AlignOf&lt;T&gt;(), AlignOf&lt;T&gt;());</div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;    PushBytes(reinterpret_cast&lt;const uint8_t *&gt;(v), <span class="keyword">sizeof</span>(T) * len);</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;    <span class="keywordflow">return</span> Offset&lt;Vector&lt;const T *&gt;&gt;(EndVector(len));</div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;  }</div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;<span class="comment">  /// @brief Serialize an array of native structs into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;<span class="comment">  /// @tparam T The data type of the struct array elements.</span></div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;<span class="comment">  /// @tparam S The data type of the native struct array elements.</span></div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</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="l01206"></a><span class="lineno"> 1206</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;<span class="comment">  /// @param[in] len The number of elements to serialize.</span></div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01210"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53"> 1210</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; Offset&lt;Vector&lt;const T *&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53">CreateVectorOfNativeStructs</a>(</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;      <span class="keyword">const</span> S *v, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;    <span class="keyword">extern</span> T Pack(<span class="keyword">const</span> S&amp;);</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;    <span class="keyword">typedef</span> T (*Pack_t)(<span class="keyword">const</span> S&amp;);</div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;    std::vector&lt;T&gt; vv(len);</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;    std::transform(v, v+len, vv.begin(), *(Pack_t)&amp;Pack);</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;    <span class="keywordflow">return</span> CreateVectorOfStructs&lt;T&gt;(vv.data(), vv.size());</div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;  }</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;</div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;</div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;<span class="preprocessor">  #ifndef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;<span class="comment">  /// @brief Serialize an array of structs into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</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="l01223"></a><span class="lineno"> 1223</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="l01224"></a><span class="lineno"> 1224</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="l01225"></a><span class="lineno"> 1225</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="l01226"></a><span class="lineno"> 1226</span>&#160;<span class="comment"></span><span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</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="l01228"></a><span class="lineno"> 1228</span>&#160;<span class="comment"></span><span class="comment">  /// accessors.</span></div>
-<div class="line"><a name="l01229"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72"> 1229</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; Offset&lt;Vector&lt;const T *&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72">CreateVectorOfStructs</a>(</div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</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="l01231"></a><span class="lineno"> 1231</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="l01232"></a><span class="lineno"> 1232</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="l01233"></a><span class="lineno"> 1233</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="l01234"></a><span class="lineno"> 1234</span>&#160;      filler(i, structs);</div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;      structs++;</div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;    }</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;    <span class="keywordflow">return</span> Offset&lt;Vector&lt;const T *&gt;&gt;(EndVector(vector_size));</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;  }</div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;<span class="preprocessor">  #endif</span></div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` of structs into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` struct elements.</span></div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</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="l01244"></a><span class="lineno"> 1244</span>&#160;<span class="comment">  /// serialize into the buffer as a `vector`.</span></div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01247"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1"> 1247</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; Offset&lt;Vector&lt;const T *&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1">CreateVectorOfStructs</a>(</div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;      <span class="keyword">const</span> std::vector&lt;T&gt; &amp;v) {</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</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="l01250"></a><span class="lineno"> 1250</span>&#160;  }</div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` of native structs into a FlatBuffer `vector`.</span></div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` struct elements.</span></div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;<span class="comment">  /// @tparam S The data type of the `std::vector` native struct elements.</span></div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</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="l01256"></a><span class="lineno"> 1256</span>&#160;<span class="comment">  /// serialize into the buffer as a `vector`.</span></div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01259"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95"> 1259</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; Offset&lt;Vector&lt;const T *&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95">CreateVectorOfNativeStructs</a>(</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;      <span class="keyword">const</span> std::vector&lt;S&gt; &amp;v) {</div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;    <span class="keywordflow">return</span> CreateVectorOfNativeStructs&lt;T, S&gt;(data(v), v.size());</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;  }</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</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="l01267"></a><span class="lineno"> 1267</span>&#160;  <span class="keyword">struct </span>StructKeyComparator {</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</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="l01269"></a><span class="lineno"> 1269</span>&#160;      <span class="keywordflow">return</span> a.KeyCompareLessThan(&amp;b);</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;</div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;  <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;    StructKeyComparator&amp; operator= (<span class="keyword">const</span> StructKeyComparator&amp;);</div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;  };<span class="comment"></span></div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;<span class="comment">  /// @endcond</span></div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` of structs into a FlatBuffer `vector`</span></div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;<span class="comment">  /// in sorted order.</span></div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` struct elements.</span></div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</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="l01281"></a><span class="lineno"> 1281</span>&#160;<span class="comment">  /// serialize into the buffer as a `vector`.</span></div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01284"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15"> 1284</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; Offset&lt;Vector&lt;const T *&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15">CreateVectorOfSortedStructs</a>(</div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;      std::vector&lt;T&gt; *v) {</div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</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="l01287"></a><span class="lineno"> 1287</span>&#160;  }</div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;<span class="comment">  /// @brief Serialize a `std::vector` of native structs into a FlatBuffer `vector`</span></div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;<span class="comment">  /// in sorted order.</span></div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;<span class="comment">  /// @tparam T The data type of the `std::vector` struct elements.</span></div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;<span class="comment">  /// @tparam S The data type of the `std::vector` native struct elements.</span></div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</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="l01294"></a><span class="lineno"> 1294</span>&#160;<span class="comment">  /// serialize into the buffer as a `vector`.</span></div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01297"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54"> 1297</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; Offset&lt;Vector&lt;const T *&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54">CreateVectorOfSortedNativeStructs</a>(</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;      std::vector&lt;S&gt; *v) {</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;    <span class="keywordflow">return</span> CreateVectorOfSortedNativeStructs&lt;T, S&gt;(data(*v), v-&gt;size());</div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;  }</div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;<span class="comment">  /// @brief Serialize an array of structs into a FlatBuffer `vector` in sorted</span></div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;<span class="comment">  /// order.</span></div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;<span class="comment">  /// @tparam T The data type of the struct array elements.</span></div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</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="l01306"></a><span class="lineno"> 1306</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;<span class="comment">  /// @param[in] len The number of elements to serialize.</span></div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01310"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf"> 1310</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; Offset&lt;Vector&lt;const T *&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf">CreateVectorOfSortedStructs</a>(</div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;      T *v, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;    std::sort(v, v + len, StructKeyComparator&lt;T&gt;());</div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</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="l01314"></a><span class="lineno"> 1314</span>&#160;  }</div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</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="l01317"></a><span class="lineno"> 1317</span>&#160;<span class="comment">  /// 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 struct array elements.</span></div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;<span class="comment">  /// @tparam S The data type of the native struct array elements.</span></div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</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="l01321"></a><span class="lineno"> 1321</span>&#160;<span class="comment">  /// buffer as a `vector`.</span></div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;<span class="comment">  /// @param[in] len The number of elements to serialize.</span></div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01325"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf"> 1325</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; Offset&lt;Vector&lt;const T *&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf">CreateVectorOfSortedNativeStructs</a>(</div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;      S *v, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;    <span class="keyword">extern</span> T Pack(<span class="keyword">const</span> S&amp;);</div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;    <span class="keyword">typedef</span> T (*Pack_t)(<span class="keyword">const</span> S&amp;);</div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;    std::vector&lt;T&gt; vv(len);</div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;    std::transform(v, v+len, vv.begin(), *(Pack_t)&amp;Pack);</div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;    <span class="keywordflow">return</span> CreateVectorOfSortedStructs&lt;T&gt;(vv, len);</div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;  }</div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;<span class="comment">  /// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</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="l01336"></a><span class="lineno"> 1336</span>&#160;  <span class="keyword">struct </span>TableKeyComparator {</div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;  TableKeyComparator(vector_downward&amp; buf) : buf_(buf) {}</div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</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="l01339"></a><span class="lineno"> 1339</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="l01340"></a><span class="lineno"> 1340</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="l01341"></a><span class="lineno"> 1341</span>&#160;      <span class="keywordflow">return</span> table_a-&gt;KeyCompareLessThan(table_b);</div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;    }</div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;    vector_downward&amp; buf_;</div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;</div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;  <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;    TableKeyComparator&amp; operator= (<span class="keyword">const</span> TableKeyComparator&amp;);</div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;  };<span class="comment"></span></div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;<span class="comment">  /// @endcond</span></div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</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="l01351"></a><span class="lineno"> 1351</span>&#160;<span class="comment">  /// in sorted order.</span></div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;<span class="comment">  /// @tparam T The data type that the offset refers to.</span></div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</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="l01354"></a><span class="lineno"> 1354</span>&#160;<span class="comment">  /// offsets to store in the buffer in sorted order.</span></div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;<span class="comment">  /// @param[in] len The number of elements to store in the `vector`.</span></div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01358"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6"> 1358</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; Offset&lt;Vector&lt;Offset&lt;T&gt;&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6">CreateVectorOfSortedTables</a>(</div>
-<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;      Offset&lt;T&gt; *v, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;    std::sort(v, v + len, TableKeyComparator&lt;T&gt;(buf_));</div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</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="l01362"></a><span class="lineno"> 1362</span>&#160;  }</div>
-<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01364"></a><span class="lineno"> 1364</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="l01365"></a><span class="lineno"> 1365</span>&#160;<span class="comment">  /// in sorted order.</span></div>
-<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;<span class="comment">  /// @tparam T The data type that the offset refers to.</span></div>
-<div class="line"><a name="l01367"></a><span class="lineno"> 1367</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="l01368"></a><span class="lineno"> 1368</span>&#160;<span class="comment">  /// offsets to store in the buffer in sorted order.</span></div>
-<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;<span class="comment">  /// @return Returns a typed `Offset` into the serialized data indicating</span></div>
-<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;<span class="comment">  /// where the vector is stored.</span></div>
-<div class="line"><a name="l01371"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135"> 1371</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; Offset&lt;Vector&lt;Offset&lt;T&gt;&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135">CreateVectorOfSortedTables</a>(</div>
-<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;      std::vector&lt;Offset&lt;T&gt;&gt; *v) {</div>
-<div class="line"><a name="l01373"></a><span class="lineno"> 1373</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="l01374"></a><span class="lineno"> 1374</span>&#160;  }</div>
-<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;<span class="comment">  /// @brief Specialized version of `CreateVector` for non-copying use cases.</span></div>
-<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;<span class="comment">  /// Write the data any time later to the returned buffer pointer `buf`.</span></div>
-<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;<span class="comment">  /// @param[in] len The number of elements to store in the `vector`.</span></div>
-<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;<span class="comment">  /// @param[in] elemsize The size of each element in the `vector`.</span></div>
-<div class="line"><a name="l01380"></a><span class="lineno"> 1380</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="l01381"></a><span class="lineno"> 1381</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="l01382"></a><span class="lineno"> 1382</span>&#160;<span class="comment">  /// in the buffer.</span></div>
-<div class="line"><a name="l01383"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c"> 1383</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="l01384"></a><span class="lineno"> 1384</span>&#160;                                      uint8_t **buf) {</div>
-<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;    NotNested();</div>
-<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;    StartVector(len, elemsize);</div>
-<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;    buf_.make_space(len * elemsize);</div>
-<div class="line"><a name="l01388"></a><span class="lineno"> 1388</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="l01389"></a><span class="lineno"> 1389</span>&#160;    <span class="keyword">auto</span> vec_end = EndVector(len);</div>
-<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;    *buf = buf_.data_at(vec_start);</div>
-<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;    <span class="keywordflow">return</span> vec_end;</div>
-<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;  }</div>
-<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;<span class="comment">  /// @brief Specialized version of `CreateVector` for non-copying use cases.</span></div>
-<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;<span class="comment">  /// Write the data any time later to the returned buffer pointer `buf`.</span></div>
-<div class="line"><a name="l01396"></a><span class="lineno"> 1396</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="l01397"></a><span class="lineno"> 1397</span>&#160;<span class="comment">  /// as a `vector`.</span></div>
-<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;<span class="comment">  /// @param[in] len The number of elements to store in the `vector`.</span></div>
-<div class="line"><a name="l01399"></a><span class="lineno"> 1399</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="l01400"></a><span class="lineno"> 1400</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="l01401"></a><span class="lineno"> 1401</span>&#160;<span class="comment">  /// in the buffer.</span></div>
-<div class="line"><a name="l01402"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50"> 1402</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; Offset&lt;Vector&lt;T&gt;&gt; <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50">CreateUninitializedVector</a>(</div>
-<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;      <span class="keywordtype">size_t</span> len, T **buf) {</div>
-<div class="line"><a name="l01404"></a><span class="lineno"> 1404</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="l01405"></a><span class="lineno"> 1405</span>&#160;                                     reinterpret_cast&lt;uint8_t **&gt;(buf));</div>
-<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;  }</div>
-<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01408"></a><span class="lineno"> 1408</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="l01409"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a43f51ba9c8f4f24ea2247a3979d095b8"> 1409</a></span>&#160;<span class="comment"></span>  <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; Offset&lt;const T *&gt; <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="l01410"></a><span class="lineno"> 1410</span>&#160;    Align(AlignOf&lt;T&gt;());</div>
-<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;    buf_.push_small(structobj);</div>
-<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;    <span class="keywordflow">return</span> Offset&lt;const T *&gt;(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>());</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="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="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="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 The length of a FlatBuffer file header.</span></div>
-<div class="line"><a name="l01416"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19"> 1416</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="l01417"></a><span class="lineno"> 1417</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;<span class="comment">  /// @brief Finish serializing a buffer by writing the root offset.</span></div>
-<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;<span class="comment">  /// @param[in] file_identifier If a `file_identifier` is given, the buffer</span></div>
-<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;<span class="comment">  /// will be prefixed with a standard FlatBuffers file header.</span></div>
-<div class="line"><a name="l01421"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912"> 1421</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>(Offset&lt;T&gt; root,</div>
-<div class="line"><a name="l01422"></a><span class="lineno"> 1422</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="l01423"></a><span class="lineno"> 1423</span>&#160;</div>
-<div class="line"><a name="l01424"></a><span class="lineno"> 1424</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="l01425"></a><span class="lineno"> 1425</span>&#160;  }</div>
-<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01427"></a><span class="lineno"> 1427</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="l01428"></a><span class="lineno"> 1428</span>&#160;<span class="comment">  /// buffer following the size field). These buffers are NOT compatible</span></div>
-<div class="line"><a name="l01429"></a><span class="lineno"> 1429</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="l01430"></a><span class="lineno"> 1430</span>&#160;<span class="comment">  /// on them, you have to use GetSizePrefixedRoot instead.</span></div>
-<div class="line"><a name="l01431"></a><span class="lineno"> 1431</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="l01432"></a><span class="lineno"> 1432</span>&#160;<span class="comment">  /// size pre-fixed buffer is aligned.</span></div>
-<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;<span class="comment">  /// These kinds of buffers are useful for creating a stream of FlatBuffers.</span></div>
-<div class="line"><a name="l01434"></a><span class="lineno"><a class="line" href="classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220"> 1434</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>(Offset&lt;T&gt; root,</div>
-<div class="line"><a name="l01435"></a><span class="lineno"> 1435</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="l01436"></a><span class="lineno"> 1436</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="l01437"></a><span class="lineno"> 1437</span>&#160;  }</div>
-<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;</div>
-<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;  <span class="comment">// You shouldn&#39;t really be copying instances of this class.</span></div>
-<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;  <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac72b54a75e0c329e0ce0b8fab758e256">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="l01442"></a><span class="lineno"> 1442</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="l01443"></a><span class="lineno"> 1443</span>&#160;</div>
-<div class="line"><a name="l01444"></a><span class="lineno"> 1444</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="l01445"></a><span class="lineno"> 1445</span>&#160;    NotNested();</div>
-<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;    <span class="comment">// This will cause the whole buffer to be aligned.</span></div>
-<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;    PreAlign((size_prefix ? <span class="keyword">sizeof</span>(uoffset_t) : 0) +</div>
-<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;             <span class="keyword">sizeof</span>(uoffset_t) +</div>
-<div class="line"><a name="l01449"></a><span class="lineno"> 1449</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="l01450"></a><span class="lineno"> 1450</span>&#160;             minalign_);</div>
-<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;    <span class="keywordflow">if</span> (file_identifier) {</div>
-<div class="line"><a name="l01452"></a><span class="lineno"> 1452</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="l01453"></a><span class="lineno"> 1453</span>&#160;      PushBytes(reinterpret_cast&lt;const uint8_t *&gt;(file_identifier),</div>
-<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;                <a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19">kFileIdentifierLength</a>);</div>
-<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;    }</div>
-<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;    PushElement(ReferTo(root));  <span class="comment">// Location of root.</span></div>
-<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;    <span class="keywordflow">if</span> (size_prefix) {</div>
-<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;      PushElement(<a class="code" href="classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63">GetSize</a>());</div>
-<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;    }</div>
-<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;    finished = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;  }</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;  <span class="keyword">struct </span>FieldLoc {</div>
-<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;    uoffset_t off;</div>
-<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;    voffset_t id;</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;</div>
-<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;  simple_allocator default_allocator;</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"> 1470</span>&#160;  vector_downward buf_;</div>
-<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;</div>
-<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;  <span class="comment">// Accumulating offsets of table members while it is being built.</span></div>
-<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;  std::vector&lt;FieldLoc&gt; offsetbuf_;</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;  <span class="comment">// Ensure objects are not nested.</span></div>
-<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;  <span class="keywordtype">bool</span> nested;</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="comment">// Ensure the buffer is finished before it is being accessed.</span></div>
-<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;  <span class="keywordtype">bool</span> finished;</div>
-<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;</div>
-<div class="line"><a name="l01481"></a><span class="lineno"> 1481</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="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="l01482"></a><span class="lineno"> 1482</span>&#160;</div>
-<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;  <span class="keywordtype">size_t</span> minalign_;</div>
-<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;</div>
-<div class="line"><a name="l01485"></a><span class="lineno"> 1485</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="l01486"></a><span class="lineno"> 1486</span>&#160;</div>
-<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;  <span class="keywordtype">bool</span> dedup_vtables_;</div>
-<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;</div>
-<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;  <span class="keyword">struct </span>StringOffsetCompare {</div>
-<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;    StringOffsetCompare(<span class="keyword">const</span> vector_downward &amp;buf) : buf_(&amp;buf) {}</div>
-<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;    <span class="keywordtype">bool</span> operator() (<span class="keyword">const</span> Offset&lt;String&gt; &amp;a, <span class="keyword">const</span> Offset&lt;String&gt; &amp;b)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;      <span class="keyword">auto</span> stra = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>String *<span class="keyword">&gt;</span>(buf_-&gt;data_at(a.o));</div>
-<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;      <span class="keyword">auto</span> strb = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>String *<span class="keyword">&gt;</span>(buf_-&gt;data_at(b.o));</div>
-<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;      <span class="keywordflow">return</span> strncmp(stra-&gt;c_str(), strb-&gt;c_str(),</div>
-<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;                     std::min(stra-&gt;size(), strb-&gt;size()) + 1) &lt; 0;</div>
-<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;    }</div>
-<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;    <span class="keyword">const</span> vector_downward *buf_;</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;</div>
-<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;  <span class="comment">// For use with CreateSharedString. Instantiated on first use only.</span></div>
-<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;  <span class="keyword">typedef</span> std::set&lt;Offset&lt;String&gt;, StringOffsetCompare&gt; StringOffsetMap;</div>
-<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;  StringOffsetMap *string_pool;</div>
-<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;};<span class="comment"></span></div>
-<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;<span class="comment">/// @}</span></div>
-<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;<span class="comment">/// @cond FLATBUFFERS_INTERNAL</span></div>
-<div class="line"><a name="l01507"></a><span class="lineno"> 1507</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="l01508"></a><span class="lineno"> 1508</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="l01509"></a><span class="lineno"> 1509</span>&#160;  EndianCheck();</div>
-<div class="line"><a name="l01510"></a><span class="lineno"> 1510</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="l01511"></a><span class="lineno"> 1511</span>&#160;    EndianScalar(*reinterpret_cast&lt;uoffset_t *&gt;(buf)));</div>
-<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;}</div>
-<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;</div>
-<div class="line"><a name="l01514"></a><span class="lineno"> 1514</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="l01515"></a><span class="lineno"> 1515</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="l01516"></a><span class="lineno"> 1516</span>&#160;}</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="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="l01519"></a><span class="lineno"> 1519</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="l01520"></a><span class="lineno"> 1520</span>&#160;}</div>
-<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01522"></a><span class="lineno"> 1522</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="l01523"></a><span class="lineno"> 1523</span>&#160;<span class="comment">/// @warning Creating new objects will lead to reallocations and invalidates</span></div>
-<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;<span class="comment">/// the pointer!</span></div>
-<div class="line"><a name="l01525"></a><span class="lineno"> 1525</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="l01526"></a><span class="lineno"> 1526</span>&#160;                                                   Offset&lt;T&gt; offset) {</div>
-<div class="line"><a name="l01527"></a><span class="lineno"> 1527</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="l01528"></a><span class="lineno"> 1528</span>&#160;    fbb.GetSize() - offset.o);</div>
-<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;}</div>
-<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;</div>
-<div class="line"><a name="l01531"></a><span class="lineno"> 1531</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="l01532"></a><span class="lineno"> 1532</span>&#160;                                                  Offset&lt;T&gt; offset) {</div>
-<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;  <span class="keywordflow">return</span> GetMutableTemporaryPointer&lt;T&gt;(fbb, offset);</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="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="comment">// Helper to see if the identifier in a buffer has the expected value.</span></div>
-<div class="line"><a name="l01537"></a><span class="lineno"> 1537</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="l01538"></a><span class="lineno"> 1538</span>&#160;  <span class="keywordflow">return</span> strncmp(reinterpret_cast&lt;const char *&gt;(buf) + <span class="keyword">sizeof</span>(uoffset_t),</div>
-<div class="line"><a name="l01539"></a><span class="lineno"> 1539</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="l01540"></a><span class="lineno"> 1540</span>&#160;}</div>
-<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;</div>
-<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;<span class="comment">// Helper class to verify the integrity of a FlatBuffer</span></div>
-<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;<span class="keyword">class </span>Verifier FLATBUFFERS_FINAL_CLASS {</div>
-<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01545"></a><span class="lineno"> 1545</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="l01546"></a><span class="lineno"> 1546</span>&#160;           uoffset_t _max_tables = 1000000)</div>
-<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;    : buf_(buf), end_(buf + buf_len), depth_(0), max_depth_(_max_depth),</div>
-<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;      num_tables_(0), max_tables_(_max_tables)</div>
-<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;    #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</div>
-<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;        , upper_bound_(buf)</div>
-<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;    #endif</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;</div>
-<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;  <span class="comment">// Central location where any verification failures register.</span></div>
-<div class="line"><a name="l01555"></a><span class="lineno"> 1555</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="l01556"></a><span class="lineno"> 1556</span>&#160;<span class="preprocessor">    #ifdef FLATBUFFERS_DEBUG_VERIFICATION_FAILURE</span></div>
-<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;      assert(ok);</div>
-<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;<span class="preprocessor">    #endif</span></div>
-<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;<span class="preprocessor">    #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</span></div>
-<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;      <span class="keywordflow">if</span> (!ok)</div>
-<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;        upper_bound_ = buf_;</div>
-<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;<span class="preprocessor">    #endif</span></div>
-<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;    <span class="keywordflow">return</span> ok;</div>
-<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;  }</div>
-<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;</div>
-<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;  <span class="comment">// Verify any range within the buffer.</span></div>
-<div class="line"><a name="l01567"></a><span class="lineno"> 1567</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="l01568"></a><span class="lineno"> 1568</span>&#160;<span class="preprocessor">    #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</span></div>
-<div class="line"><a name="l01569"></a><span class="lineno"> 1569</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="l01570"></a><span class="lineno"> 1570</span>&#160;      <span class="keywordflow">if</span> (upper_bound_ &lt; upper_bound)</div>
-<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;        upper_bound_ =  upper_bound;</div>
-<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;<span class="preprocessor">    #endif</span></div>
-<div class="line"><a name="l01573"></a><span class="lineno"> 1573</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="l01574"></a><span class="lineno"> 1574</span>&#160;                 elem &gt;= buf_ &amp;&amp;</div>
-<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;                 elem &lt;= end_ - elem_len);</div>
-<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;  }</div>
-<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;</div>
-<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;  <span class="comment">// Verify a range indicated by sizeof(T).</span></div>
-<div class="line"><a name="l01579"></a><span class="lineno"> 1579</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="l01580"></a><span class="lineno"> 1580</span>&#160;    <span class="keywordflow">return</span> Verify(elem, <span class="keyword">sizeof</span>(T));</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 a pointer (may be NULL) of a table type.</span></div>
-<div class="line"><a name="l01584"></a><span class="lineno"> 1584</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="l01585"></a><span class="lineno"> 1585</span>&#160;    <span class="keywordflow">return</span> !table || table-&gt;Verify(*<span class="keyword">this</span>);</div>
-<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;  }</div>
-<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;</div>
-<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;  <span class="comment">// Verify a pointer (may be NULL) of any vector type.</span></div>
-<div class="line"><a name="l01589"></a><span class="lineno"> 1589</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="l01590"></a><span class="lineno"> 1590</span>&#160;    <span class="keyword">const</span> uint8_t *end;</div>
-<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;    <span class="keywordflow">return</span> !vec ||</div>
-<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;           VerifyVector(reinterpret_cast&lt;const uint8_t *&gt;(vec), <span class="keyword">sizeof</span>(T),</div>
-<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;                        &amp;end);</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;</div>
-<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;  <span class="comment">// Verify a pointer (may be NULL) of a vector to struct.</span></div>
-<div class="line"><a name="l01597"></a><span class="lineno"> 1597</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="l01598"></a><span class="lineno"> 1598</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="l01599"></a><span class="lineno"> 1599</span>&#160;  }</div>
-<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;</div>
-<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;  <span class="comment">// Verify a pointer (may be NULL) to string.</span></div>
-<div class="line"><a name="l01602"></a><span class="lineno"> 1602</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="l01603"></a><span class="lineno"> 1603</span>&#160;    <span class="keyword">const</span> uint8_t *end;</div>
-<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;    <span class="keywordflow">return</span> !str ||</div>
-<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;           (VerifyVector(reinterpret_cast&lt;const uint8_t *&gt;(str), 1, &amp;end) &amp;&amp;</div>
-<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;            Verify(end, 1) &amp;&amp;      <span class="comment">// Must have terminator</span></div>
-<div class="line"><a name="l01607"></a><span class="lineno"> 1607</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="l01608"></a><span class="lineno"> 1608</span>&#160;  }</div>
-<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;</div>
-<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;  <span class="comment">// Common code between vectors and strings.</span></div>
-<div class="line"><a name="l01611"></a><span class="lineno"> 1611</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="l01612"></a><span class="lineno"> 1612</span>&#160;                    <span class="keyword">const</span> uint8_t **end)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;    <span class="comment">// Check we can read the size field.</span></div>
-<div class="line"><a name="l01614"></a><span class="lineno"> 1614</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="l01615"></a><span class="lineno"> 1615</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="l01616"></a><span class="lineno"> 1616</span>&#160;    <span class="comment">// must be 0.</span></div>
-<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;    <span class="keyword">auto</span> size = ReadScalar&lt;uoffset_t&gt;(vec);</div>
-<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;    <span class="keyword">auto</span> max_elems = FLATBUFFERS_MAX_BUFFER_SIZE / elem_size;</div>
-<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;    <span class="keywordflow">if</span> (!Check(size &lt; max_elems))</div>
-<div class="line"><a name="l01620"></a><span class="lineno"> 1620</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="l01621"></a><span class="lineno"> 1621</span>&#160;    <span class="keyword">auto</span> byte_size = <span class="keyword">sizeof</span>(size) + elem_size * size;</div>
-<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;    *end = vec + byte_size;</div>
-<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;    <span class="keywordflow">return</span> Verify(vec, byte_size);</div>
-<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;  }</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;  <span class="comment">// Special case for string contents, after the above has been called.</span></div>
-<div class="line"><a name="l01627"></a><span class="lineno"> 1627</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="l01628"></a><span class="lineno"> 1628</span>&#160;      <span class="keywordflow">if</span> (vec) {</div>
-<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;        <span class="keywordflow">for</span> (uoffset_t i = 0; i &lt; vec-&gt;size(); i++) {</div>
-<div class="line"><a name="l01630"></a><span class="lineno"> 1630</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="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="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;  }</div>
-<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;</div>
-<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;  <span class="comment">// Special case for table contents, after the above has been called.</span></div>
-<div class="line"><a name="l01637"></a><span class="lineno"> 1637</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="l01638"></a><span class="lineno"> 1638</span>&#160;    <span class="keywordflow">if</span> (vec) {</div>
-<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;      <span class="keywordflow">for</span> (uoffset_t i = 0; i &lt; vec-&gt;size(); i++) {</div>
-<div class="line"><a name="l01640"></a><span class="lineno"> 1640</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="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="keywordflow">return</span> <span class="keyword">true</span>;</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;</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> VerifyBufferFromStart(<span class="keyword">const</span> <span class="keywordtype">char</span> *identifier,</div>
-<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;                                                  <span class="keyword">const</span> uint8_t *start) {</div>
-<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;    <span class="keywordflow">if</span> (identifier &amp;&amp;</div>
-<div class="line"><a name="l01649"></a><span class="lineno"> 1649</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="l01650"></a><span class="lineno"> 1650</span>&#160;         !BufferHasIdentifier(start, identifier))) {</div>
-<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">false</span>;</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;</div>
-<div class="line"><a name="l01654"></a><span class="lineno"> 1654</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="l01655"></a><span class="lineno"> 1655</span>&#160;    <span class="keyword">auto</span> o = VerifyOffset(start);</div>
-<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;    <span class="keywordflow">return</span> o &amp;&amp;</div>
-<div class="line"><a name="l01657"></a><span class="lineno"> 1657</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="l01658"></a><span class="lineno"> 1658</span>&#160;        Verify(*<span class="keyword">this</span>)</div>
-<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;        <span class="preprocessor">#ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</span></div>
-<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;          &amp;&amp; GetComputedSize()</div>
-<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;        <span class="preprocessor">#endif</span></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;  }</div>
-<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;</div>
-<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;  <span class="comment">// Verify this whole buffer, starting with root type T.</span></div>
-<div class="line"><a name="l01666"></a><span class="lineno"> 1666</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="l01667"></a><span class="lineno"> 1667</span>&#160;    <span class="keywordflow">return</span> VerifyBuffer&lt;T&gt;(<span class="keyword">nullptr</span>);</div>
-<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;  }</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;  <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="l01671"></a><span class="lineno"> 1671</span>&#160;    <span class="keywordflow">return</span> VerifyBufferFromStart&lt;T&gt;(identifier, buf_);</div>
-<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;  }</div>
-<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;</div>
-<div class="line"><a name="l01674"></a><span class="lineno"> 1674</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="l01675"></a><span class="lineno"> 1675</span>&#160;    <span class="keywordflow">return</span> Verify&lt;uoffset_t&gt;(buf_) &amp;&amp;</div>
-<div class="line"><a name="l01676"></a><span class="lineno"> 1676</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="l01677"></a><span class="lineno"> 1677</span>&#160;           VerifyBufferFromStart&lt;T&gt;(identifier, buf_ + <span class="keyword">sizeof</span>(uoffset_t));</div>
-<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;  }</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;  uoffset_t VerifyOffset(<span class="keyword">const</span> uint8_t *start)<span class="keyword"> const </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;(start)) <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="keyword">auto</span> o = ReadScalar&lt;uoffset_t&gt;(start);</div>
-<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;    Check(o != 0);</div>
-<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;    <span class="keywordflow">return</span> o;</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="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="comment">// Called at the start of a table to increase counters measuring data</span></div>
-<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;  <span class="comment">// structure depth and amount, and possibly bails out with false if</span></div>
-<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;  <span class="comment">// limits set by the constructor have been hit. Needs to be balanced</span></div>
-<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;  <span class="comment">// with EndTable().</span></div>
-<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;  <span class="keywordtype">bool</span> VerifyComplexity() {</div>
-<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;    depth_++;</div>
-<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;    num_tables_++;</div>
-<div class="line"><a name="l01694"></a><span class="lineno"> 1694</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="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;  <span class="comment">// Called at the end of a table to pop the depth count.</span></div>
-<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;  <span class="keywordtype">bool</span> EndTable() {</div>
-<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;    depth_--;</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="preprocessor">  #ifdef FLATBUFFERS_TRACK_VERIFIER_BUFFER_SIZE</span></div>
-<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;  <span class="comment">// Returns the message size in bytes</span></div>
-<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;  <span class="keywordtype">size_t</span> GetComputedSize()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;    uintptr_t size = upper_bound_ - buf_;</div>
-<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;    <span class="comment">// Align the size to uoffset_t</span></div>
-<div class="line"><a name="l01708"></a><span class="lineno"> 1708</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="l01709"></a><span class="lineno"> 1709</span>&#160;    <span class="keywordflow">return</span> (buf_  + size &gt; end_) ?  0 : size;</div>
-<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;  }</div>
-<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;<span class="preprocessor">  #endif</span></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">private</span>:</div>
-<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;  <span class="keyword">const</span> uint8_t *buf_;</div>
-<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;  <span class="keyword">const</span> uint8_t *end_;</div>
-<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;  uoffset_t depth_;</div>
-<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;  uoffset_t max_depth_;</div>
-<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;  uoffset_t num_tables_;</div>
-<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;  uoffset_t max_tables_;</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="keyword">mutable</span> <span class="keyword">const</span> uint8_t *upper_bound_;</div>
-<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;};</div>
-<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;</div>
-<div class="line"><a name="l01725"></a><span class="lineno"> 1725</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="l01726"></a><span class="lineno"> 1726</span>&#160;<span class="comment">// typed by its root.</span></div>
-<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;<span class="comment">// A BufferRef does not own its buffer.</span></div>
-<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;<span class="keyword">struct </span>BufferRefBase {};  <span class="comment">// for std::is_base_of</span></div>
-<div class="line"><a name="l01729"></a><span class="lineno"> 1729</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="l01730"></a><span class="lineno"> 1730</span>&#160;  BufferRef() : buf(nullptr), len(0), must_free(false) {}</div>
-<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;  BufferRef(uint8_t *_buf, uoffset_t _len)</div>
-<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;    : buf(_buf), len(_len), must_free(false) {}</div>
-<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;</div>
-<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;  ~BufferRef() { <span class="keywordflow">if</span> (must_free) free(buf); }</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;  <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="l01737"></a><span class="lineno"> 1737</span>&#160;</div>
-<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;  <span class="keywordtype">bool</span> Verify() {</div>
-<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;    Verifier verifier(buf, len);</div>
-<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;    <span class="keywordflow">return</span> verifier.VerifyBuffer&lt;T&gt;(<span class="keyword">nullptr</span>);</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;</div>
-<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;  uint8_t *buf;</div>
-<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;  uoffset_t len;</div>
-<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;  <span class="keywordtype">bool</span> must_free;</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;</div>
-<div class="line"><a name="l01748"></a><span class="lineno"> 1748</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="l01749"></a><span class="lineno"> 1749</span>&#160;<span class="comment">// always have all members present and do not support forwards/backwards</span></div>
-<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;<span class="comment">// compatible extensions.</span></div>
-<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;</div>
-<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;<span class="keyword">class </span>Struct FLATBUFFERS_FINAL_CLASS {</div>
-<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01754"></a><span class="lineno"> 1754</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="l01755"></a><span class="lineno"> 1755</span>&#160;    <span class="keywordflow">return</span> ReadScalar&lt;T&gt;(&amp;data_[o]);</div>
-<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;  }</div>
-<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;</div>
-<div class="line"><a name="l01758"></a><span class="lineno"> 1758</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="l01759"></a><span class="lineno"> 1759</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="l01760"></a><span class="lineno"> 1760</span>&#160;  }</div>
-<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;</div>
-<div class="line"><a name="l01762"></a><span class="lineno"> 1762</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="l01763"></a><span class="lineno"> 1763</span>&#160;  uint8_t *GetAddressOf(uoffset_t o) { <span class="keywordflow">return</span> &amp;data_[o]; }</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="keyword">private</span>:</div>
-<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;  uint8_t data_[1];</div>
-<div class="line"><a name="l01767"></a><span class="lineno"> 1767</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="comment">// &quot;tables&quot; use an offset table (possibly shared) that allows fields to be</span></div>
-<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160;<span class="comment">// omitted and added at will, but uses an extra indirection to read.</span></div>
-<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;<span class="keyword">class </span>Table {</div>
-<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;  <span class="keyword">const</span> uint8_t *GetVTable()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;    <span class="keywordflow">return</span> data_ - ReadScalar&lt;soffset_t&gt;(data_);</div>
-<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;  }</div>
-<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;</div>
-<div class="line"><a name="l01777"></a><span class="lineno"> 1777</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="l01778"></a><span class="lineno"> 1778</span>&#160;  <span class="comment">// if the field was not present.</span></div>
-<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;  voffset_t GetOptionalFieldOffset(voffset_t field)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160;    <span class="comment">// The vtable offset is always at the start.</span></div>
-<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;    <span class="keyword">auto</span> vtable = GetVTable();</div>
-<div class="line"><a name="l01782"></a><span class="lineno"> 1782</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="l01783"></a><span class="lineno"> 1783</span>&#160;    <span class="keyword">auto</span> vtsize = ReadScalar&lt;voffset_t&gt;(vtable);</div>
-<div class="line"><a name="l01784"></a><span class="lineno"> 1784</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="l01785"></a><span class="lineno"> 1785</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="l01786"></a><span class="lineno"> 1786</span>&#160;    <span class="keywordflow">return</span> field &lt; vtsize ? ReadScalar&lt;voffset_t&gt;(vtable + field) : 0;</div>
-<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160;  }</div>
-<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;</div>
-<div class="line"><a name="l01789"></a><span class="lineno"> 1789</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="l01790"></a><span class="lineno"> 1790</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;    <span class="keywordflow">return</span> field_offset ? ReadScalar&lt;T&gt;(data_ + field_offset) : defaultval;</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="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="keyword">template</span>&lt;<span class="keyword">typename</span> P&gt; P GetPointer(voffset_t field) {</div>
-<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;    <span class="keyword">auto</span> p = data_ + field_offset;</div>
-<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;    <span class="keywordflow">return</span> field_offset</div>
-<div class="line"><a name="l01798"></a><span class="lineno"> 1798</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="l01799"></a><span class="lineno"> 1799</span>&#160;      : nullptr;</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;  <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="l01802"></a><span class="lineno"> 1802</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="l01803"></a><span class="lineno"> 1803</span>&#160;  }</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="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="l01806"></a><span class="lineno"> 1806</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01807"></a><span class="lineno"> 1807</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="l01808"></a><span class="lineno"> 1808</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="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> T&gt; <span class="keywordtype">bool</span> SetField(voffset_t field, T val, T def) {</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="keywordflow">if</span> (!field_offset) <span class="keywordflow">return</span> val == def;</div>
-<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;    WriteScalar(data_ + field_offset, val);</div>
-<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160;  }</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="keywordtype">bool</span> SetPointer(voffset_t field, <span class="keyword">const</span> uint8_t *val) {</div>
-<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01820"></a><span class="lineno"> 1820</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="l01821"></a><span class="lineno"> 1821</span>&#160;    WriteScalar(data_ + field_offset,</div>
-<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;                static_cast&lt;uoffset_t&gt;(val - (data_ + field_offset)));</div>
-<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</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;</div>
-<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;  uint8_t *GetAddressOf(voffset_t field) {</div>
-<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;    <span class="keywordflow">return</span> field_offset ? data_ + field_offset : <span class="keyword">nullptr</span>;</div>
-<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;  }</div>
-<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;  <span class="keyword">const</span> uint8_t *GetAddressOf(voffset_t field)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01831"></a><span class="lineno"> 1831</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="l01832"></a><span class="lineno"> 1832</span>&#160;  }</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;  <span class="keywordtype">bool</span> CheckField(voffset_t field)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;    <span class="keywordflow">return</span> GetOptionalFieldOffset(field) != 0;</div>
-<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;  }</div>
-<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;</div>
-<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;  <span class="comment">// Verify the vtable of this table.</span></div>
-<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;  <span class="comment">// Call this once per table, followed by VerifyField once per field.</span></div>
-<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;  <span class="keywordtype">bool</span> VerifyTableStart(Verifier &amp;verifier)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;    <span class="comment">// Check the vtable offset.</span></div>
-<div class="line"><a name="l01842"></a><span class="lineno"> 1842</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="l01843"></a><span class="lineno"> 1843</span>&#160;    <span class="keyword">auto</span> vtable = GetVTable();</div>
-<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;    <span class="comment">// Check the vtable size field, then check vtable fits in its entirety.</span></div>
-<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;    <span class="keywordflow">return</span> verifier.VerifyComplexity() &amp;&amp;</div>
-<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;           verifier.Verify&lt;voffset_t&gt;(vtable) &amp;&amp;</div>
-<div class="line"><a name="l01847"></a><span class="lineno"> 1847</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="l01848"></a><span class="lineno"> 1848</span>&#160;           verifier.Verify(vtable, ReadScalar&lt;voffset_t&gt;(vtable));</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="comment">// Verify a particular field.</span></div>
-<div class="line"><a name="l01852"></a><span class="lineno"> 1852</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="l01853"></a><span class="lineno"> 1853</span>&#160;                                        voffset_t field)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;    <span class="comment">// Calling GetOptionalFieldOffset should be safe now thanks to</span></div>
-<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;    <span class="comment">// VerifyTable().</span></div>
-<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;    <span class="comment">// Check the actual field.</span></div>
-<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;    <span class="keywordflow">return</span> !field_offset || verifier.Verify&lt;T&gt;(data_ + field_offset);</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="comment">// VerifyField for required fields.</span></div>
-<div class="line"><a name="l01862"></a><span class="lineno"> 1862</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="l01863"></a><span class="lineno"> 1863</span>&#160;                                                voffset_t field)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;    <span class="keywordflow">return</span> verifier.Check(field_offset != 0) &amp;&amp;</div>
-<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;           verifier.Verify&lt;T&gt;(data_ + field_offset);</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;</div>
-<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;  <span class="comment">// Versions for offsets.</span></div>
-<div class="line"><a name="l01870"></a><span class="lineno"> 1870</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="l01871"></a><span class="lineno"> 1871</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;    <span class="keywordflow">return</span> !field_offset || verifier.VerifyOffset(data_ + field_offset);</div>
-<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;  }</div>
-<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;</div>
-<div class="line"><a name="l01875"></a><span class="lineno"> 1875</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="l01876"></a><span class="lineno"> 1876</span>&#160;    <span class="keyword">auto</span> field_offset = GetOptionalFieldOffset(field);</div>
-<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;    <span class="keywordflow">return</span> verifier.Check(field_offset != 0) &amp;&amp;</div>
-<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160;           verifier.VerifyOffset(data_ + field_offset);</div>
-<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;  }</div>
-<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;</div>
-<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;  <span class="comment">// private constructor &amp; copy constructor: you obtain instances of this</span></div>
-<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;  <span class="comment">// class by pointing to existing data only</span></div>
-<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;  Table();</div>
-<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160;  Table(<span class="keyword">const</span> Table &amp;other);</div>
-<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;</div>
-<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;  uint8_t data_[1];</div>
-<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;};</div>
-<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01890"></a><span class="lineno"> 1890</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="l01891"></a><span class="lineno"> 1891</span>&#160;<span class="comment">/// it is the opposite transformation of GetRoot().</span></div>
-<div class="line"><a name="l01892"></a><span class="lineno"> 1892</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="l01893"></a><span class="lineno"> 1893</span>&#160;<span class="comment">/// delete the buffer afterwards.</span></div>
-<div class="line"><a name="l01894"></a><span class="lineno"> 1894</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="l01895"></a><span class="lineno"> 1895</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="l01896"></a><span class="lineno"> 1896</span>&#160;  <span class="keyword">auto</span> vtable = table-&gt;GetVTable();</div>
-<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;  <span class="comment">// Either the vtable is before the root or after the root.</span></div>
-<div class="line"><a name="l01898"></a><span class="lineno"> 1898</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="l01899"></a><span class="lineno"> 1899</span>&#160;  <span class="comment">// Align to at least sizeof(uoffset_t).</span></div>
-<div class="line"><a name="l01900"></a><span class="lineno"> 1900</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="l01901"></a><span class="lineno"> 1901</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="l01902"></a><span class="lineno"> 1902</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="l01903"></a><span class="lineno"> 1903</span>&#160;  <span class="comment">// offset. The buffer may have been aligned to any size between</span></div>
-<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160;  <span class="comment">// sizeof(uoffset_t) and FLATBUFFERS_MAX_ALIGNMENT (see &quot;force_align&quot;).</span></div>
-<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160;  <span class="comment">// Sadly, the exact alignment is only known when constructing the buffer,</span></div>
-<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;  <span class="comment">// since it depends on the presence of values with said alignment properties.</span></div>
-<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;  <span class="comment">// So instead, we simply look at the next uoffset_t values (root,</span></div>
-<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160;  <span class="comment">// file_identifier, and alignment padding) to see which points to the root.</span></div>
-<div class="line"><a name="l01909"></a><span class="lineno"> 1909</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="l01910"></a><span class="lineno"> 1910</span>&#160;  <span class="comment">// be 0 or four ASCII characters.</span></div>
-<div class="line"><a name="l01911"></a><span class="lineno"> 1911</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="l01912"></a><span class="lineno"> 1912</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="l01913"></a><span class="lineno"> 1913</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="l01914"></a><span class="lineno"> 1914</span>&#160;       possible_roots;</div>
-<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160;       possible_roots--) {</div>
-<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;      start -= <span class="keyword">sizeof</span>(uoffset_t);</div>
-<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160;      <span class="keywordflow">if</span> (ReadScalar&lt;uoffset_t&gt;(start) + start ==</div>
-<div class="line"><a name="l01918"></a><span class="lineno"> 1918</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="l01919"></a><span class="lineno"> 1919</span>&#160;  }</div>
-<div class="line"><a name="l01920"></a><span class="lineno"> 1920</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="l01921"></a><span class="lineno"> 1921</span>&#160;  <span class="comment">// or the buffer is corrupt.</span></div>
-<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160;  <span class="comment">// Assert, because calling this function with bad data may cause reads</span></div>
-<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160;  <span class="comment">// outside of buffer boundaries.</span></div>
-<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160;  assert(<span class="keyword">false</span>);</div>
-<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</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">// Base class for native objects (FlatBuffer data de-serialized into native</span></div>
-<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160;<span class="comment">// C++ data structures).</span></div>
-<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160;<span class="comment">// Contains no functionality, purely documentative.</span></div>
-<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160;<span class="keyword">struct </span>NativeTable {</div>
-<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160;};</div>
-<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160;<span class="comment">/// @brief Function types to be used with resolving hashes into objects and</span></div>
-<div class="line"><a name="l01935"></a><span class="lineno"> 1935</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="l01936"></a><span class="lineno"> 1936</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="l01937"></a><span class="lineno"> 1937</span>&#160;<span class="comment">/// `cpp_type` (it is thus important whatever you write to this address</span></div>
-<div class="line"><a name="l01938"></a><span class="lineno"> 1938</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="l01939"></a><span class="lineno"> 1939</span>&#160;<span class="comment">/// may choose to implement a delayed binding lookup using this function</span></div>
-<div class="line"><a name="l01940"></a><span class="lineno"> 1940</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="l01941"></a><span class="lineno"> 1941</span>&#160;<span class="comment">/// is being serialized again.</span></div>
-<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> uint64_t hash_value_t;</div>
-<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;<span class="preprocessor">#ifdef FLATBUFFERS_CPP98_STL</span></div>
-<div class="line"><a name="l01944"></a><span class="lineno"> 1944</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="l01945"></a><span class="lineno"> 1945</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="l01946"></a><span class="lineno"> 1946</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l01947"></a><span class="lineno"> 1947</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="l01948"></a><span class="lineno"> 1948</span>&#160;          resolver_function_t;</div>
-<div class="line"><a name="l01949"></a><span class="lineno"> 1949</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="l01950"></a><span class="lineno"> 1950</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;</div>
-<div class="line"><a name="l01952"></a><span class="lineno"> 1952</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="l01953"></a><span class="lineno"> 1953</span>&#160;<span class="comment">// enums in the generated code.</span></div>
-<div class="line"><a name="l01954"></a><span class="lineno"> 1954</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="l01955"></a><span class="lineno"> 1955</span>&#160;<span class="comment">// this is not typechecked to be a subclass of Table, so beware!</span></div>
-<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;<span class="comment">// Note: this function will return false for fields equal to the default</span></div>
-<div class="line"><a name="l01957"></a><span class="lineno"> 1957</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="l01958"></a><span class="lineno"> 1958</span>&#160;<span class="comment">// used).</span></div>
-<div class="line"><a name="l01959"></a><span class="lineno"> 1959</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="l01960"></a><span class="lineno"> 1960</span>&#160;  <span class="comment">// Cast, since Table is a private baseclass of any table types.</span></div>
-<div class="line"><a name="l01961"></a><span class="lineno"> 1961</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="l01962"></a><span class="lineno"> 1962</span>&#160;}</div>
-<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160;</div>
-<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160;<span class="comment">// Utility function for reverse lookups on the EnumNames*() functions</span></div>
-<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;<span class="comment">// (in the generated C++ code)</span></div>
-<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160;<span class="comment">// names must be NULL terminated.</span></div>
-<div class="line"><a name="l01967"></a><span class="lineno"> 1967</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="l01968"></a><span class="lineno"> 1968</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="l01969"></a><span class="lineno"> 1969</span>&#160;    <span class="keywordflow">if</span> (!strcmp(*p, name))</div>
-<div class="line"><a name="l01970"></a><span class="lineno"> 1970</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="l01971"></a><span class="lineno"> 1971</span>&#160;  <span class="keywordflow">return</span> -1;</div>
-<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;}</div>
-<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160;</div>
-<div class="line"><a name="l01974"></a><span class="lineno"> 1974</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="l01975"></a><span class="lineno"> 1975</span>&#160;<span class="comment">// up looking the same on different compilers and platforms.</span></div>
-<div class="line"><a name="l01976"></a><span class="lineno"> 1976</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="l01977"></a><span class="lineno"> 1977</span>&#160;<span class="comment">// does padding itself by inserting extra padding fields that make every</span></div>
-<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;<span class="comment">// element aligned to its own size.</span></div>
-<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;<span class="comment">// Additionally, it manually sets the alignment of the struct as a whole,</span></div>
-<div class="line"><a name="l01980"></a><span class="lineno"> 1980</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="l01981"></a><span class="lineno"> 1981</span>&#160;<span class="comment">// by the force_align attribute.</span></div>
-<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;<span class="comment">// These are used in the generated code only.</span></div>
-<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;</div>
-<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160;<span class="preprocessor">#if defined(_MSC_VER)</span></div>
-<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;<span class="preprocessor">  #define MANUALLY_ALIGNED_STRUCT(alignment) \</span></div>
-<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160;<span class="preprocessor">    __pragma(pack(1)); \</span></div>
-<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;<span class="preprocessor">    struct __declspec(align(alignment))</span></div>
-<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;<span class="preprocessor">  #define STRUCT_END(name, size) \</span></div>
-<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;<span class="preprocessor">    __pragma(pack()); \</span></div>
-<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;<span class="preprocessor">    static_assert(sizeof(name) == size, &quot;compiler breaks packing rules&quot;)</span></div>
-<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;<span class="preprocessor">#elif defined(__GNUC__) || defined(__clang__)</span></div>
-<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160;<span class="preprocessor">  #define MANUALLY_ALIGNED_STRUCT(alignment) \</span></div>
-<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;<span class="preprocessor">    _Pragma(&quot;pack(1)&quot;) \</span></div>
-<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;<span class="preprocessor">    struct __attribute__((aligned(alignment)))</span></div>
-<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160;<span class="preprocessor">  #define STRUCT_END(name, size) \</span></div>
-<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;<span class="preprocessor">    _Pragma(&quot;pack()&quot;) \</span></div>
-<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160;<span class="preprocessor">    static_assert(sizeof(name) == size, &quot;compiler breaks packing rules&quot;)</span></div>
-<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;<span class="preprocessor">  #error Unknown compiler, please define structure alignment macros</span></div>
-<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160;</div>
-<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;<span class="comment">// String which identifies the current version of FlatBuffers.</span></div>
-<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160;<span class="comment">// flatbuffer_version_string is used by Google developers to identify which</span></div>
-<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160;<span class="comment">// applications uploaded to Google Play are using this library.  This allows</span></div>
-<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;<span class="comment">// the development team at Google to determine the popularity of the library.</span></div>
-<div class="line"><a name="l02006"></a><span class="lineno"> 2006</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="l02007"></a><span class="lineno"> 2007</span>&#160;<span class="comment">// scanned for this version string.  We track which applications are using it</span></div>
-<div class="line"><a name="l02008"></a><span class="lineno"> 2008</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="l02009"></a><span class="lineno"> 2009</span>&#160;<span class="comment">// appreciate if you left it in.</span></div>
-<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160;</div>
-<div class="line"><a name="l02011"></a><span class="lineno"> 2011</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="l02012"></a><span class="lineno"> 2012</span>&#160;<span class="preprocessor">#if !defined(_WIN32) &amp;&amp; !defined(__CYGWIN__)</span></div>
-<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160;</div>
-<div class="line"><a name="l02014"></a><span class="lineno"> 2014</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="l02015"></a><span class="lineno"> 2015</span>&#160;volatile __attribute__((weak)) const <span class="keywordtype">char</span> *flatbuffer_version_string =</div>
-<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;  &quot;FlatBuffers &quot;</div>
-<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160;  FLATBUFFERS_STRING(FLATBUFFERS_VERSION_MAJOR) &quot;.&quot;</div>
-<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160;  FLATBUFFERS_STRING(FLATBUFFERS_VERSION_MINOR) &quot;.&quot;</div>
-<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160;  FLATBUFFERS_STRING(FLATBUFFERS_VERSION_REVISION);</div>
-<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160;</div>
-<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;<span class="preprocessor">#endif  // !defined(_WIN32) &amp;&amp; !defined(__CYGWIN__)</span></div>
-<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;</div>
-<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160;<span class="preprocessor">#define DEFINE_BITMASK_OPERATORS(E, T)\</span></div>
-<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;<span class="preprocessor">    inline E operator | (E lhs, E rhs){\</span></div>
-<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160;<span class="preprocessor">        return E(T(lhs) | T(rhs));\</span></div>
-<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160;<span class="preprocessor">    }\</span></div>
-<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160;<span class="preprocessor">    inline E operator &amp; (E lhs, E rhs){\</span></div>
-<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;<span class="preprocessor">        return E(T(lhs) &amp; T(rhs));\</span></div>
-<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;<span class="preprocessor">    }\</span></div>
-<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160;<span class="preprocessor">    inline E operator ^ (E lhs, E rhs){\</span></div>
-<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;<span class="preprocessor">        return E(T(lhs) ^ T(rhs));\</span></div>
-<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;<span class="preprocessor">    }\</span></div>
-<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;<span class="preprocessor">    inline E operator ~ (E lhs){\</span></div>
-<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;<span class="preprocessor">        return E(~T(lhs));\</span></div>
-<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;<span class="preprocessor">    }\</span></div>
-<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160;<span class="preprocessor">    inline E operator |= (E &amp;lhs, E rhs){\</span></div>
-<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160;<span class="preprocessor">        lhs = lhs | rhs;\</span></div>
-<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160;<span class="preprocessor">        return lhs;\</span></div>
-<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;<span class="preprocessor">    }\</span></div>
-<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;<span class="preprocessor">    inline E operator &amp;= (E &amp;lhs, E rhs){\</span></div>
-<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160;<span class="preprocessor">        lhs = lhs &amp; rhs;\</span></div>
-<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160;<span class="preprocessor">        return lhs;\</span></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="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="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="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="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="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 ^= (E &amp;lhs, E rhs){\</span></div>
-<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160;<span class="preprocessor">        lhs = lhs ^ rhs;\</span></div>
-<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160;<span class="preprocessor">        return lhs;\</span></div>
-<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160;<span class="preprocessor">    }\</span></div>
-<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160;<span class="preprocessor">    inline bool operator !(E 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">        return !bool(T(rhs)); \</span></div>
-<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160;<span class="preprocessor">    }</span></div>
-<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160;<span class="comment">/// @endcond</span></div>
-<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;<span class="comment"></span>}  <span class="comment">// namespace flatbuffers</span></div>
-<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160;</div>
-<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;<span class="preprocessor">#if defined(_MSC_VER)</span></div>
-<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160;<span class="preprocessor">#pragma warning(pop)</span></div>
-<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160;</div>
-<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160;<span class="preprocessor">#endif  // FLATBUFFERS_H_</span></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:1167</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:1383</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:1229</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:1310</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:1297</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:1371</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:707</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:747</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_ac72b54a75e0c329e0ce0b8fab758e256"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#ac72b54a75e0c329e0ce0b8fab758e256">flatbuffers::FlatBufferBuilder::FlatBufferBuilder</a></div><div class="ttdeci">FlatBufferBuilder(uoffset_t initial_size=1024, const simple_allocator *allocator=nullptr)</div><div class="ttdoc">Default constructor for FlatBufferBuilder. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:719</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:735</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:1210</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:1409</div></div>
-<div class="ttc" id="classflatbuffers_1_1_flat_buffer_builder_html_a21c7f933d7ff1212f2090763ef9f0c44"><div class="ttname"><a href="classflatbuffers_1_1_flat_buffer_builder.html#a21c7f933d7ff1212f2090763ef9f0c44">flatbuffers::FlatBufferBuilder::ReleaseBufferPointer</a></div><div class="ttdeci">unique_ptr_t ReleaseBufferPointer()</div><div class="ttdoc">Get the released pointer to the serialized buffer. </div><div class="ttdef"><b>Definition:</b> flatbuffers.h:768</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:1434</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:1069</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:1000</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:798</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:802</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:1416</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:1026</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:1325</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:1087</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:1035</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:1284</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:1181</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:779</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:1195</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:1259</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:1012</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:1019</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:1144</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:1402</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:759</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:1126</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:1078</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:1358</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:1045</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:1247</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:1421</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:752</div></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="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><!-- fragment --></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- Google Analytics -->
diff --git a/flatbuffers_8js.html b/flatbuffers_8js.html
index 2c5ea24f..2c1ebfdd 100644
--- a/flatbuffers_8js.html
+++ b/flatbuffers_8js.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flatbuffers_benchmarks.html b/flatbuffers_benchmarks.html
index 1d65d6bf..3307d56a 100644
--- a/flatbuffers_benchmarks.html
+++ b/flatbuffers_benchmarks.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flatbuffers_grammar.html b/flatbuffers_grammar.html
index 43cc9071..012fdebb 100644
--- a/flatbuffers_grammar.html
+++ b/flatbuffers_grammar.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flatbuffers_grpc_guide_use_cpp.html b/flatbuffers_grpc_guide_use_cpp.html
new file mode 100644
index 00000000..6a6256d4
--- /dev/null
+++ b/flatbuffers_grpc_guide_use_cpp.html
@@ -0,0 +1,322 @@
+<!-- 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: Use in C++</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><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><!-- 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('flatbuffers_grpc_guide_use_cpp.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">Use in C++ </div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h2>Before you get started</h2>
+<p>Before diving into the FlatBuffers gRPC usage in C++, you should already be familiar with the following:</p>
+<ul>
+<li>FlatBuffers as a serialization format</li>
+<li><a href="http://www.grpc.io/docs/">gRPC</a> usage</li>
+</ul>
+<h2>Using the FlatBuffers gRPC C++ library</h2>
+<p>NOTE: The examples below are also in the <code>grpc/samples/greeter</code> directory.</p>
+<p>We will illustrate usage with the following schema:</p>
+<div class="fragment"><div class="line">table HelloReply {</div>
+<div class="line">  message:string;</div>
+<div class="line">}</div>
+<div class="line"></div>
+<div class="line">table HelloRequest {</div>
+<div class="line">  name:string;</div>
+<div class="line">}</div>
+<div class="line"></div>
+<div class="line">table ManyHellosRequest {</div>
+<div class="line">  name:string;</div>
+<div class="line">  num_greetings:int;</div>
+<div class="line">}</div>
+<div class="line"></div>
+<div class="line">rpc_service Greeter {</div>
+<div class="line">  SayHello(HelloRequest):HelloReply;</div>
+<div class="line">  SayManyHellos(ManyHellosRequest):HelloReply (streaming: <span class="stringliteral">&quot;server&quot;</span>);</div>
+<div class="line">}</div>
+</div><!-- fragment --><p>When we run <code>flatc</code>, we pass in the <code>--grpc</code> option and generage an additional <code>greeter.grpc.fb.h</code> and <code>greeter.grpc.fb.cc</code>.</p>
+<p>Example server code looks like this:</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;greeter.grpc.fb.h&quot;</span></div>
+<div class="line"><span class="preprocessor">#include &quot;greeter_generated.h&quot;</span></div>
+<div class="line"></div>
+<div class="line"><span class="preprocessor">#include &lt;grpc++/grpc++.h&gt;</span></div>
+<div class="line"></div>
+<div class="line"><span class="preprocessor">#include &lt;iostream&gt;</span></div>
+<div class="line"><span class="preprocessor">#include &lt;memory&gt;</span></div>
+<div class="line"><span class="preprocessor">#include &lt;string&gt;</span></div>
+<div class="line"></div>
+<div class="line"><span class="keyword">class </span>GreeterServiceImpl final : <span class="keyword">public</span> Greeter::Service {</div>
+<div class="line">  <span class="keyword">virtual</span> grpc::Status SayHello(</div>
+<div class="line">      grpc::ServerContext *context,</div>
+<div class="line">      <span class="keyword">const</span> flatbuffers::grpc::Message&lt;HelloRequest&gt; *request_msg,</div>
+<div class="line">      flatbuffers::grpc::Message&lt;HelloReply&gt; *response_msg)<span class="keyword"> override </span>{</div>
+<div class="line">    <span class="comment">// flatbuffers::grpc::MessageBuilder mb_;</span></div>
+<div class="line">    <span class="comment">// We call GetRoot to &quot;parse&quot; the message. Verification is already</span></div>
+<div class="line">    <span class="comment">// performed by default. See the notes below for more details.</span></div>
+<div class="line">    <span class="keyword">const</span> HelloRequest *request = request_msg-&gt;GetRoot();</div>
+<div class="line"></div>
+<div class="line">    <span class="comment">// Fields are retrieved as usual with FlatBuffers</span></div>
+<div class="line">    <span class="keyword">const</span> std::string &amp;name = request-&gt;name()-&gt;str();</div>
+<div class="line"></div>
+<div class="line">    <span class="comment">// `flatbuffers::grpc::MessageBuilder` is a `FlatBufferBuilder` with a</span></div>
+<div class="line">    <span class="comment">// special allocator for efficient gRPC buffer transfer, but otherwise</span></div>
+<div class="line">    <span class="comment">// usage is the same as usual.</span></div>
+<div class="line">    <span class="keyword">auto</span> msg_offset = mb_.CreateString(<span class="stringliteral">&quot;Hello, &quot;</span> + name);</div>
+<div class="line">    <span class="keyword">auto</span> hello_offset = CreateHelloReply(mb_, msg_offset);</div>
+<div class="line">    mb_.Finish(hello_offset);</div>
+<div class="line"></div>
+<div class="line">    <span class="comment">// The `ReleaseMessage&lt;T&gt;()` function detaches the message from the</span></div>
+<div class="line">    <span class="comment">// builder, so we can transfer the resopnse to gRPC while simultaneously</span></div>
+<div class="line">    <span class="comment">// detaching that memory buffer from the builer.</span></div>
+<div class="line">    *response_msg = mb_.ReleaseMessage&lt;HelloReply&gt;();</div>
+<div class="line">    assert(response_msg-&gt;Verify());</div>
+<div class="line"></div>
+<div class="line">    <span class="comment">// Return an OK status.</span></div>
+<div class="line">    <span class="keywordflow">return</span> grpc::Status::OK;</div>
+<div class="line">  }</div>
+<div class="line"></div>
+<div class="line">  <span class="keyword">virtual</span> grpc::Status SayManyHellos(</div>
+<div class="line">      grpc::ServerContext *context,</div>
+<div class="line">      <span class="keyword">const</span> flatbuffers::grpc::Message&lt;ManyHellosRequest&gt; *request_msg,</div>
+<div class="line">      grpc::ServerWriter&lt;flatbuffers::grpc::Message&lt;HelloReply&gt;&gt; *writer)<span class="keyword"></span></div>
+<div class="line"><span class="keyword">      override </span>{</div>
+<div class="line">    <span class="comment">// The streaming usage below is simply a combination of standard gRPC</span></div>
+<div class="line">    <span class="comment">// streaming with the FlatBuffers usage shown above.</span></div>
+<div class="line">    <span class="keyword">const</span> ManyHellosRequest *request = request_msg-&gt;GetRoot();</div>
+<div class="line">    <span class="keyword">const</span> std::string &amp;name = request-&gt;name()-&gt;str();</div>
+<div class="line">    <span class="keywordtype">int</span> num_greetings = request-&gt;num_greetings();</div>
+<div class="line"></div>
+<div class="line">    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; num_greetings; i++) {</div>
+<div class="line">      <span class="keyword">auto</span> msg_offset = mb_.CreateString(<span class="stringliteral">&quot;Many hellos, &quot;</span> + name);</div>
+<div class="line">      <span class="keyword">auto</span> hello_offset = CreateHelloReply(mb_, msg_offset);</div>
+<div class="line">      mb_.Finish(hello_offset);</div>
+<div class="line">      writer-&gt;Write(mb_.ReleaseMessage&lt;HelloReply&gt;());</div>
+<div class="line">    }</div>
+<div class="line"></div>
+<div class="line">    <span class="keywordflow">return</span> grpc::Status::OK;</div>
+<div class="line">  }</div>
+<div class="line"></div>
+<div class="line">  flatbuffers::grpc::MessageBuilder mb_;</div>
+<div class="line">};</div>
+<div class="line"></div>
+<div class="line"><span class="keywordtype">void</span> RunServer() {</div>
+<div class="line">  std::string server_address(<span class="stringliteral">&quot;0.0.0.0:50051&quot;</span>);</div>
+<div class="line">  GreeterServiceImpl service;</div>
+<div class="line"></div>
+<div class="line">  grpc::ServerBuilder builder;</div>
+<div class="line">  builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());</div>
+<div class="line">  builder.RegisterService(&amp;service);</div>
+<div class="line">  std::unique_ptr&lt;grpc::Server&gt; server(builder.BuildAndStart());</div>
+<div class="line">  std::cerr &lt;&lt; <span class="stringliteral">&quot;Server listening on &quot;</span> &lt;&lt; server_address &lt;&lt; std::endl;</div>
+<div class="line"></div>
+<div class="line">  server-&gt;Wait();</div>
+<div class="line">}</div>
+<div class="line"></div>
+<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keyword">const</span> <span class="keywordtype">char</span> *argv[]) {</div>
+<div class="line">  RunServer();</div>
+<div class="line">  <span class="keywordflow">return</span> 0;</div>
+<div class="line">}</div>
+</div><!-- fragment --><p>Example client code looks like this:</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;greeter.grpc.fb.h&quot;</span></div>
+<div class="line"><span class="preprocessor">#include &quot;greeter_generated.h&quot;</span></div>
+<div class="line"></div>
+<div class="line"><span class="preprocessor">#include &lt;grpc++/grpc++.h&gt;</span></div>
+<div class="line"></div>
+<div class="line"><span class="preprocessor">#include &lt;iostream&gt;</span></div>
+<div class="line"><span class="preprocessor">#include &lt;memory&gt;</span></div>
+<div class="line"><span class="preprocessor">#include &lt;string&gt;</span></div>
+<div class="line"></div>
+<div class="line"><span class="keyword">class </span>GreeterClient {</div>
+<div class="line"> <span class="keyword">public</span>:</div>
+<div class="line">  GreeterClient(std::shared_ptr&lt;grpc::Channel&gt; channel)</div>
+<div class="line">    : stub_(Greeter::NewStub(channel)) {}</div>
+<div class="line"></div>
+<div class="line">  std::string SayHello(<span class="keyword">const</span> std::string &amp;name) {</div>
+<div class="line">    flatbuffers::grpc::MessageBuilder mb;</div>
+<div class="line">    <span class="keyword">auto</span> name_offset = mb.CreateString(name);</div>
+<div class="line">    <span class="keyword">auto</span> request_offset = CreateHelloRequest(mb, name_offset);</div>
+<div class="line">    mb.Finish(request_offset);</div>
+<div class="line">    <span class="keyword">auto</span> request_msg = mb.ReleaseMessage&lt;HelloRequest&gt;();</div>
+<div class="line"></div>
+<div class="line">    flatbuffers::grpc::Message&lt;HelloReply&gt; response_msg;</div>
+<div class="line"></div>
+<div class="line">    grpc::ClientContext context;</div>
+<div class="line"></div>
+<div class="line">    <span class="keyword">auto</span> status = stub_-&gt;SayHello(&amp;context, request_msg, &amp;response_msg);</div>
+<div class="line">    <span class="keywordflow">if</span> (status.ok()) {</div>
+<div class="line">      <span class="keyword">const</span> HelloReply *response = response_msg.GetRoot();</div>
+<div class="line">      <span class="keywordflow">return</span> response-&gt;message()-&gt;str();</div>
+<div class="line">    } <span class="keywordflow">else</span> {</div>
+<div class="line">      std::cerr &lt;&lt; status.error_code() &lt;&lt; <span class="stringliteral">&quot;: &quot;</span> &lt;&lt; status.error_message()</div>
+<div class="line">                &lt;&lt; std::endl;</div>
+<div class="line">      <span class="keywordflow">return</span> <span class="stringliteral">&quot;RPC failed&quot;</span>;</div>
+<div class="line">    }</div>
+<div class="line">  }</div>
+<div class="line"></div>
+<div class="line">  <span class="keywordtype">void</span> SayManyHellos(<span class="keyword">const</span> std::string &amp;name, <span class="keywordtype">int</span> num_greetings,</div>
+<div class="line">                     std::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> std::string &amp;)&gt; callback) {</div>
+<div class="line">    flatbuffers::grpc::MessageBuilder mb;</div>
+<div class="line">    <span class="keyword">auto</span> name_offset = mb.CreateString(name);</div>
+<div class="line">    <span class="keyword">auto</span> request_offset =</div>
+<div class="line">        CreateManyHellosRequest(mb, name_offset, num_greetings);</div>
+<div class="line">    mb.Finish(request_offset);</div>
+<div class="line">    <span class="keyword">auto</span> request_msg = mb.ReleaseMessage&lt;ManyHellosRequest&gt;();</div>
+<div class="line"></div>
+<div class="line">    flatbuffers::grpc::Message&lt;HelloReply&gt; response_msg;</div>
+<div class="line"></div>
+<div class="line">    grpc::ClientContext context;</div>
+<div class="line"></div>
+<div class="line">    <span class="keyword">auto</span> stream = stub_-&gt;SayManyHellos(&amp;context, request_msg);</div>
+<div class="line">    <span class="keywordflow">while</span> (stream-&gt;Read(&amp;response_msg)) {</div>
+<div class="line">      <span class="keyword">const</span> HelloReply *response = response_msg.GetRoot();</div>
+<div class="line">      callback(response-&gt;message()-&gt;str());</div>
+<div class="line">    }</div>
+<div class="line">    <span class="keyword">auto</span> status = stream-&gt;Finish();</div>
+<div class="line">    <span class="keywordflow">if</span> (!status.ok()) {</div>
+<div class="line">      std::cerr &lt;&lt; status.error_code() &lt;&lt; <span class="stringliteral">&quot;: &quot;</span> &lt;&lt; status.error_message()</div>
+<div class="line">                &lt;&lt; std::endl;</div>
+<div class="line">      callback(<span class="stringliteral">&quot;RPC failed&quot;</span>);</div>
+<div class="line">    }</div>
+<div class="line">  }</div>
+<div class="line"></div>
+<div class="line"> <span class="keyword">private</span>:</div>
+<div class="line">  std::unique_ptr&lt;Greeter::Stub&gt; stub_;</div>
+<div class="line">};</div>
+<div class="line"></div>
+<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div>
+<div class="line">  std::string server_address(<span class="stringliteral">&quot;localhost:50051&quot;</span>);</div>
+<div class="line"></div>
+<div class="line">  <span class="keyword">auto</span> channel =</div>
+<div class="line">      grpc::CreateChannel(server_address, grpc::InsecureChannelCredentials());</div>
+<div class="line">  GreeterClient greeter(channel);</div>
+<div class="line"></div>
+<div class="line">  std::string name(<span class="stringliteral">&quot;world&quot;</span>);</div>
+<div class="line"></div>
+<div class="line">  std::string message = greeter.SayHello(name);</div>
+<div class="line">  std::cerr &lt;&lt; <span class="stringliteral">&quot;Greeter received: &quot;</span> &lt;&lt; message &lt;&lt; std::endl;</div>
+<div class="line"></div>
+<div class="line">  <span class="keywordtype">int</span> num_greetings = 10;</div>
+<div class="line">  greeter.SayManyHellos(name, num_greetings, [](<span class="keyword">const</span> std::string &amp;message) {</div>
+<div class="line">    std::cerr &lt;&lt; <span class="stringliteral">&quot;Greeter received: &quot;</span> &lt;&lt; message &lt;&lt; std::endl;</div>
+<div class="line">  });</div>
+<div class="line"></div>
+<div class="line">  <span class="keywordflow">return</span> 0;</div>
+<div class="line">}</div>
+</div><!-- fragment --> </div></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/flatbuffers_guide_building.html b/flatbuffers_guide_building.html
index 9b6b90bb..63e7fbdd 100644
--- a/flatbuffers_guide_building.html
+++ b/flatbuffers_guide_building.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flatbuffers_guide_tutorial.html b/flatbuffers_guide_tutorial.html
index 764828d5..169917f6 100644
--- a/flatbuffers_guide_tutorial.html
+++ b/flatbuffers_guide_tutorial.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
@@ -963,10 +963,10 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_tutorial.html','');}
 <div class="line"><span class="keywordtype">float</span> x = pos.x();</div>
 <div class="line"><span class="keywordtype">float</span> y = pos.y();</div>
 <div class="line"><span class="keywordtype">float</span> z = pos.z();</div>
-</div><!-- fragment --> </div> <div class="language-csharp"> <div class="fragment"><div class="line">var pos = monster.Pos</div>
-<div class="line">var x = pos.X</div>
-<div class="line">var y = pos.Y</div>
-<div class="line">var z = pos.Z</div>
+</div><!-- fragment --> </div> <div class="language-csharp"> <div class="fragment"><div class="line">var pos = monster.Pos.Value;</div>
+<div class="line">var x = pos.X;</div>
+<div class="line">var y = pos.Y;</div>
+<div class="line">var z = pos.Z;</div>
 </div><!-- fragment --> </div> <div class="language-go"> <div class="fragment"><div class="line">pos := monster.Pos(nil)</div>
 <div class="line">x := pos.X()</div>
 <div class="line">y := pos.Y()</div>
@@ -1002,7 +1002,7 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_tutorial.html','');}
 </div><!-- fragment --> </div> <div class="language-java"> <div class="fragment"><div class="line"><span class="keywordtype">int</span> invLength = monster.inventoryLength();</div>
 <div class="line">byte thirdItem = monster.inventory(2);</div>
 </div><!-- fragment --> </div> <div class="language-csharp"> <div class="fragment"><div class="line"><span class="keywordtype">int</span> invLength = monster.InventoryLength;</div>
-<div class="line">var thirdItem = monster.GetInventory(2);</div>
+<div class="line">var thirdItem = monster.Inventory(2);</div>
 </div><!-- fragment --> </div> <div class="language-go"> <div class="fragment"><div class="line">invLength := monster.InventoryLength()</div>
 <div class="line">thirdItem := monster.Inventory(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;inv_len = monster.InventoryLength()</div>
@@ -1024,8 +1024,8 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_tutorial.html','');}
 <div class="line">String secondWeaponName = monster.weapons(1).name();</div>
 <div class="line"><span class="keywordtype">short</span> secondWeaponDamage = monster.weapons(1).damage();</div>
 </div><!-- fragment --> </div> <div class="language-csharp"> <div class="fragment"><div class="line"><span class="keywordtype">int</span> weaponsLength = monster.WeaponsLength;</div>
-<div class="line">var secondWeaponName = monster.GetWeapons(1).Name;</div>
-<div class="line">var secondWeaponDamage = monster.GetWeapons(1).Damage;</div>
+<div class="line">var secondWeaponName = monster.Weapons(1).Name;</div>
+<div class="line">var secondWeaponDamage = monster.Weapons(1).Damage;</div>
 </div><!-- fragment --> </div> <div class="language-go"> <div class="fragment"><div class="line">weaponLength := monster.WeaponsLength()</div>
 <div class="line">weapon := <span class="keyword">new</span>(sample.Weapon) <span class="comment">// We need a `sample.Weapon` to pass into `monster.Weapons()`</span></div>
 <div class="line">                             <span class="comment">// to capture the output of the function.</span></div>
@@ -1070,8 +1070,7 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_tutorial.html','');}
 </div><!-- fragment --> </div> <div class="language-csharp"> <div class="fragment"><div class="line">var unionType = monster.EquippedType;</div>
 <div class="line"></div>
 <div class="line"><span class="keywordflow">if</span> (unionType == Equipment.Weapon) {</div>
-<div class="line">  var weapon = (Weapon)monster.GetEquipped(<span class="keyword">new</span> Weapon()); <span class="comment">// Requires explicit cast</span></div>
-<div class="line">                                                          <span class="comment">// to `Weapon`.</span></div>
+<div class="line">  var weapon = monster.Equipped&lt;Weapon&gt;().Value;</div>
 <div class="line"></div>
 <div class="line">  var weaponName = weapon.Name;     <span class="comment">// &quot;Axe&quot;</span></div>
 <div class="line">  var weaponDamage = weapon.Damage; <span class="comment">// 5</span></div>
diff --git a/flatbuffers_guide_use_c.html b/flatbuffers_guide_use_c.html
index 226549b9..ccd3ddbb 100644
--- a/flatbuffers_guide_use_c.html
+++ b/flatbuffers_guide_use_c.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flatbuffers_guide_use_cpp.html b/flatbuffers_guide_use_cpp.html
index 4328ad83..cb4faa84 100644
--- a/flatbuffers_guide_use_cpp.html
+++ b/flatbuffers_guide_use_cpp.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
@@ -129,7 +129,7 @@ $(document).ready(function(){initNavTree('flatbuffers_guide_use_cpp.html','');})
 <p>FlatBuffers supports both reading and writing FlatBuffers in C++.</p>
 <p>To use FlatBuffers in your code, first generate the C++ classes from your schema with the <code>--cpp</code> option to <code>flatc</code>. Then you can include both FlatBuffers and the generated code to read or write FlatBuffers.</p>
 <p>For example, here is how you would read a FlatBuffer binary file in C++: First, include the library and generated code. Then read the file into a <code>char *</code> array, which you pass to <code>GetMonster()</code>.</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="flatbuffers_8h.html">flatbuffers/flatbuffers.h</a>&quot;</span></div>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;flatbuffers/flatbuffers.h&quot;</span></div>
 <div class="line"><span class="preprocessor">#include &quot;monster_test_generate.h&quot;</span></div>
 <div class="line"><span class="preprocessor">#include &lt;cstdio&gt;</span> <span class="comment">// For printing and file access.</span></div>
 <div class="line"></div>
diff --git a/flatbuffers_guide_use_go.html b/flatbuffers_guide_use_go.html
index e707614b..911b68fe 100644
--- a/flatbuffers_guide_use_go.html
+++ b/flatbuffers_guide_use_go.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flatbuffers_guide_use_java_c-sharp.html b/flatbuffers_guide_use_java_c-sharp.html
index ce544370..48a10006 100644
--- a/flatbuffers_guide_use_java_c-sharp.html
+++ b/flatbuffers_guide_use_java_c-sharp.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flatbuffers_guide_use_javascript.html b/flatbuffers_guide_use_javascript.html
index 48ed1436..c69f99b7 100644
--- a/flatbuffers_guide_use_javascript.html
+++ b/flatbuffers_guide_use_javascript.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flatbuffers_guide_use_php.html b/flatbuffers_guide_use_php.html
index 2e94747d..c0d009d8 100644
--- a/flatbuffers_guide_use_php.html
+++ b/flatbuffers_guide_use_php.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flatbuffers_guide_use_python.html b/flatbuffers_guide_use_python.html
index ddbc5c8f..383f41db 100644
--- a/flatbuffers_guide_use_python.html
+++ b/flatbuffers_guide_use_python.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flatbuffers_guide_using_schema_compiler.html b/flatbuffers_guide_using_schema_compiler.html
index 6c86f962..23788667 100644
--- a/flatbuffers_guide_using_schema_compiler.html
+++ b/flatbuffers_guide_using_schema_compiler.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flatbuffers_guide_writing_schema.html b/flatbuffers_guide_writing_schema.html
index d7a418a6..e5ff40ed 100644
--- a/flatbuffers_guide_writing_schema.html
+++ b/flatbuffers_guide_writing_schema.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
@@ -215,6 +215,7 @@ root_type Monster;
 <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>
+<li><code>flexbuffer</code> (on a field): this indicates that the field (which must be a vector of ubyte) contains flexbuffer data. The generated code will then produce a convenient accessor for the FlexBuffer root.</li>
 <li><code>key</code> (on a field): this field is meant to be used as a key when sorting a vector of the type of table it sits in. Can be used for in-place binary search.</li>
 <li><code>hash</code> (on a field). This is an (un)signed 32/64 bit integer field, whose value during JSON parsing is allowed to be a string, which will then be stored as its hash. The value of attribute is the hashing algorithm to use, one of <code>fnv1_32</code> <code>fnv1_64</code> <code>fnv1a_32</code> <code>fnv1a_64</code>.</li>
 <li><code>original_order</code> (on a table): since elements in a table do not need to be stored in any particular order, they are often optimized for space by sorting them to size. This attribute stops that from happening. There should generally not be any reason to use this flag.</li>
diff --git a/flatbuffers_internals.html b/flatbuffers_internals.html
index 11bf7cdb..032818d2 100644
--- a/flatbuffers_internals.html
+++ b/flatbuffers_internals.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flatbuffers_support.html b/flatbuffers_support.html
index 94a5bd03..512d0965 100644
--- a/flatbuffers_support.html
+++ b/flatbuffers_support.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flatbuffers_white_paper.html b/flatbuffers_white_paper.html
index 14c61a3a..892064ef 100644
--- a/flatbuffers_white_paper.html
+++ b/flatbuffers_white_paper.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/flexbuffers.html b/flexbuffers.html
index 28c65803..8cb2f8e8 100644
--- a/flexbuffers.html
+++ b/flexbuffers.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
@@ -161,6 +161,9 @@ $(document).ready(function(){initNavTree('flexbuffers.html','');});
 <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>
+<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>
 <h1>Efficiency tips</h1>
 <ul>
 <li>Vectors generally are a lot more efficient than maps, so prefer them over maps when possible for small objects. Instead of a map with keys <code>x</code>, <code>y</code> and <code>z</code>, use a vector. Better yet, use a typed vector. Or even better, use a fixed size typed vector.</li>
diff --git a/functions.html b/functions.html
index bc803166..1d0546e1 100644
--- a/functions.html
+++ b/functions.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
@@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     <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 class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
     </ul>
   </div>
@@ -353,7 +354,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
 : <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aee9ed3214a7b35075773c506e3d95a14">com.google.flatbuffers.FlatBufferBuilder</a>
 </li>
 <li>Finish()
-: <a class="el" href="class_flat_buffers_1_1_flat_buffer_builder.html#ac7a48fd125d3f65f1bc1bc67d74eae73">FlatBuffers.FlatBufferBuilder</a>
+: <a class="el" href="class_flat_buffers_1_1_flat_buffer_builder.html#a1afc6853539aaff7ac6937ed03ff5c7b">FlatBuffers.FlatBufferBuilder</a>
 , <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">flatbuffers::FlatBufferBuilder</a>
 </li>
 <li>finish()
@@ -365,7 +366,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
 <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="class_flat_buffers_1_1_flat_buffer_builder.html#ae24f93e3f9672846dd241d585d62c63d">FlatBuffers.FlatBufferBuilder</a>
-, <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ac72b54a75e0c329e0ce0b8fab758e256">flatbuffers::FlatBufferBuilder</a>
+, <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4">flatbuffers::FlatBufferBuilder</a>
 </li>
 <li>forceDefaults()
 : <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aaadff3772bfdff756b4f269afae5ac69">com.google.flatbuffers.FlatBufferBuilder</a>
@@ -411,8 +412,11 @@ $(document).ready(function(){initNavTree('functions.html','');});
 
 
 <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>
+</li>
 <li>ReleaseBufferPointer()
-: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a21c7f933d7ff1212f2090763ef9f0c44">flatbuffers::FlatBufferBuilder</a>
+: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8">flatbuffers::FlatBufferBuilder</a>
 </li>
 </ul>
 
diff --git a/functions_func.html b/functions_func.html
index 5f4d41cf..ec7ffc27 100644
--- a/functions_func.html
+++ b/functions_func.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
@@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     <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 class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
     </ul>
   </div>
@@ -339,7 +340,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
 : <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aee9ed3214a7b35075773c506e3d95a14">com.google.flatbuffers.FlatBufferBuilder</a>
 </li>
 <li>Finish()
-: <a class="el" href="class_flat_buffers_1_1_flat_buffer_builder.html#ac7a48fd125d3f65f1bc1bc67d74eae73">FlatBuffers.FlatBufferBuilder</a>
+: <a class="el" href="class_flat_buffers_1_1_flat_buffer_builder.html#a1afc6853539aaff7ac6937ed03ff5c7b">FlatBuffers.FlatBufferBuilder</a>
 , <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912">flatbuffers::FlatBufferBuilder</a>
 </li>
 <li>finish()
@@ -351,7 +352,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
 <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="class_flat_buffers_1_1_flat_buffer_builder.html#ae24f93e3f9672846dd241d585d62c63d">FlatBuffers.FlatBufferBuilder</a>
-, <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ac72b54a75e0c329e0ce0b8fab758e256">flatbuffers::FlatBufferBuilder</a>
+, <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4">flatbuffers::FlatBufferBuilder</a>
 </li>
 <li>forceDefaults()
 : <a class="el" href="classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#aaadff3772bfdff756b4f269afae5ac69">com.google.flatbuffers.FlatBufferBuilder</a>
@@ -389,8 +390,11 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
 
 
 <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>
+</li>
 <li>ReleaseBufferPointer()
-: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a21c7f933d7ff1212f2090763ef9f0c44">flatbuffers::FlatBufferBuilder</a>
+: <a class="el" href="classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8">flatbuffers::FlatBufferBuilder</a>
 </li>
 </ul>
 
diff --git a/functions_prop.html b/functions_prop.html
index d7e9b244..19d070d0 100644
--- a/functions_prop.html
+++ b/functions_prop.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
@@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     <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 class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
     </ul>
   </div>
diff --git a/functions_vars.html b/functions_vars.html
index 5ce864bf..06676173 100644
--- a/functions_vars.html
+++ b/functions_vars.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
@@ -89,6 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
     <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 class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
     </ul>
   </div>
diff --git a/group__flatbuffers__cpp__api.html b/group__flatbuffers__cpp__api.html
index a5ced804..ad85553e 100644
--- a/group__flatbuffers__cpp__api.html
+++ b/group__flatbuffers__cpp__api.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/group__flatbuffers__cpp__api.js b/group__flatbuffers__cpp__api.js
index 3231a6fd..66939712 100644
--- a/group__flatbuffers__cpp__api.js
+++ b/group__flatbuffers__cpp__api.js
@@ -1,8 +1,19 @@
 var group__flatbuffers__cpp__api =
 [
     [ "FlatBufferBuilder", "classflatbuffers_1_1_flat_buffer_builder.html", [
-      [ "FlatBufferBuilder", "classflatbuffers_1_1_flat_buffer_builder.html#ac72b54a75e0c329e0ce0b8fab758e256", null ],
+      [ "FieldLoc", "structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html", [
+        [ "id", "structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html#ad46ccd8333f92b41f4e0999554574dde", null ],
+        [ "off", "structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html#a7b6ea8220d21e6fb72ee5ba0258e01c4", null ]
+      ] ],
+      [ "StringOffsetCompare", "structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html", [
+        [ "StringOffsetCompare", "structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html#a014debbfd9bde2a99f960a2123e54d33", null ],
+        [ "operator()", "structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html#a615f77ed71ea836aa9dc42d0b8722389", null ],
+        [ "buf_", "structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html#ada9a5bf2a061d414f73b1c176168877b", null ]
+      ] ],
+      [ "StringOffsetMap", "classflatbuffers_1_1_flat_buffer_builder.html#a9190cb2d5a4324ab0c52263b834fff09", null ],
+      [ "FlatBufferBuilder", "classflatbuffers_1_1_flat_buffer_builder.html#ae4ab74f53187e6c3e6041d34e01904c4", null ],
       [ "~FlatBufferBuilder", "classflatbuffers_1_1_flat_buffer_builder.html#a01dabf5cdd6b1b2881337e1e84aa1683", null ],
+      [ "FlatBufferBuilder", "classflatbuffers_1_1_flat_buffer_builder.html#ace4606286a25d3fedfb1532934d4cea1", null ],
       [ "Clear", "classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412", null ],
       [ "CreateSharedString", "classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1", null ],
       [ "CreateSharedString", "classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7", null ],
@@ -17,6 +28,7 @@ var group__flatbuffers__cpp__api =
       [ "CreateUninitializedVector", "classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c", null ],
       [ "CreateUninitializedVector", "classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50", null ],
       [ "CreateVector", "classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3", null ],
+      [ "CreateVector", "classflatbuffers_1_1_flat_buffer_builder.html#a44960c5aca0227f960c96a7ed4b881b4", null ],
       [ "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 ],
@@ -34,13 +46,26 @@ var group__flatbuffers__cpp__api =
       [ "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 ],
+      [ "Finish", "classflatbuffers_1_1_flat_buffer_builder.html#a2e4de5642bad6dcd01eb7e7eaf719c89", null ],
       [ "FinishSizePrefixed", "classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220", null ],
       [ "ForceDefaults", "classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a", null ],
       [ "GetBufferMinAlignment", "classflatbuffers_1_1_flat_buffer_builder.html#aa1ebce1f3f46832946a95952af1e9c2b", null ],
       [ "GetBufferPointer", "classflatbuffers_1_1_flat_buffer_builder.html#a8dc35f792179df4ca850492c1796d8b8", null ],
       [ "GetCurrentBufferPointer", "classflatbuffers_1_1_flat_buffer_builder.html#a3f4252e9bc005ba6c700469544fdccc9", null ],
       [ "GetSize", "classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63", null ],
-      [ "ReleaseBufferPointer", "classflatbuffers_1_1_flat_buffer_builder.html#a21c7f933d7ff1212f2090763ef9f0c44", null ],
-      [ "kFileIdentifierLength", "classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19", null ]
+      [ "operator=", "classflatbuffers_1_1_flat_buffer_builder.html#a376bb6858e8b1baab9a437f3f9f0b334", null ],
+      [ "Release", "classflatbuffers_1_1_flat_buffer_builder.html#a5e2c3a1e47f0ab4a3a3f07a07a52fb45", null ],
+      [ "ReleaseBufferPointer", "classflatbuffers_1_1_flat_buffer_builder.html#a0e715d9019060b4b753c4e5228be56e8", null ],
+      [ "Reset", "classflatbuffers_1_1_flat_buffer_builder.html#a952495120d5c56d600640091334b5341", null ],
+      [ "buf_", "classflatbuffers_1_1_flat_buffer_builder.html#a9a3886be63710d8bb88f2ade4ac8420d", null ],
+      [ "dedup_vtables_", "classflatbuffers_1_1_flat_buffer_builder.html#a6b31b32fb478a9ec68164e1579c7ebe7", null ],
+      [ "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 ],
+      [ "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 ],
+      [ "string_pool", "classflatbuffers_1_1_flat_buffer_builder.html#aa7e64b654cef62869c3dfd27def92e5d", null ],
+      [ "vtables_", "classflatbuffers_1_1_flat_buffer_builder.html#a17c05ea503f311eaf6e56a1be3ac1c49", null ]
     ] ]
 ];
\ No newline at end of file
diff --git a/group__flatbuffers__csharp__api.html b/group__flatbuffers__csharp__api.html
index be6c6343..05a9bdd5 100644
--- a/group__flatbuffers__csharp__api.html
+++ b/group__flatbuffers__csharp__api.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/group__flatbuffers__go__api.html b/group__flatbuffers__go__api.html
index 1cc60918..d1fbfc5a 100644
--- a/group__flatbuffers__go__api.html
+++ b/group__flatbuffers__go__api.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/group__flatbuffers__java__api.html b/group__flatbuffers__java__api.html
index 17634909..727900d4 100644
--- a/group__flatbuffers__java__api.html
+++ b/group__flatbuffers__java__api.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/group__flatbuffers__javascript__api.html b/group__flatbuffers__javascript__api.html
index 0e0911bb..efb9ec93 100644
--- a/group__flatbuffers__javascript__api.html
+++ b/group__flatbuffers__javascript__api.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/group__flatbuffers__php__api.html b/group__flatbuffers__php__api.html
index 4e9f63ca..705d89a4 100644
--- a/group__flatbuffers__php__api.html
+++ b/group__flatbuffers__php__api.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/group__flatbuffers__python__api.html b/group__flatbuffers__python__api.html
index 0c074497..e4c4d3d5 100644
--- a/group__flatbuffers__python__api.html
+++ b/group__flatbuffers__python__api.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/hierarchy.html b/hierarchy.html
new file mode 100644
index 00000000..377fb520
--- /dev/null
+++ b/hierarchy.html
@@ -0,0 +1,165 @@
+<!-- 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: Class Hierarchy</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 class="current"><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('hierarchy.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">Class Hierarchy</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
+<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>
+</table>
+</div><!-- directory -->
+</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/hierarchy.js b/hierarchy.js
new file mode 100644
index 00000000..c07d52f4
--- /dev/null
+++ b/hierarchy.js
@@ -0,0 +1,24 @@
+var hierarchy =
+[
+    [ "flatbuffers::Allocator", "classflatbuffers_1_1_allocator.html", [
+      [ "flatbuffers::DefaultAllocator", "classflatbuffers_1_1_default_allocator.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 ],
+    [ "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 ],
+    [ "flatbuffers::IndirectHelper< Offset< T > >", "structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html", null ],
+    [ "flatbuffers::Offset< T >", "structflatbuffers_1_1_offset.html", null ],
+    [ "flatbuffers::FlatBufferBuilder::StringOffsetCompare", "structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html", null ],
+    [ "flatbuffers::Vector< T >", "classflatbuffers_1_1_vector.html", null ],
+    [ "flatbuffers::Vector< char >", "classflatbuffers_1_1_vector.html", [
+      [ "flatbuffers::String", "structflatbuffers_1_1_string.html", null ]
+    ] ],
+    [ "flatbuffers::vector_downward", "classflatbuffers_1_1vector__downward.html", null ],
+    [ "flatbuffers::VectorIterator< T, IT >", "structflatbuffers_1_1_vector_iterator.html", null ],
+    [ "flatbuffers::VectorOfAny", "classflatbuffers_1_1_vector_of_any.html", null ]
+];
\ No newline at end of file
diff --git a/index.html b/index.html
index 613a35fa..c2c92226 100644
--- a/index.html
+++ b/index.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/md__go_api.html b/md__go_api.html
index e3921eb8..98df5793 100644
--- a/md__go_api.html
+++ b/md__go_api.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/modules.html b/modules.html
index 8a942c7a..64c023a3 100644
--- a/modules.html
+++ b/modules.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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="usergroup1.html"><span>API&#160;Reference</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">
diff --git a/namespace_flat_buffers.html b/namespace_flat_buffers.html
index e0a879ad..c77536b1 100644
--- a/namespace_flat_buffers.html
+++ b/namespace_flat_buffers.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
diff --git a/navtree.js b/navtree.js
index 00e152cd..91194e64 100644
--- a/navtree.js
+++ b/navtree.js
@@ -14,18 +14,22 @@ var NAVTREE =
       [ "Use in JavaScript", "flatbuffers_guide_use_javascript.html", null ],
       [ "Use in PHP", "flatbuffers_guide_use_php.html", null ],
       [ "Use in Python", "flatbuffers_guide_use_python.html", null ],
-      [ "Schema-less version", "flexbuffers.html", null ]
+      [ "Schema-less version", "flexbuffers.html", null ],
+      [ "gRPC", "usergroup1.html", [
+        [ "Use in C++", "flatbuffers_grpc_guide_use_cpp.html", null ]
+      ] ]
     ] ],
     [ "Platform / Language / Feature support", "flatbuffers_support.html", null ],
     [ "Benchmarks", "flatbuffers_benchmarks.html", null ],
     [ "FlatBuffers white paper", "flatbuffers_white_paper.html", null ],
     [ "FlatBuffers internals", "flatbuffers_internals.html", null ],
     [ "Grammar of the schema language", "flatbuffers_grammar.html", null ],
-    [ "API Reference", "usergroup1.html", [
+    [ "API Reference", "usergroup2.html", [
       [ "APIs", "modules.html", "modules" ],
       [ "Class List", null, [
         [ "Class List", "annotated.html", "annotated" ],
         [ "Class Index", "classes.html", null ],
+        [ "Class Hierarchy", "hierarchy.html", "hierarchy" ],
         [ "Class Members", "functions.html", [
           [ "All", "functions.html", null ],
           [ "Functions", "functions_func.html", null ],
@@ -40,7 +44,8 @@ var NAVTREE =
 
 var NAVTREEINDEX =
 [
-".html"
+".html",
+"group__flatbuffers__javascript__api.html#ga8c5bb4a00c46fb6665787fa9ff52089b"
 ];
 
 var SYNCONMSG = 'click to disable panel synchronisation';
diff --git a/navtreeindex0.js b/navtreeindex0.js
index 6c7825ec..763f18f0 100644
--- a/navtreeindex0.js
+++ b/navtreeindex0.js
@@ -2,10 +2,10 @@ var NAVTREEINDEX0 =
 {
 ".html":[7,1,0,0],
 ".html":[7,1,0,0,0],
-".html":[7,1,0,0,0,0],
-".html":[7,1,0,1],
 ".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],
 "class_flat_buffers_1_1_flat_buffer_builder.html#a0b2addc87bde29213424a187b7b08707":[7,1,0,2,0,8],
@@ -76,51 +76,147 @@ var NAVTREEINDEX0 =
 "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],
 "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],
+"classflatbuffers_1_1_allocator.html#ab72efb51f31b9238373f5922ac282a89":[7,1,0,1,0,2],
+"classflatbuffers_1_1_allocator.html#ae94248cd85a8abf1aa5c0cc957d1cb69":[7,1,0,1,0,3],
+"classflatbuffers_1_1_allocator.html#afbce153366f4087f2876384ecc9d0674":[7,1,0,1,0,1],
+"classflatbuffers_1_1_default_allocator.html":[7,1,0,1,1],
+"classflatbuffers_1_1_default_allocator.html#a57604c8749237a162bb22fcea09482ef":[7,1,0,1,1,2],
+"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#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#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#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#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#aebfcd21e5ce5a906684d573e59503556":[7,1,0,1,2,2],
+"classflatbuffers_1_1_detached_buffer.html#aef5440a10f42f2c067f2857dc74fc15b":[7,1,0,1,2,6],
 "classflatbuffers_1_1_flat_buffer_builder.html":[7,0,0,0],
-"classflatbuffers_1_1_flat_buffer_builder.html#a01dabf5cdd6b1b2881337e1e84aa1683":[7,0,0,0,1],
-"classflatbuffers_1_1_flat_buffer_builder.html#a0c9e507b373d598b51052fab4fa34912":[7,0,0,0,32],
-"classflatbuffers_1_1_flat_buffer_builder.html#a1080c9e370e2d9d9d872dadd1131436b":[7,0,0,0,18],
-"classflatbuffers_1_1_flat_buffer_builder.html#a10e8ec7d1c8fbdc21b1c7047bbbe38d9":[7,0,0,0,5],
-"classflatbuffers_1_1_flat_buffer_builder.html#a11c291ccd2159604c149600ee6180b95":[7,0,0,0,20],
-"classflatbuffers_1_1_flat_buffer_builder.html#a16a8fd46b34ad7727406c37b65b6b27a":[7,0,0,0,34],
-"classflatbuffers_1_1_flat_buffer_builder.html#a2130ef232ff405eebe2e7f184ecd06e6":[7,0,0,0,25],
-"classflatbuffers_1_1_flat_buffer_builder.html#a21c7f933d7ff1212f2090763ef9f0c44":[7,0,0,0,39],
-"classflatbuffers_1_1_flat_buffer_builder.html#a2305b63d367845972b51669dd995cc50":[7,0,0,0,14],
-"classflatbuffers_1_1_flat_buffer_builder.html#a23aa4c910e053446cc404bc486012e54":[7,0,0,0,21],
-"classflatbuffers_1_1_flat_buffer_builder.html#a274b1afcfa16bab2c884129b2788db19":[7,0,0,0,17],
-"classflatbuffers_1_1_flat_buffer_builder.html#a2cca5c89246a53e80e6ad9487f4c36f3":[7,0,0,0,15],
-"classflatbuffers_1_1_flat_buffer_builder.html#a3d57074082aaab8cdeb8474ff9df0b53":[7,0,0,0,19],
-"classflatbuffers_1_1_flat_buffer_builder.html#a3eb68613e5883dc4b8fff6cf7d1223d7":[7,0,0,0,4],
-"classflatbuffers_1_1_flat_buffer_builder.html#a3f4252e9bc005ba6c700469544fdccc9":[7,0,0,0,37],
-"classflatbuffers_1_1_flat_buffer_builder.html#a43f51ba9c8f4f24ea2247a3979d095b8":[7,0,0,0,12],
-"classflatbuffers_1_1_flat_buffer_builder.html#a592110519a6c8db1926f1365bf2a58e6":[7,0,0,0,27],
-"classflatbuffers_1_1_flat_buffer_builder.html#a6e90ada59d9553636f72ce8e4a892f72":[7,0,0,0,29],
-"classflatbuffers_1_1_flat_buffer_builder.html#a799701af34c398d8eb86e049b73bcecf":[7,0,0,0,22],
-"classflatbuffers_1_1_flat_buffer_builder.html#a7ba8462e408431054c99d25120326220":[7,0,0,0,33],
-"classflatbuffers_1_1_flat_buffer_builder.html#a7cc10b709dfa3e72083843d1a5e36c15":[7,0,0,0,23],
-"classflatbuffers_1_1_flat_buffer_builder.html#a840b769fbb4148f97d3eed266e4690c3":[7,0,0,0,6],
-"classflatbuffers_1_1_flat_buffer_builder.html#a8704709a2e25ad04679212ee4126b1a1":[7,0,0,0,30],
-"classflatbuffers_1_1_flat_buffer_builder.html#a8c3af55e64f5cda9aefa38ac5287ef9f":[7,0,0,0,9],
-"classflatbuffers_1_1_flat_buffer_builder.html#a8dc35f792179df4ca850492c1796d8b8":[7,0,0,0,36],
-"classflatbuffers_1_1_flat_buffer_builder.html#aa1ebce1f3f46832946a95952af1e9c2b":[7,0,0,0,35],
-"classflatbuffers_1_1_flat_buffer_builder.html#aa905b29dce19a1795c7bce375cf29961":[7,0,0,0,31],
-"classflatbuffers_1_1_flat_buffer_builder.html#aad93d113ac24e86ed04b5236b3f4c0c5":[7,0,0,0,8],
-"classflatbuffers_1_1_flat_buffer_builder.html#ab1f44cc1b130e13b41e9a80de76e25cf":[7,0,0,0,24],
-"classflatbuffers_1_1_flat_buffer_builder.html#ab478a645216d2d613fc7b7c29b0ff9d1":[7,0,0,0,3],
-"classflatbuffers_1_1_flat_buffer_builder.html#ab77d800e77fa76bc758a6c399fd37685":[7,0,0,0,11],
-"classflatbuffers_1_1_flat_buffer_builder.html#ac0b6a1c5d949f20ad84367fc0f9e1506":[7,0,0,0,10],
-"classflatbuffers_1_1_flat_buffer_builder.html#ac1bfd609f7f736e9a37cedae77448b63":[7,0,0,0,38],
-"classflatbuffers_1_1_flat_buffer_builder.html#ac2b96292fa0fb1534fe7fd218a094d0c":[7,0,0,0,13],
-"classflatbuffers_1_1_flat_buffer_builder.html#ac64d11c219559ea51567eab556e13135":[7,0,0,0,26],
-"classflatbuffers_1_1_flat_buffer_builder.html#ac72b54a75e0c329e0ce0b8fab758e256":[7,0,0,0,0],
-"classflatbuffers_1_1_flat_buffer_builder.html#ae94b94ba71ea0aeb2d9a98c43b713412":[7,0,0,0,2],
-"classflatbuffers_1_1_flat_buffer_builder.html#aec6f9df2a0366b540b24822414d92cbe":[7,0,0,0,7],
-"classflatbuffers_1_1_flat_buffer_builder.html#af715dd24dd37cb0151dc7a980ad0f207":[7,0,0,0,16],
-"classflatbuffers_1_1_flat_buffer_builder.html#af8c7583c92e1d1d6f438977da5158d19":[7,0,0,0,40],
-"classflatbuffers_1_1_flat_buffer_builder.html#afede51fd9c32d146cbb1832f57c5e1b7":[7,0,0,0,28],
+"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#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#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#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#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#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#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#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#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#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#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#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#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#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#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_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],
+"classflatbuffers_1_1_vector.html#a0eeca1798d12e29e1003e6f831668986":[7,1,0,1,9,1],
+"classflatbuffers_1_1_vector.html#a248da154992320d3ebf75cba205628eb":[7,1,0,1,9,6],
+"classflatbuffers_1_1_vector.html#a28dab085738663f5c866cf6570bb6289":[7,1,0,1,9,3],
+"classflatbuffers_1_1_vector.html#a29803cd584a620bf076a69b6e97ecf5c":[7,1,0,1,9,22],
+"classflatbuffers_1_1_vector.html#a39668795e4e5462568cf985291a27f21":[7,1,0,1,9,18],
+"classflatbuffers_1_1_vector.html#a3a78e000a9301e5310adc014c36137cd":[7,1,0,1,9,7],
+"classflatbuffers_1_1_vector.html#a3aa5f37912192c5adf734ed24145174d":[7,1,0,1,9,24],
+"classflatbuffers_1_1_vector.html#a4155ce66380a2cb863e005164ce8ec33":[7,1,0,1,9,14],
+"classflatbuffers_1_1_vector.html#a417d1d01e6d7580042aa6bd5eb35fadd":[7,1,0,1,9,9],
+"classflatbuffers_1_1_vector.html#a4aab53d31e0f3048fceeee9658efdf41":[7,1,0,1,9,16],
+"classflatbuffers_1_1_vector.html#a53e9c0cb1d27e4bd355034dbd43f0127":[7,1,0,1,9,11],
+"classflatbuffers_1_1_vector.html#a62170e531ab5fcef8b4c717c0e84553d":[7,1,0,1,9,25],
+"classflatbuffers_1_1_vector.html#a66212ee5146550ed418a358a8b756dc6":[7,1,0,1,9,0],
+"classflatbuffers_1_1_vector.html#a7703f4b1cbb1f99087b48cd58abb740e":[7,1,0,1,9,2],
+"classflatbuffers_1_1_vector.html#a7f62ee2a80431226cf14dd7348613f35":[7,1,0,1,9,23],
+"classflatbuffers_1_1_vector.html#a8342962f2f9d5e872c90abdeaea8d24e":[7,1,0,1,9,21],
+"classflatbuffers_1_1_vector.html#a874b185e7dec18bb24b1f0ee42afb7cb":[7,1,0,1,9,10],
+"classflatbuffers_1_1_vector.html#a88a9fb17715f2845e3aebd4193007d61":[7,1,0,1,9,20],
+"classflatbuffers_1_1_vector.html#a92d04847cc257e3ec9c75b7514988f13":[7,1,0,1,9,15],
+"classflatbuffers_1_1_vector.html#aa2372140c6a4331774fe15dff81d1d7b":[7,1,0,1,9,19],
+"classflatbuffers_1_1_vector.html#ab0a55bc4f498fbbd81efc47f3435be97":[7,1,0,1,9,17],
+"classflatbuffers_1_1_vector.html#ab51b30f24f9841203b4364af38d424b8":[7,1,0,1,9,4],
+"classflatbuffers_1_1_vector.html#ac1ab40cdffad6cd50c222fe42c51437b":[7,1,0,1,9,5],
+"classflatbuffers_1_1_vector.html#afb74addfd0fd7ae205c02ebf33d25ea2":[7,1,0,1,9,12],
+"classflatbuffers_1_1_vector_of_any.html":[7,1,0,1,12],
+"classflatbuffers_1_1_vector_of_any.html#a4ddb1c5d56cf35be5705a63c97b780ed":[7,1,0,1,12,2],
+"classflatbuffers_1_1_vector_of_any.html#a6fb11905e2ac4ad77193151bbe47030a":[7,1,0,1,12,0],
+"classflatbuffers_1_1_vector_of_any.html#ab299b866b29e7010b4b0572daa38c95f":[7,1,0,1,12,4],
+"classflatbuffers_1_1_vector_of_any.html#ae7445c6c623cf74d9b77b11cd87bdf4e":[7,1,0,1,12,3],
+"classflatbuffers_1_1_vector_of_any.html#af84f1a5138506c8835ff1ef1b5194767":[7,1,0,1,12,1],
+"classflatbuffers_1_1vector__downward.html":[7,1,0,1,10],
+"classflatbuffers_1_1vector__downward.html#a00f9fca894e2a2963ae0867ff443d0c2":[7,1,0,1,10,10],
+"classflatbuffers_1_1vector__downward.html#a23cd3d0692fe86eacc6324ea4b58a599":[7,1,0,1,10,12],
+"classflatbuffers_1_1vector__downward.html#a23d309dc71c82cc13d1edefff0e7dd8f":[7,1,0,1,10,14],
+"classflatbuffers_1_1vector__downward.html#a30d500190ca6fe63296b751b37004945":[7,1,0,1,10,2],
+"classflatbuffers_1_1vector__downward.html#a403cfdb1088a2f95ca5a4899dd45e313":[7,1,0,1,10,5],
+"classflatbuffers_1_1vector__downward.html#a4a0686bb0afe2feefec0502f527a11bf":[7,1,0,1,10,11],
+"classflatbuffers_1_1vector__downward.html#a4a5203e2960492f54ac4428d4caee0fc":[7,1,0,1,10,16],
+"classflatbuffers_1_1vector__downward.html#a551fe42b05fef8fc3f6dc6b955c6196b":[7,1,0,1,10,17],
+"classflatbuffers_1_1vector__downward.html#a5edea7ae27f81a770547ec1aada6a666":[7,1,0,1,10,3],
+"classflatbuffers_1_1vector__downward.html#a692f950a105db47f983ff80d4e5c3772":[7,1,0,1,10,7],
+"classflatbuffers_1_1vector__downward.html#a8cfd1b66f93043acb9905519e9998ced":[7,1,0,1,10,13],
+"classflatbuffers_1_1vector__downward.html#a909d38da327dbe36825d059cff0c96e4":[7,1,0,1,10,0],
+"classflatbuffers_1_1vector__downward.html#a99e13c5b83569b07df357c76feb1e614":[7,1,0,1,10,8],
+"classflatbuffers_1_1vector__downward.html#abc8846756ed814d1722913105e0da7a3":[7,1,0,1,10,9],
+"classflatbuffers_1_1vector__downward.html#ac2983200e66457e256301e5bb6ffa2a8":[7,1,0,1,10,6],
+"classflatbuffers_1_1vector__downward.html#ad99943ac8c66263f3587e18539e9f176":[7,1,0,1,10,1],
+"classflatbuffers_1_1vector__downward.html#ae701e8e1cc468d1a3141e0fa22dc3a70":[7,1,0,1,10,4],
+"classflatbuffers_1_1vector__downward.html#aefa75049c70c00591f7786aeb9def1fe":[7,1,0,1,10,15],
 "contributing.html":[8],
 "flatbuffers_benchmarks.html":[3],
 "flatbuffers_grammar.html":[6],
+"flatbuffers_grpc_guide_use_cpp.html":[1,12,0],
 "flatbuffers_guide_building.html":[1,0],
 "flatbuffers_guide_tutorial.html":[1,1],
 "flatbuffers_guide_use_c.html":[1,5],
@@ -136,10 +232,10 @@ var NAVTREEINDEX0 =
 "flatbuffers_support.html":[2],
 "flatbuffers_white_paper.html":[4],
 "flexbuffers.html":[1,11],
-"functions.html":[7,1,2,0],
-"functions_func.html":[7,1,2,1],
-"functions_prop.html":[7,1,2,3],
-"functions_vars.html":[7,1,2,2],
+"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],
@@ -153,19 +249,5 @@ var NAVTREEINDEX0 =
 "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],
-"group__flatbuffers__javascript__api.html#gaba2edd0e1e53d1c2815bb1a6ee54abf5":[7,0,4,3],
-"group__flatbuffers__javascript__api.html#gabd00b65bbe9e9fbac55fe4982eb6cec8":[7,0,4,8],
-"group__flatbuffers__php__api.html":[7,0,5],
-"group__flatbuffers__python__api.html":[7,0,6],
-"index.html":[],
-"index.html#flatbuffers_overview":[0],
-"modules.html":[7,0],
-"namespace_flat_buffers.html":[7,1,0,2],
-"pages.html":[],
-"usergroup0.html":[1],
-"usergroup1.html":[7]
+"group__flatbuffers__javascript__api.html#ga8260b8431cb8b1c32b5997646cb102a9":[7,0,4,2]
 };
diff --git a/navtreeindex1.js b/navtreeindex1.js
new file mode 100644
index 00000000..5bf346a4
--- /dev/null
+++ b/navtreeindex1.js
@@ -0,0 +1,75 @@
+var NAVTREEINDEX1 =
+{
+"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],
+"group__flatbuffers__javascript__api.html#gaba2edd0e1e53d1c2815bb1a6ee54abf5":[7,0,4,3],
+"group__flatbuffers__javascript__api.html#gabd00b65bbe9e9fbac55fe4982eb6cec8":[7,0,4,8],
+"group__flatbuffers__php__api.html":[7,0,5],
+"group__flatbuffers__python__api.html":[7,0,6],
+"hierarchy.html":[7,1,2],
+"index.html":[],
+"index.html#flatbuffers_overview":[0],
+"modules.html":[7,0],
+"namespace_flat_buffers.html":[7,1,0,2],
+"pages.html":[],
+"structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html":[7,0,0,0,0],
+"structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html#a7b6ea8220d21e6fb72ee5ba0258e01c4":[7,0,0,0,0,1],
+"structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html#ad46ccd8333f92b41f4e0999554574dde":[7,0,0,0,0,0],
+"structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html":[7,0,0,0,1],
+"structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html#a014debbfd9bde2a99f960a2123e54d33":[7,0,0,0,1,0],
+"structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html#a615f77ed71ea836aa9dc42d0b8722389":[7,0,0,0,1,1],
+"structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html#ada9a5bf2a061d414f73b1c176168877b":[7,0,0,0,1,2],
+"structflatbuffers_1_1_indirect_helper.html":[7,1,0,1,4],
+"structflatbuffers_1_1_indirect_helper.html#a1361c89f203e090c49ece38ad98b9f3a":[7,1,0,1,4,3],
+"structflatbuffers_1_1_indirect_helper.html#a22f780c354a407364894991bfbdf84f6":[7,1,0,1,4,0],
+"structflatbuffers_1_1_indirect_helper.html#af257f8e8aacb6ff0d5dcfc8dd053f3c4":[7,1,0,1,4,1],
+"structflatbuffers_1_1_indirect_helper.html#af64c70657c1e44cb522c2fd02ec26f7d":[7,1,0,1,4,2],
+"structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html":[7,1,0,1,6],
+"structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html#a1d9e2e9f072cb81e208b8c915312b13f":[7,1,0,1,6,2],
+"structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html#a3ce92eecc47213b4d808785a38add468":[7,1,0,1,6,1],
+"structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html#a52133230f5d057783065fc09d5f00897":[7,1,0,1,6,3],
+"structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html#a5991f7a862ffc1225bded0902901ca23":[7,1,0,1,6,0],
+"structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html":[7,1,0,1,5],
+"structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html#a7f2c3b157027d28bcbfb620791029fe6":[7,1,0,1,5,1],
+"structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html#a863380eaf59f7dd4df758d560613627b":[7,1,0,1,5,3],
+"structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html#ab5e80d3e49909bc37c1d0f11b7fe9200":[7,1,0,1,5,0],
+"structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html#af05256f82faaed8f706105194245aec5":[7,1,0,1,5,2],
+"structflatbuffers_1_1_offset.html":[7,1,0,1,7],
+"structflatbuffers_1_1_offset.html#a1e7e8a81eae90ce9ac45da57268331fc":[7,1,0,1,7,2],
+"structflatbuffers_1_1_offset.html#a67d328892dd0d940950e8128d6bf795b":[7,1,0,1,7,1],
+"structflatbuffers_1_1_offset.html#a69571197b0da57e6484ef8191ac205a7":[7,1,0,1,7,4],
+"structflatbuffers_1_1_offset.html#a7f8a5b6f29f1edbaad7ed5a850f9f0f7":[7,1,0,1,7,0],
+"structflatbuffers_1_1_offset.html#aef6b640637a58c4a1715346977cd892f":[7,1,0,1,7,3],
+"structflatbuffers_1_1_string.html":[7,1,0,1,8],
+"structflatbuffers_1_1_string.html#a4690a7167b39c091f03320e17e751c88":[7,1,0,1,8,2],
+"structflatbuffers_1_1_string.html#a533b1aa0d76e4afa7b3b02992621ff6a":[7,1,0,1,8,1],
+"structflatbuffers_1_1_string.html#a859788ba800f24c7c99310c38eb7e195":[7,1,0,1,8,0],
+"structflatbuffers_1_1_vector_iterator.html":[7,1,0,1,11],
+"structflatbuffers_1_1_vector_iterator.html#a105a4e408b45c324f2ad445f5145bf51":[7,1,0,1,11,16],
+"structflatbuffers_1_1_vector_iterator.html#a368b4ee9b89ab783045f96a2f69dec67":[7,1,0,1,11,12],
+"structflatbuffers_1_1_vector_iterator.html#a415a449a3d8a04271260ecb380c3fa49":[7,1,0,1,11,5],
+"structflatbuffers_1_1_vector_iterator.html#a428a3df67f852563e25a040e41f3aef9":[7,1,0,1,11,11],
+"structflatbuffers_1_1_vector_iterator.html#a4b0747db5a2080cf4bd8bdbdeb1ceda2":[7,1,0,1,11,20],
+"structflatbuffers_1_1_vector_iterator.html#a5d2754d1859696e7a6d43e74d4f9ae29":[7,1,0,1,11,14],
+"structflatbuffers_1_1_vector_iterator.html#a5fae31cf992a81412140a17dde196890":[7,1,0,1,11,10],
+"structflatbuffers_1_1_vector_iterator.html#a67b44f6c5e62b325e8cb4b91c99f60be":[7,1,0,1,11,0],
+"structflatbuffers_1_1_vector_iterator.html#a74d61458dfc1c25d94f80cae8cebaa2a":[7,1,0,1,11,2],
+"structflatbuffers_1_1_vector_iterator.html#a7d2af5bdf25869708ae89ee598f11346":[7,1,0,1,11,8],
+"structflatbuffers_1_1_vector_iterator.html#a7da0129573fc128410b7f0d5f2994301":[7,1,0,1,11,19],
+"structflatbuffers_1_1_vector_iterator.html#a7e10ae7b14f5f79bf0da6bbed7c17b5d":[7,1,0,1,11,6],
+"structflatbuffers_1_1_vector_iterator.html#aa0bc0de48d01ab1ca7bfb73924192451":[7,1,0,1,11,9],
+"structflatbuffers_1_1_vector_iterator.html#aa489e5381af5c940b0fb8e7f54aef1f4":[7,1,0,1,11,7],
+"structflatbuffers_1_1_vector_iterator.html#aa7bd6c57906c8263d184750296d4d4b4":[7,1,0,1,11,13],
+"structflatbuffers_1_1_vector_iterator.html#aaf71b80a66b9d7f5220e1cd4d2b27b3c":[7,1,0,1,11,21],
+"structflatbuffers_1_1_vector_iterator.html#aaf980961b89f2b647a07135246b75088":[7,1,0,1,11,4],
+"structflatbuffers_1_1_vector_iterator.html#ac9e9c7cb6d2cc0a69c22b954bb73dc42":[7,1,0,1,11,1],
+"structflatbuffers_1_1_vector_iterator.html#acb8ab7ba9e8ce289a1c8234e872c708b":[7,1,0,1,11,3],
+"structflatbuffers_1_1_vector_iterator.html#ae33269dea219a9a690f00c23d67c0208":[7,1,0,1,11,15],
+"structflatbuffers_1_1_vector_iterator.html#af0e098e805b8a387a108e0d156145329":[7,1,0,1,11,18],
+"structflatbuffers_1_1_vector_iterator.html#af17653cb8a120a9bbd35dcb35a570729":[7,1,0,1,11,17],
+"structflatbuffers_1_1_vector_iterator.html#af7d486593808b4d955cb5f8d424d18ee":[7,1,0,1,11,22],
+"usergroup0.html":[1],
+"usergroup1.html":[1,12],
+"usergroup2.html":[7]
+};
diff --git a/search/all_10.js b/search/all_10.js
index b69ed3b5..54de4eed 100644
--- a/search/all_10.js
+++ b/search/all_10.js
@@ -1,11 +1,4 @@
 var searchData=
 [
-  ['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,'']]]
+  ['tutorial',['Tutorial',['../flatbuffers_guide_tutorial.html',1,'']]]
 ];
diff --git a/search/all_11.js b/search/all_11.js
index a86f934a..9c226508 100644
--- a/search/all_11.js
+++ b/search/all_11.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_12.html b/search/all_12.html
new file mode 100644
index 00000000..ea2030d3
--- /dev/null
+++ b/search/all_12.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_12.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_12.js b/search/all_12.js
new file mode 100644
index 00000000..dc590db5
--- /dev/null
+++ b/search/all_12.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_13.html b/search/all_13.html
new file mode 100644
index 00000000..8e206b22
--- /dev/null
+++ b/search/all_13.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_13.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_13.js b/search/all_13.js
new file mode 100644
index 00000000..a86f934a
--- /dev/null
+++ b/search/all_13.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 5c572d21..6a9f0a55 100644
--- a/search/all_2.js
+++ b/search/all_2.js
@@ -4,20 +4,21 @@ var searchData=
   ['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',['../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()']]],
+  ['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()']]],
   ['addfloat32',['addFloat32',['../group__flatbuffers__javascript__api.html#ga1c36e9d7e294c61d1d6ab0923ea91e8e',1,'flatbuffers.js']]],
   ['addfloat64',['addFloat64',['../group__flatbuffers__javascript__api.html#ga53af3baf50f96de783c06a35934d63bf',1,'flatbuffers.js']]],
-  ['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()']]],
+  ['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()']]],
   ['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',['../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()']]],
+  ['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']]],
   ['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',['../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()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a93b38c262a248e625ea3719dddf903eb',1,'FlatBuffers.FlatBufferBuilder.AddShort()']]],
+  ['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()']]],
   ['addulong',['addUlong',['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a01be3a805c221796997b023b64e90826',1,'Google\FlatBuffers\FlatbufferBuilder\addUlong()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#aa9cc4371456b85d6393958ab56cbc515',1,'FlatBuffers.FlatBufferBuilder.AddUlong()']]],
   ['addushort',['addUshort',['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a570a0024a8a54e2f73374c94b8fa6c42',1,'Google\FlatBuffers\FlatbufferBuilder\addUshort()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a52c19b3daa97b0272da0dd7121b2ff5f',1,'FlatBuffers.FlatBufferBuilder.AddUshort()']]],
+  ['allocator',['Allocator',['../classflatbuffers_1_1_allocator.html',1,'flatbuffers']]],
   ['asuint8array',['asUint8Array',['../group__flatbuffers__javascript__api.html#ga997af48d5c8f757fcb962168d67e33fb',1,'flatbuffers.js']]]
 ];
diff --git a/search/all_5.js b/search/all_5.js
index d4ec2b75..cae41e26 100644
--- a/search/all_5.js
+++ b/search/all_5.js
@@ -1,5 +1,7 @@
 var searchData=
 [
-  ['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']]]
+  ['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']]],
+  ['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 ef0e1981..73f89110 100644
--- a/search/all_7.js
+++ b/search/all_7.js
@@ -1,19 +1,19 @@
 var searchData=
 [
-  ['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']]],
+  ['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']]],
   ['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',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']]],
-  ['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#ac72b54a75e0c329e0ce0b8fab758e256',1,'flatbuffers::FlatBufferBuilder::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_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,'']]],
   ['flatbuffers',['FlatBuffers',['../namespace_flat_buffers.html',1,'']]],
-  ['flatbuffers_2eh',['flatbuffers.h',['../flatbuffers_8h.html',1,'']]],
   ['flatbuffers_2ejs',['flatbuffers.js',['../flatbuffers_8js.html',1,'']]],
   ['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',['../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']]]
+  ['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']]]
 ];
diff --git a/search/all_9.js b/search/all_9.js
index c2ce9df3..e58b64d4 100644
--- a/search/all_9.js
+++ b/search/all_9.js
@@ -1,4 +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']]],
   ['init',['init',['../classcom_1_1google_1_1flatbuffers_1_1_flat_buffer_builder.html#a0757a4347e9b932f9c0607f79531b023',1,'com::google::flatbuffers::FlatBufferBuilder']]]
 ];
diff --git a/search/all_c.js b/search/all_c.js
index 03943ece..f24dbe61 100644
--- a/search/all_c.js
+++ b/search/all_c.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,'']]]
+  ['offset',['Offset',['../structflatbuffers_1_1_offset.html',1,'flatbuffers']]]
 ];
diff --git a/search/all_d.js b/search/all_d.js
index be0b943a..03943ece 100644
--- a/search/all_d.js
+++ b/search/all_d.js
@@ -1,4 +1,6 @@
 var searchData=
 [
-  ['releasebufferpointer',['ReleaseBufferPointer',['../classflatbuffers_1_1_flat_buffer_builder.html#a21c7f933d7ff1212f2090763ef9f0c44',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,'']]]
 ];
diff --git a/search/all_e.js b/search/all_e.js
index bc99f301..17fea3b1 100644
--- a/search/all_e.js
+++ b/search/all_e.js
@@ -1,4 +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()']]]
+  ['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_f.js b/search/all_f.js
index 54de4eed..ba698f48 100644
--- a/search/all_f.js
+++ b/search/all_f.js
@@ -1,4 +1,6 @@
 var searchData=
 [
-  ['tutorial',['Tutorial',['../flatbuffers_guide_tutorial.html',1,'']]]
+  ['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']]]
 ];
diff --git a/search/classes_0.js b/search/classes_0.js
index a9d92103..75817eb6 100644
--- a/search/classes_0.js
+++ b/search/classes_0.js
@@ -1,6 +1,4 @@
 var searchData=
 [
-  ['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']]]
+  ['allocator',['Allocator',['../classflatbuffers_1_1_allocator.html',1,'flatbuffers']]]
 ];
diff --git a/search/classes_1.html b/search/classes_1.html
new file mode 100644
index 00000000..b04aca35
--- /dev/null
+++ b/search/classes_1.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_1.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_1.js b/search/classes_1.js
new file mode 100644
index 00000000..04f77293
--- /dev/null
+++ b/search/classes_1.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['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_2.html b/search/classes_2.html
new file mode 100644
index 00000000..ef9c9ed6
--- /dev/null
+++ b/search/classes_2.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_2.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_2.js b/search/classes_2.js
new file mode 100644
index 00000000..1905f43c
--- /dev/null
+++ b/search/classes_2.js
@@ -0,0 +1,7 @@
+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']]]
+];
diff --git a/search/classes_3.html b/search/classes_3.html
new file mode 100644
index 00000000..2e68df4d
--- /dev/null
+++ b/search/classes_3.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_3.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_3.js b/search/classes_3.js
new file mode 100644
index 00000000..60e38c77
--- /dev/null
+++ b/search/classes_3.js
@@ -0,0 +1,6 @@
+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']]]
+];
diff --git a/search/classes_4.html b/search/classes_4.html
new file mode 100644
index 00000000..ed1f8fc1
--- /dev/null
+++ b/search/classes_4.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_4.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_4.js b/search/classes_4.js
new file mode 100644
index 00000000..f24dbe61
--- /dev/null
+++ b/search/classes_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['offset',['Offset',['../structflatbuffers_1_1_offset.html',1,'flatbuffers']]]
+];
diff --git a/search/classes_5.html b/search/classes_5.html
new file mode 100644
index 00000000..8b095fc8
--- /dev/null
+++ b/search/classes_5.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_5.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_5.js b/search/classes_5.js
new file mode 100644
index 00000000..c1a6a9ad
--- /dev/null
+++ b/search/classes_5.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_6.html b/search/classes_6.html
new file mode 100644
index 00000000..5a649067
--- /dev/null
+++ b/search/classes_6.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_6.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_6.js b/search/classes_6.js
new file mode 100644
index 00000000..dc590db5
--- /dev/null
+++ b/search/classes_6.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/files_0.js b/search/files_0.js
index 42664683..eccec343 100644
--- a/search/files_0.js
+++ b/search/files_0.js
@@ -3,6 +3,5 @@ var searchData=
   ['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,'']]],
-  ['flatbuffers_2eh',['flatbuffers.h',['../flatbuffers_8h.html',1,'']]],
   ['flatbuffers_2ejs',['flatbuffers.js',['../flatbuffers_8js.html',1,'']]]
 ];
diff --git a/search/functions_1.js b/search/functions_1.js
index 7e2744cf..47cc58b4 100644
--- a/search/functions_1.js
+++ b/search/functions_1.js
@@ -4,12 +4,12 @@ var searchData=
   ['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',['../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()']]],
+  ['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()']]],
   ['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',['../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()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a93b38c262a248e625ea3719dddf903eb',1,'FlatBuffers.FlatBufferBuilder.AddShort()']]],
+  ['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()']]],
   ['addulong',['addUlong',['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a01be3a805c221796997b023b64e90826',1,'Google\FlatBuffers\FlatbufferBuilder\addUlong()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#aa9cc4371456b85d6393958ab56cbc515',1,'FlatBuffers.FlatBufferBuilder.AddUlong()']]],
   ['addushort',['addUshort',['../class_google_1_1_flat_buffers_1_1_flatbuffer_builder.html#a570a0024a8a54e2f73374c94b8fa6c42',1,'Google\FlatBuffers\FlatbufferBuilder\addUshort()'],['../class_flat_buffers_1_1_flat_buffer_builder.html#a52c19b3daa97b0272da0dd7121b2ff5f',1,'FlatBuffers.FlatBufferBuilder.AddUshort()']]]
diff --git a/search/functions_5.js b/search/functions_5.js
index 415a673c..d3f40e32 100644
--- a/search/functions_5.js
+++ b/search/functions_5.js
@@ -1,7 +1,7 @@
 var searchData=
 [
-  ['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()']]],
+  ['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()']]],
   ['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#ac72b54a75e0c329e0ce0b8fab758e256',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()']]]
+  ['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()']]]
 ];
diff --git a/search/functions_8.js b/search/functions_8.js
index be0b943a..17fea3b1 100644
--- a/search/functions_8.js
+++ b/search/functions_8.js
@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['releasebufferpointer',['ReleaseBufferPointer',['../classflatbuffers_1_1_flat_buffer_builder.html#a21c7f933d7ff1212f2090763ef9f0c44',1,'flatbuffers::FlatBufferBuilder']]]
+  ['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_9.js b/search/functions_9.js
index bc99f301..b77a213f 100644
--- a/search/functions_9.js
+++ b/search/functions_9.js
@@ -1,4 +1,4 @@
 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()']]]
+  ['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()']]]
 ];
diff --git a/search/pages_6.js b/search/pages_6.js
index b69ed3b5..9c226508 100644
--- a/search/pages_6.js
+++ b/search/pages_6.js
@@ -1,5 +1,6 @@
 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,'']]],
diff --git a/search/search.js b/search/search.js
index 61787f35..a057140c 100644
--- a/search/search.js
+++ b/search/search.js
@@ -7,8 +7,8 @@
 
 var indexSectionsWithContent =
 {
-  0: "$_abcdefgijkprstuw",
-  1: "f",
+  0: "$_abcdefgijkoprstuvw",
+  1: "adfiosv",
   2: "f",
   3: "f",
   4: "_acdefgirs",
diff --git a/structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc-members.html b/structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc-members.html
new file mode 100644
index 00000000..2c505271
--- /dev/null
+++ b/structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc-members.html
@@ -0,0 +1,147 @@
+<!-- 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('structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.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">flatbuffers::FlatBufferBuilder::FieldLoc Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html">flatbuffers::FlatBufferBuilder::FieldLoc</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>id</b> (defined in <a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html">flatbuffers::FlatBufferBuilder::FieldLoc</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html">flatbuffers::FlatBufferBuilder::FieldLoc</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>off</b> (defined in <a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html">flatbuffers::FlatBufferBuilder::FieldLoc</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html">flatbuffers::FlatBufferBuilder::FieldLoc</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/structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html b/structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html
new file mode 100644
index 00000000..3f0d75dc
--- /dev/null
+++ b/structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html
@@ -0,0 +1,158 @@
+<!-- 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: flatbuffers::FlatBufferBuilder::FieldLoc Struct 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('structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.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-attribs">Public Attributes</a> &#124;
+<a href="structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">flatbuffers::FlatBufferBuilder::FieldLoc Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:ad46ccd8333f92b41f4e0999554574dde"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad46ccd8333f92b41f4e0999554574dde"></a>
+voffset_t&#160;</td><td class="memItemRight" valign="bottom"><b>id</b></td></tr>
+<tr class="separator:ad46ccd8333f92b41f4e0999554574dde"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7b6ea8220d21e6fb72ee5ba0258e01c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b6ea8220d21e6fb72ee5ba0258e01c4"></a>
+uoffset_t&#160;</td><td class="memItemRight" valign="bottom"><b>off</b></td></tr>
+<tr class="separator:a7b6ea8220d21e6fb72ee5ba0258e01c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="flatbuffers_8h_source.html">flatbuffers.h</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/structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.js b/structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.js
new file mode 100644
index 00000000..39ebddad
--- /dev/null
+++ b/structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.js
@@ -0,0 +1,5 @@
+var structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc =
+[
+    [ "id", "structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html#ad46ccd8333f92b41f4e0999554574dde", null ],
+    [ "off", "structflatbuffers_1_1_flat_buffer_builder_1_1_field_loc.html#a7b6ea8220d21e6fb72ee5ba0258e01c4", null ]
+];
\ No newline at end of file
diff --git a/structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare-members.html b/structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare-members.html
new file mode 100644
index 00000000..e67f5af6
--- /dev/null
+++ b/structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare-members.html
@@ -0,0 +1,148 @@
+<!-- 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('structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.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">flatbuffers::FlatBufferBuilder::StringOffsetCompare Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">flatbuffers::FlatBufferBuilder::StringOffsetCompare</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>buf_</b> (defined in <a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">flatbuffers::FlatBufferBuilder::StringOffsetCompare</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">flatbuffers::FlatBufferBuilder::StringOffsetCompare</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator()</b>(const Offset&lt; String &gt; &amp;a, const Offset&lt; String &gt; &amp;b) const  (defined in <a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">flatbuffers::FlatBufferBuilder::StringOffsetCompare</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">flatbuffers::FlatBufferBuilder::StringOffsetCompare</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>StringOffsetCompare</b>(const vector_downward &amp;buf) (defined in <a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">flatbuffers::FlatBufferBuilder::StringOffsetCompare</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html">flatbuffers::FlatBufferBuilder::StringOffsetCompare</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/structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html b/structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html
new file mode 100644
index 00000000..f4d754f7
--- /dev/null
+++ b/structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html
@@ -0,0 +1,165 @@
+<!-- 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: flatbuffers::FlatBufferBuilder::StringOffsetCompare Struct 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('structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.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="#pub-attribs">Public Attributes</a> &#124;
+<a href="structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">flatbuffers::FlatBufferBuilder::StringOffsetCompare Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<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:a615f77ed71ea836aa9dc42d0b8722389"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a615f77ed71ea836aa9dc42d0b8722389"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator()</b> (const <a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="structflatbuffers_1_1_string.html">String</a> &gt; &amp;a, const <a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; <a class="el" href="structflatbuffers_1_1_string.html">String</a> &gt; &amp;b) const </td></tr>
+<tr class="separator:a615f77ed71ea836aa9dc42d0b8722389"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a014debbfd9bde2a99f960a2123e54d33"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a014debbfd9bde2a99f960a2123e54d33"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>StringOffsetCompare</b> (const <a class="el" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> &amp;buf)</td></tr>
+<tr class="separator:a014debbfd9bde2a99f960a2123e54d33"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:ada9a5bf2a061d414f73b1c176168877b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada9a5bf2a061d414f73b1c176168877b"></a>
+const <a class="el" href="classflatbuffers_1_1vector__downward.html">vector_downward</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>buf_</b></td></tr>
+<tr class="separator:ada9a5bf2a061d414f73b1c176168877b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="flatbuffers_8h_source.html">flatbuffers.h</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/structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.js b/structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.js
new file mode 100644
index 00000000..effe5b8f
--- /dev/null
+++ b/structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.js
@@ -0,0 +1,6 @@
+var structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare =
+[
+    [ "StringOffsetCompare", "structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html#a014debbfd9bde2a99f960a2123e54d33", null ],
+    [ "operator()", "structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html#a615f77ed71ea836aa9dc42d0b8722389", null ],
+    [ "buf_", "structflatbuffers_1_1_flat_buffer_builder_1_1_string_offset_compare.html#ada9a5bf2a061d414f73b1c176168877b", null ]
+];
\ No newline at end of file
diff --git a/structflatbuffers_1_1_indirect_helper-members.html b/structflatbuffers_1_1_indirect_helper-members.html
new file mode 100644
index 00000000..0d0411b5
--- /dev/null
+++ b/structflatbuffers_1_1_indirect_helper-members.html
@@ -0,0 +1,149 @@
+<!-- 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('structflatbuffers_1_1_indirect_helper.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">flatbuffers::IndirectHelper&lt; T &gt; Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structflatbuffers_1_1_indirect_helper.html">flatbuffers::IndirectHelper&lt; T &gt;</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>element_stride</b> (defined in <a class="el" href="structflatbuffers_1_1_indirect_helper.html">flatbuffers::IndirectHelper&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_indirect_helper.html">flatbuffers::IndirectHelper&lt; T &gt;</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>mutable_return_type</b> typedef (defined in <a class="el" href="structflatbuffers_1_1_indirect_helper.html">flatbuffers::IndirectHelper&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_indirect_helper.html">flatbuffers::IndirectHelper&lt; T &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Read</b>(const uint8_t *p, uoffset_t i) (defined in <a class="el" href="structflatbuffers_1_1_indirect_helper.html">flatbuffers::IndirectHelper&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_indirect_helper.html">flatbuffers::IndirectHelper&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>return_type</b> typedef (defined in <a class="el" href="structflatbuffers_1_1_indirect_helper.html">flatbuffers::IndirectHelper&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_indirect_helper.html">flatbuffers::IndirectHelper&lt; T &gt;</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/structflatbuffers_1_1_indirect_helper.html b/structflatbuffers_1_1_indirect_helper.html
new file mode 100644
index 00000000..3b37c789
--- /dev/null
+++ b/structflatbuffers_1_1_indirect_helper.html
@@ -0,0 +1,172 @@
+<!-- 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: flatbuffers::IndirectHelper&lt; T &gt; Struct Template 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('structflatbuffers_1_1_indirect_helper.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-types">Public Types</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
+<a href="structflatbuffers_1_1_indirect_helper-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">flatbuffers::IndirectHelper&lt; T &gt; Struct Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a22f780c354a407364894991bfbdf84f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22f780c354a407364894991bfbdf84f6"></a>
+typedef T&#160;</td><td class="memItemRight" valign="bottom"><b>mutable_return_type</b></td></tr>
+<tr class="separator:a22f780c354a407364894991bfbdf84f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af257f8e8aacb6ff0d5dcfc8dd053f3c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af257f8e8aacb6ff0d5dcfc8dd053f3c4"></a>
+typedef T&#160;</td><td class="memItemRight" valign="bottom"><b>return_type</b></td></tr>
+<tr class="separator:af257f8e8aacb6ff0d5dcfc8dd053f3c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:af64c70657c1e44cb522c2fd02ec26f7d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af64c70657c1e44cb522c2fd02ec26f7d"></a>
+static return_type&#160;</td><td class="memItemRight" valign="bottom"><b>Read</b> (const uint8_t *p, uoffset_t i)</td></tr>
+<tr class="separator:af64c70657c1e44cb522c2fd02ec26f7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a1361c89f203e090c49ece38ad98b9f3a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1361c89f203e090c49ece38ad98b9f3a"></a>
+static const size_t&#160;</td><td class="memItemRight" valign="bottom"><b>element_stride</b> = sizeof(T)</td></tr>
+<tr class="separator:a1361c89f203e090c49ece38ad98b9f3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="flatbuffers_8h_source.html">flatbuffers.h</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/structflatbuffers_1_1_indirect_helper.js b/structflatbuffers_1_1_indirect_helper.js
new file mode 100644
index 00000000..6de69930
--- /dev/null
+++ b/structflatbuffers_1_1_indirect_helper.js
@@ -0,0 +1,7 @@
+var structflatbuffers_1_1_indirect_helper =
+[
+    [ "mutable_return_type", "structflatbuffers_1_1_indirect_helper.html#a22f780c354a407364894991bfbdf84f6", null ],
+    [ "return_type", "structflatbuffers_1_1_indirect_helper.html#af257f8e8aacb6ff0d5dcfc8dd053f3c4", null ],
+    [ "Read", "structflatbuffers_1_1_indirect_helper.html#af64c70657c1e44cb522c2fd02ec26f7d", null ],
+    [ "element_stride", "structflatbuffers_1_1_indirect_helper.html#a1361c89f203e090c49ece38ad98b9f3a", null ]
+];
\ No newline at end of file
diff --git a/structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4-members.html b/structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4-members.html
new file mode 100644
index 00000000..e9c8cc5b
--- /dev/null
+++ b/structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4-members.html
@@ -0,0 +1,149 @@
+<!-- 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('structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.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">flatbuffers::IndirectHelper&lt; Offset&lt; T &gt; &gt; Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html">flatbuffers::IndirectHelper&lt; Offset&lt; T &gt; &gt;</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>element_stride</b> (defined in <a class="el" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html">flatbuffers::IndirectHelper&lt; Offset&lt; T &gt; &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html">flatbuffers::IndirectHelper&lt; Offset&lt; T &gt; &gt;</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>mutable_return_type</b> typedef (defined in <a class="el" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html">flatbuffers::IndirectHelper&lt; Offset&lt; T &gt; &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html">flatbuffers::IndirectHelper&lt; Offset&lt; T &gt; &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Read</b>(const uint8_t *p, uoffset_t i) (defined in <a class="el" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html">flatbuffers::IndirectHelper&lt; Offset&lt; T &gt; &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html">flatbuffers::IndirectHelper&lt; Offset&lt; T &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>return_type</b> typedef (defined in <a class="el" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html">flatbuffers::IndirectHelper&lt; Offset&lt; T &gt; &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html">flatbuffers::IndirectHelper&lt; Offset&lt; T &gt; &gt;</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/structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html b/structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html
new file mode 100644
index 00000000..2b5c42b2
--- /dev/null
+++ b/structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html
@@ -0,0 +1,172 @@
+<!-- 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: flatbuffers::IndirectHelper&lt; Offset&lt; T &gt; &gt; Struct Template 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('structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.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-types">Public Types</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
+<a href="structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">flatbuffers::IndirectHelper&lt; Offset&lt; T &gt; &gt; Struct Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a5991f7a862ffc1225bded0902901ca23"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5991f7a862ffc1225bded0902901ca23"></a>
+typedef T *&#160;</td><td class="memItemRight" valign="bottom"><b>mutable_return_type</b></td></tr>
+<tr class="separator:a5991f7a862ffc1225bded0902901ca23"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3ce92eecc47213b4d808785a38add468"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3ce92eecc47213b4d808785a38add468"></a>
+typedef const T *&#160;</td><td class="memItemRight" valign="bottom"><b>return_type</b></td></tr>
+<tr class="separator:a3ce92eecc47213b4d808785a38add468"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a1d9e2e9f072cb81e208b8c915312b13f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d9e2e9f072cb81e208b8c915312b13f"></a>
+static return_type&#160;</td><td class="memItemRight" valign="bottom"><b>Read</b> (const uint8_t *p, uoffset_t i)</td></tr>
+<tr class="separator:a1d9e2e9f072cb81e208b8c915312b13f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a52133230f5d057783065fc09d5f00897"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a52133230f5d057783065fc09d5f00897"></a>
+static const size_t&#160;</td><td class="memItemRight" valign="bottom"><b>element_stride</b> = sizeof(uoffset_t)</td></tr>
+<tr class="separator:a52133230f5d057783065fc09d5f00897"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="flatbuffers_8h_source.html">flatbuffers.h</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/structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.js b/structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.js
new file mode 100644
index 00000000..a140e38b
--- /dev/null
+++ b/structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.js
@@ -0,0 +1,7 @@
+var structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4 =
+[
+    [ "mutable_return_type", "structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html#a5991f7a862ffc1225bded0902901ca23", null ],
+    [ "return_type", "structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html#a3ce92eecc47213b4d808785a38add468", null ],
+    [ "Read", "structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html#a1d9e2e9f072cb81e208b8c915312b13f", null ],
+    [ "element_stride", "structflatbuffers_1_1_indirect_helper_3_01_offset_3_01_t_01_4_01_4.html#a52133230f5d057783065fc09d5f00897", null ]
+];
\ No newline at end of file
diff --git a/structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4-members.html b/structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4-members.html
new file mode 100644
index 00000000..7cee2891
--- /dev/null
+++ b/structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4-members.html
@@ -0,0 +1,149 @@
+<!-- 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('structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.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">flatbuffers::IndirectHelper&lt; const T * &gt; Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html">flatbuffers::IndirectHelper&lt; const T * &gt;</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>element_stride</b> (defined in <a class="el" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html">flatbuffers::IndirectHelper&lt; const T * &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html">flatbuffers::IndirectHelper&lt; const T * &gt;</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>mutable_return_type</b> typedef (defined in <a class="el" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html">flatbuffers::IndirectHelper&lt; const T * &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html">flatbuffers::IndirectHelper&lt; const T * &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Read</b>(const uint8_t *p, uoffset_t i) (defined in <a class="el" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html">flatbuffers::IndirectHelper&lt; const T * &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html">flatbuffers::IndirectHelper&lt; const T * &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>return_type</b> typedef (defined in <a class="el" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html">flatbuffers::IndirectHelper&lt; const T * &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html">flatbuffers::IndirectHelper&lt; const T * &gt;</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/structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html b/structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html
new file mode 100644
index 00000000..a3a2664c
--- /dev/null
+++ b/structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html
@@ -0,0 +1,172 @@
+<!-- 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: flatbuffers::IndirectHelper&lt; const T * &gt; Struct Template 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('structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.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-types">Public Types</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
+<a href="structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">flatbuffers::IndirectHelper&lt; const T * &gt; Struct Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:ab5e80d3e49909bc37c1d0f11b7fe9200"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5e80d3e49909bc37c1d0f11b7fe9200"></a>
+typedef T *&#160;</td><td class="memItemRight" valign="bottom"><b>mutable_return_type</b></td></tr>
+<tr class="separator:ab5e80d3e49909bc37c1d0f11b7fe9200"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7f2c3b157027d28bcbfb620791029fe6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f2c3b157027d28bcbfb620791029fe6"></a>
+typedef const T *&#160;</td><td class="memItemRight" valign="bottom"><b>return_type</b></td></tr>
+<tr class="separator:a7f2c3b157027d28bcbfb620791029fe6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:af05256f82faaed8f706105194245aec5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af05256f82faaed8f706105194245aec5"></a>
+static return_type&#160;</td><td class="memItemRight" valign="bottom"><b>Read</b> (const uint8_t *p, uoffset_t i)</td></tr>
+<tr class="separator:af05256f82faaed8f706105194245aec5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a863380eaf59f7dd4df758d560613627b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a863380eaf59f7dd4df758d560613627b"></a>
+static const size_t&#160;</td><td class="memItemRight" valign="bottom"><b>element_stride</b> = sizeof(T)</td></tr>
+<tr class="separator:a863380eaf59f7dd4df758d560613627b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="flatbuffers_8h_source.html">flatbuffers.h</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/structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.js b/structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.js
new file mode 100644
index 00000000..da0f6600
--- /dev/null
+++ b/structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.js
@@ -0,0 +1,7 @@
+var structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4 =
+[
+    [ "mutable_return_type", "structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html#ab5e80d3e49909bc37c1d0f11b7fe9200", null ],
+    [ "return_type", "structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html#a7f2c3b157027d28bcbfb620791029fe6", null ],
+    [ "Read", "structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html#af05256f82faaed8f706105194245aec5", null ],
+    [ "element_stride", "structflatbuffers_1_1_indirect_helper_3_01const_01_t_01_5_01_4.html#a863380eaf59f7dd4df758d560613627b", null ]
+];
\ No newline at end of file
diff --git a/structflatbuffers_1_1_offset-members.html b/structflatbuffers_1_1_offset-members.html
new file mode 100644
index 00000000..0befe217
--- /dev/null
+++ b/structflatbuffers_1_1_offset-members.html
@@ -0,0 +1,150 @@
+<!-- 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('structflatbuffers_1_1_offset.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">flatbuffers::Offset&lt; T &gt; Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structflatbuffers_1_1_offset.html">flatbuffers::Offset&lt; T &gt;</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsNull</b>() const  (defined in <a class="el" href="structflatbuffers_1_1_offset.html">flatbuffers::Offset&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_offset.html">flatbuffers::Offset&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>o</b> (defined in <a class="el" href="structflatbuffers_1_1_offset.html">flatbuffers::Offset&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_offset.html">flatbuffers::Offset&lt; T &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Offset</b>() (defined in <a class="el" href="structflatbuffers_1_1_offset.html">flatbuffers::Offset&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_offset.html">flatbuffers::Offset&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>Offset</b>(uoffset_t _o) (defined in <a class="el" href="structflatbuffers_1_1_offset.html">flatbuffers::Offset&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_offset.html">flatbuffers::Offset&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Union</b>() const  (defined in <a class="el" href="structflatbuffers_1_1_offset.html">flatbuffers::Offset&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_offset.html">flatbuffers::Offset&lt; T &gt;</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/structflatbuffers_1_1_offset.html b/structflatbuffers_1_1_offset.html
new file mode 100644
index 00000000..c6198357
--- /dev/null
+++ b/structflatbuffers_1_1_offset.html
@@ -0,0 +1,168 @@
+<!-- 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: flatbuffers::Offset&lt; T &gt; Struct Template 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('structflatbuffers_1_1_offset.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="#pub-attribs">Public Attributes</a> &#124;
+<a href="structflatbuffers_1_1_offset-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">flatbuffers::Offset&lt; T &gt; Struct Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<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:a1e7e8a81eae90ce9ac45da57268331fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e7e8a81eae90ce9ac45da57268331fc"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsNull</b> () const </td></tr>
+<tr class="separator:a1e7e8a81eae90ce9ac45da57268331fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a67d328892dd0d940950e8128d6bf795b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67d328892dd0d940950e8128d6bf795b"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>Offset</b> (uoffset_t _o)</td></tr>
+<tr class="separator:a67d328892dd0d940950e8128d6bf795b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aef6b640637a58c4a1715346977cd892f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef6b640637a58c4a1715346977cd892f"></a>
+<a class="el" href="structflatbuffers_1_1_offset.html">Offset</a>&lt; void &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Union</b> () const </td></tr>
+<tr class="separator:aef6b640637a58c4a1715346977cd892f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a69571197b0da57e6484ef8191ac205a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69571197b0da57e6484ef8191ac205a7"></a>
+uoffset_t&#160;</td><td class="memItemRight" valign="bottom"><b>o</b></td></tr>
+<tr class="separator:a69571197b0da57e6484ef8191ac205a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="flatbuffers_8h_source.html">flatbuffers.h</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/structflatbuffers_1_1_offset.js b/structflatbuffers_1_1_offset.js
new file mode 100644
index 00000000..31ad4eea
--- /dev/null
+++ b/structflatbuffers_1_1_offset.js
@@ -0,0 +1,8 @@
+var structflatbuffers_1_1_offset =
+[
+    [ "Offset", "structflatbuffers_1_1_offset.html#a7f8a5b6f29f1edbaad7ed5a850f9f0f7", null ],
+    [ "Offset", "structflatbuffers_1_1_offset.html#a67d328892dd0d940950e8128d6bf795b", null ],
+    [ "IsNull", "structflatbuffers_1_1_offset.html#a1e7e8a81eae90ce9ac45da57268331fc", null ],
+    [ "Union", "structflatbuffers_1_1_offset.html#aef6b640637a58c4a1715346977cd892f", null ],
+    [ "o", "structflatbuffers_1_1_offset.html#a69571197b0da57e6484ef8191ac205a7", null ]
+];
\ No newline at end of file
diff --git a/structflatbuffers_1_1_string-members.html b/structflatbuffers_1_1_string-members.html
new file mode 100644
index 00000000..915bc124
--- /dev/null
+++ b/structflatbuffers_1_1_string-members.html
@@ -0,0 +1,174 @@
+<!-- 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('structflatbuffers_1_1_string.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">flatbuffers::String Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structflatbuffers_1_1_string.html">flatbuffers::String</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>begin</b>() (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>begin</b>() const (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>c_str</b>() const  (defined in <a class="el" href="structflatbuffers_1_1_string.html">flatbuffers::String</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_string.html">flatbuffers::String</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</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_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</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_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>data</b>() const (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</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_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>end</b>() (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>end</b>() const (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Get</b>(uoffset_t i) const (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>GetAs</b>(uoffset_t i) const (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetAsString</b>(uoffset_t i) const (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>GetEnum</b>(uoffset_t i) const (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetMutableObject</b>(uoffset_t i) const (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>GetStructFromOffset</b>(size_t o) const (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>Length</b>() const (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>length_</b> (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>LookupByKey</b>(K key) const (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mutable_return_type</b> typedef (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>Mutate</b>(uoffset_t i, const char &amp;val) (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MutateOffset</b>(uoffset_t i, const uint8_t *val) (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator&lt;</b>(const String &amp;o) const  (defined in <a class="el" href="structflatbuffers_1_1_string.html">flatbuffers::String</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_string.html">flatbuffers::String</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(uoffset_t i) const (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>return_type</b> typedef (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size</b>() const (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>str</b>() const  (defined in <a class="el" href="structflatbuffers_1_1_string.html">flatbuffers::String</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_string.html">flatbuffers::String</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Vector</b>() (defined in <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a>)</td><td class="entry"><a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td><td class="entry"><span class="mlabel">protected</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/structflatbuffers_1_1_string.html b/structflatbuffers_1_1_string.html
new file mode 100644
index 00000000..5f1e800c
--- /dev/null
+++ b/structflatbuffers_1_1_string.html
@@ -0,0 +1,257 @@
+<!-- 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: flatbuffers::String Struct 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('structflatbuffers_1_1_string.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="structflatbuffers_1_1_string-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">flatbuffers::String Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Inheritance diagram for flatbuffers::String:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="structflatbuffers_1_1_string.png" usemap="#flatbuffers::String_map" alt=""/>
+  <map id="flatbuffers::String_map" name="flatbuffers::String_map">
+<area href="classflatbuffers_1_1_vector.html" alt="flatbuffers::Vector&lt; char &gt;" shape="rect" coords="0,0,163,24"/>
+</map>
+ </div></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:a859788ba800f24c7c99310c38eb7e195"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a859788ba800f24c7c99310c38eb7e195"></a>
+const char *&#160;</td><td class="memItemRight" valign="bottom"><b>c_str</b> () const </td></tr>
+<tr class="separator:a859788ba800f24c7c99310c38eb7e195"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a533b1aa0d76e4afa7b3b02992621ff6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a533b1aa0d76e4afa7b3b02992621ff6a"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator&lt;</b> (const <a class="el" href="structflatbuffers_1_1_string.html">String</a> &amp;o) const </td></tr>
+<tr class="separator:a533b1aa0d76e4afa7b3b02992621ff6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4690a7167b39c091f03320e17e751c88"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4690a7167b39c091f03320e17e751c88"></a>
+std::string&#160;</td><td class="memItemRight" valign="bottom"><b>str</b> () const </td></tr>
+<tr class="separator:a4690a7167b39c091f03320e17e751c88"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_methods_classflatbuffers_1_1_vector"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classflatbuffers_1_1_vector')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td></tr>
+<tr class="memitem:ac1ab40cdffad6cd50c222fe42c51437b inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1ab40cdffad6cd50c222fe42c51437b"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>begin</b> ()</td></tr>
+<tr class="separator:ac1ab40cdffad6cd50c222fe42c51437b inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a248da154992320d3ebf75cba205628eb inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a248da154992320d3ebf75cba205628eb"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">const_iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>begin</b> () const</td></tr>
+<tr class="separator:a248da154992320d3ebf75cba205628eb inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3a78e000a9301e5310adc014c36137cd inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3a78e000a9301e5310adc014c36137cd"></a>
+const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>Data</b> () const</td></tr>
+<tr class="separator:a3a78e000a9301e5310adc014c36137cd inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0ab8113b331fb069dbaa0a108f6077e1 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ab8113b331fb069dbaa0a108f6077e1"></a>
+uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><b>Data</b> ()</td></tr>
+<tr class="separator:a0ab8113b331fb069dbaa0a108f6077e1 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a417d1d01e6d7580042aa6bd5eb35fadd inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a417d1d01e6d7580042aa6bd5eb35fadd"></a>
+const char *&#160;</td><td class="memItemRight" valign="bottom"><b>data</b> () const</td></tr>
+<tr class="separator:a417d1d01e6d7580042aa6bd5eb35fadd inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a874b185e7dec18bb24b1f0ee42afb7cb inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a874b185e7dec18bb24b1f0ee42afb7cb"></a>
+char *&#160;</td><td class="memItemRight" valign="bottom"><b>data</b> ()</td></tr>
+<tr class="separator:a874b185e7dec18bb24b1f0ee42afb7cb inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a53e9c0cb1d27e4bd355034dbd43f0127 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a53e9c0cb1d27e4bd355034dbd43f0127"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>end</b> ()</td></tr>
+<tr class="separator:a53e9c0cb1d27e4bd355034dbd43f0127 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afb74addfd0fd7ae205c02ebf33d25ea2 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb74addfd0fd7ae205c02ebf33d25ea2"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">const_iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>end</b> () const</td></tr>
+<tr class="separator:afb74addfd0fd7ae205c02ebf33d25ea2 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a06d6b1b963b1d738d74afb1cd7ed973c inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06d6b1b963b1d738d74afb1cd7ed973c"></a>
+return_type&#160;</td><td class="memItemRight" valign="bottom"><b>Get</b> (uoffset_t i) const</td></tr>
+<tr class="separator:a06d6b1b963b1d738d74afb1cd7ed973c inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4155ce66380a2cb863e005164ce8ec33 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4155ce66380a2cb863e005164ce8ec33"></a>
+const U *&#160;</td><td class="memItemRight" valign="bottom"><b>GetAs</b> (uoffset_t i) const</td></tr>
+<tr class="separator:a4155ce66380a2cb863e005164ce8ec33 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a92d04847cc257e3ec9c75b7514988f13 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92d04847cc257e3ec9c75b7514988f13"></a>
+const <a class="el" href="structflatbuffers_1_1_string.html">String</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>GetAsString</b> (uoffset_t i) const</td></tr>
+<tr class="separator:a92d04847cc257e3ec9c75b7514988f13 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4aab53d31e0f3048fceeee9658efdf41 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4aab53d31e0f3048fceeee9658efdf41"></a>
+E&#160;</td><td class="memItemRight" valign="bottom"><b>GetEnum</b> (uoffset_t i) const</td></tr>
+<tr class="separator:a4aab53d31e0f3048fceeee9658efdf41 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab0a55bc4f498fbbd81efc47f3435be97 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab0a55bc4f498fbbd81efc47f3435be97"></a>
+mutable_return_type&#160;</td><td class="memItemRight" valign="bottom"><b>GetMutableObject</b> (uoffset_t i) const</td></tr>
+<tr class="separator:ab0a55bc4f498fbbd81efc47f3435be97 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a39668795e4e5462568cf985291a27f21 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39668795e4e5462568cf985291a27f21"></a>
+const void *&#160;</td><td class="memItemRight" valign="bottom"><b>GetStructFromOffset</b> (size_t o) const</td></tr>
+<tr class="separator:a39668795e4e5462568cf985291a27f21 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa2372140c6a4331774fe15dff81d1d7b inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2372140c6a4331774fe15dff81d1d7b"></a>
+uoffset_t&#160;</td><td class="memItemRight" valign="bottom"><b>Length</b> () const</td></tr>
+<tr class="separator:aa2372140c6a4331774fe15dff81d1d7b inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a88a9fb17715f2845e3aebd4193007d61 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88a9fb17715f2845e3aebd4193007d61"></a>
+return_type&#160;</td><td class="memItemRight" valign="bottom"><b>LookupByKey</b> (K key) const</td></tr>
+<tr class="separator:a88a9fb17715f2845e3aebd4193007d61 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8342962f2f9d5e872c90abdeaea8d24e inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8342962f2f9d5e872c90abdeaea8d24e"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>Mutate</b> (uoffset_t i, const char &amp;val)</td></tr>
+<tr class="separator:a8342962f2f9d5e872c90abdeaea8d24e inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a29803cd584a620bf076a69b6e97ecf5c inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29803cd584a620bf076a69b6e97ecf5c"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>MutateOffset</b> (uoffset_t i, const uint8_t *val)</td></tr>
+<tr class="separator:a29803cd584a620bf076a69b6e97ecf5c inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7f62ee2a80431226cf14dd7348613f35 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f62ee2a80431226cf14dd7348613f35"></a>
+return_type&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (uoffset_t i) const</td></tr>
+<tr class="separator:a7f62ee2a80431226cf14dd7348613f35 inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3aa5f37912192c5adf734ed24145174d inherit pub_methods_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3aa5f37912192c5adf734ed24145174d"></a>
+uoffset_t&#160;</td><td class="memItemRight" valign="bottom"><b>size</b> () const</td></tr>
+<tr class="separator:a3aa5f37912192c5adf734ed24145174d inherit pub_methods_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_types_classflatbuffers_1_1_vector"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classflatbuffers_1_1_vector')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td></tr>
+<tr class="memitem:a66212ee5146550ed418a358a8b756dc6 inherit pub_types_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66212ee5146550ed418a358a8b756dc6"></a>
+typedef <a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>&lt; char, <br class="typebreak" />
+typename <a class="el" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a>&lt; char &gt;<br class="typebreak" />
+::return_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+<tr class="separator:a66212ee5146550ed418a358a8b756dc6 inherit pub_types_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0eeca1798d12e29e1003e6f831668986 inherit pub_types_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0eeca1798d12e29e1003e6f831668986"></a>
+typedef <a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>&lt; char, <br class="typebreak" />
+typename <a class="el" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a>&lt; char &gt;<br class="typebreak" />
+::mutable_return_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+<tr class="separator:a0eeca1798d12e29e1003e6f831668986 inherit pub_types_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7703f4b1cbb1f99087b48cd58abb740e inherit pub_types_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7703f4b1cbb1f99087b48cd58abb740e"></a>
+typedef <a class="el" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a>&lt; char &gt;<br class="typebreak" />
+::mutable_return_type&#160;</td><td class="memItemRight" valign="bottom"><b>mutable_return_type</b></td></tr>
+<tr class="separator:a7703f4b1cbb1f99087b48cd58abb740e inherit pub_types_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a28dab085738663f5c866cf6570bb6289 inherit pub_types_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28dab085738663f5c866cf6570bb6289"></a>
+typedef <a class="el" href="structflatbuffers_1_1_indirect_helper.html">IndirectHelper</a>&lt; char &gt;<br class="typebreak" />
+::return_type&#160;</td><td class="memItemRight" valign="bottom"><b>return_type</b></td></tr>
+<tr class="separator:a28dab085738663f5c866cf6570bb6289 inherit pub_types_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pro_attribs_classflatbuffers_1_1_vector"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classflatbuffers_1_1_vector')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classflatbuffers_1_1_vector.html">flatbuffers::Vector&lt; char &gt;</a></td></tr>
+<tr class="memitem:a62170e531ab5fcef8b4c717c0e84553d inherit pro_attribs_classflatbuffers_1_1_vector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62170e531ab5fcef8b4c717c0e84553d"></a>
+uoffset_t&#160;</td><td class="memItemRight" valign="bottom"><b>length_</b></td></tr>
+<tr class="separator:a62170e531ab5fcef8b4c717c0e84553d inherit pro_attribs_classflatbuffers_1_1_vector"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="flatbuffers_8h_source.html">flatbuffers.h</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/structflatbuffers_1_1_string.js b/structflatbuffers_1_1_string.js
new file mode 100644
index 00000000..53f58c80
--- /dev/null
+++ b/structflatbuffers_1_1_string.js
@@ -0,0 +1,6 @@
+var structflatbuffers_1_1_string =
+[
+    [ "c_str", "structflatbuffers_1_1_string.html#a859788ba800f24c7c99310c38eb7e195", null ],
+    [ "operator<", "structflatbuffers_1_1_string.html#a533b1aa0d76e4afa7b3b02992621ff6a", null ],
+    [ "str", "structflatbuffers_1_1_string.html#a4690a7167b39c091f03320e17e751c88", null ]
+];
\ No newline at end of file
diff --git a/structflatbuffers_1_1_string.png b/structflatbuffers_1_1_string.png
new file mode 100644
index 0000000000000000000000000000000000000000..51f6eddaf7c78ede6ad01705d41eb78609afd03e
GIT binary patch
literal 668
zcmeAS@N?(olHy`uVBq!ia0vp^i-9<RgBeIVZ82p9QW60^A+G=b{|7Q(y!l$%e`o@b
z1;z&s9ANFdBM;<qlmz(&GXNEVz|~VBMhpy0+MX_sAr*{o=e}OI*no#kUH($#fA=^k
zg+ix<l|JW#)-LT^U@`sR#@qXSE}PiOsCibIJk;>4I}|wSPss5pQ%*hpxvuW!AxTfE
z4K8ILA9G%J4>^AQhVXGS9Z%i;4`&q3JLT(_<#*euZbMD{q?wcRK1anRNpDzt`Amj?
zTJ&u{X^-!fYo>?ps*UrU^!Lk*(lb3(E0x<8&-yMu_p67Vr_{#NizWBZ&n#c3%(ngP
zjk%BKd=5UYy6^VJIhU*wUfk%Fe{*~9_fK!1tl|HB<Lw2@Zy&QOW#*hslym<YamzC(
z>!$j%9df(po-Zzl>R-Av`|wTEtpB;MMJ_8P9y6`gJz4ka;kDX!d)JTgP!F{%R{6>4
z?)k~s+7IYg>4xf`j1?B~4}N_9Tys*tV2-G~{!iY%i`N;-1^O834hbIcw_y6g>CRyP
zkmG^64C9{`<%anMEFXjsl0W@rgS}opoWLOG3spK@X7;&R?{{eyTQD0aZBLu~wJd0z
z#Vua8zFdg~s>i?OvlaAm_gQjBrg+}S_VPUQx-7AGz4xp=>&jmnd6)FY|9)Am-2Zix
z*Y@+;oNv-UZ`~-h|N2I`n|`xctao*7-I%9#fb+eD-q!jz8P$u=`~TLHFE&Z9o#7r`
zzj)qH*W=6P2pK$>_4w}Bh^Sq;-o^W7`>j0?rTnedr~2*_jt_?O-c=;qGS#$gwPNu5
q@jRXPgE-WWm49WHPr0=CC-cdvN+#b9B(VXL5`(9!pUXO@geCwtc{@h{

literal 0
HcmV?d00001

diff --git a/structflatbuffers_1_1_vector_iterator-members.html b/structflatbuffers_1_1_vector_iterator-members.html
new file mode 100644
index 00000000..f11ffb37
--- /dev/null
+++ b/structflatbuffers_1_1_vector_iterator-members.html
@@ -0,0 +1,168 @@
+<!-- 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('structflatbuffers_1_1_vector_iterator.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">flatbuffers::VectorIterator&lt; T, IT &gt; Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator_category</b> typedef (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator!=</b>(const VectorIterator &amp;other) const  (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator*</b>() const  (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator+</b>(const uoffset_t &amp;offset) const  (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator++</b>() (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator++</b>(int) (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator+=</b>(const uoffset_t &amp;offset) (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator-</b>(const VectorIterator &amp;other) const  (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator-</b>(const uoffset_t &amp;offset) (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator--</b>() (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator--</b>(int) (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator-=</b>(const uoffset_t &amp;offset) (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator-&gt;</b>() const  (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator&lt;</b>(const VectorIterator &amp;other) const  (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const VectorIterator &amp;other) (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(VectorIterator &amp;&amp;other) (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator==</b>(const VectorIterator &amp;other) const  (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>VectorIterator</b>(const uint8_t *data, uoffset_t i) (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>VectorIterator</b>(const VectorIterator &amp;other) (defined in <a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</a>)</td><td class="entry"><a class="el" href="structflatbuffers_1_1_vector_iterator.html">flatbuffers::VectorIterator&lt; T, IT &gt;</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/structflatbuffers_1_1_vector_iterator.html b/structflatbuffers_1_1_vector_iterator.html
new file mode 100644
index 00000000..73be424c
--- /dev/null
+++ b/structflatbuffers_1_1_vector_iterator.html
@@ -0,0 +1,226 @@
+<!-- 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: flatbuffers::VectorIterator&lt; T, IT &gt; Struct Template 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('structflatbuffers_1_1_vector_iterator.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-types">Public Types</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="structflatbuffers_1_1_vector_iterator-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">flatbuffers::VectorIterator&lt; T, IT &gt; Struct Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a67b44f6c5e62b325e8cb4b91c99f60be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67b44f6c5e62b325e8cb4b91c99f60be"></a>
+typedef uoffset_t&#160;</td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+<tr class="separator:a67b44f6c5e62b325e8cb4b91c99f60be"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac9e9c7cb6d2cc0a69c22b954bb73dc42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9e9c7cb6d2cc0a69c22b954bb73dc42"></a>
+typedef <br class="typebreak" />
+std::random_access_iterator_tag&#160;</td><td class="memItemRight" valign="bottom"><b>iterator_category</b></td></tr>
+<tr class="separator:ac9e9c7cb6d2cc0a69c22b954bb73dc42"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a74d61458dfc1c25d94f80cae8cebaa2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74d61458dfc1c25d94f80cae8cebaa2a"></a>
+typedef IT *&#160;</td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:a74d61458dfc1c25d94f80cae8cebaa2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acb8ab7ba9e8ce289a1c8234e872c708b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb8ab7ba9e8ce289a1c8234e872c708b"></a>
+typedef IT &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:acb8ab7ba9e8ce289a1c8234e872c708b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaf980961b89f2b647a07135246b75088"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf980961b89f2b647a07135246b75088"></a>
+typedef IT&#160;</td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:aaf980961b89f2b647a07135246b75088"><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:aa489e5381af5c940b0fb8e7f54aef1f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa489e5381af5c940b0fb8e7f54aef1f4"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other) const </td></tr>
+<tr class="separator:aa489e5381af5c940b0fb8e7f54aef1f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7d2af5bdf25869708ae89ee598f11346"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d2af5bdf25869708ae89ee598f11346"></a>
+IT&#160;</td><td class="memItemRight" valign="bottom"><b>operator*</b> () const </td></tr>
+<tr class="separator:a7d2af5bdf25869708ae89ee598f11346"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa0bc0de48d01ab1ca7bfb73924192451"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0bc0de48d01ab1ca7bfb73924192451"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator+</b> (const uoffset_t &amp;offset) const </td></tr>
+<tr class="separator:aa0bc0de48d01ab1ca7bfb73924192451"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5fae31cf992a81412140a17dde196890"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fae31cf992a81412140a17dde196890"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator++</b> ()</td></tr>
+<tr class="separator:a5fae31cf992a81412140a17dde196890"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a428a3df67f852563e25a040e41f3aef9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a428a3df67f852563e25a040e41f3aef9"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator++</b> (int)</td></tr>
+<tr class="separator:a428a3df67f852563e25a040e41f3aef9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a368b4ee9b89ab783045f96a2f69dec67"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a368b4ee9b89ab783045f96a2f69dec67"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator+=</b> (const uoffset_t &amp;offset)</td></tr>
+<tr class="separator:a368b4ee9b89ab783045f96a2f69dec67"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa7bd6c57906c8263d184750296d4d4b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7bd6c57906c8263d184750296d4d4b4"></a>
+ptrdiff_t&#160;</td><td class="memItemRight" valign="bottom"><b>operator-</b> (const <a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other) const </td></tr>
+<tr class="separator:aa7bd6c57906c8263d184750296d4d4b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5d2754d1859696e7a6d43e74d4f9ae29"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d2754d1859696e7a6d43e74d4f9ae29"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator-</b> (const uoffset_t &amp;offset)</td></tr>
+<tr class="separator:a5d2754d1859696e7a6d43e74d4f9ae29"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae33269dea219a9a690f00c23d67c0208"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae33269dea219a9a690f00c23d67c0208"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator--</b> ()</td></tr>
+<tr class="separator:ae33269dea219a9a690f00c23d67c0208"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a105a4e408b45c324f2ad445f5145bf51"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a105a4e408b45c324f2ad445f5145bf51"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator--</b> (int)</td></tr>
+<tr class="separator:a105a4e408b45c324f2ad445f5145bf51"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af17653cb8a120a9bbd35dcb35a570729"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af17653cb8a120a9bbd35dcb35a570729"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator-=</b> (const uoffset_t &amp;offset)</td></tr>
+<tr class="separator:af17653cb8a120a9bbd35dcb35a570729"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af0e098e805b8a387a108e0d156145329"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0e098e805b8a387a108e0d156145329"></a>
+IT&#160;</td><td class="memItemRight" valign="bottom"><b>operator-&gt;</b> () const </td></tr>
+<tr class="separator:af0e098e805b8a387a108e0d156145329"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7da0129573fc128410b7f0d5f2994301"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7da0129573fc128410b7f0d5f2994301"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator&lt;</b> (const <a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other) const </td></tr>
+<tr class="separator:a7da0129573fc128410b7f0d5f2994301"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4b0747db5a2080cf4bd8bdbdeb1ceda2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b0747db5a2080cf4bd8bdbdeb1ceda2"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other)</td></tr>
+<tr class="separator:a4b0747db5a2080cf4bd8bdbdeb1ceda2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaf71b80a66b9d7f5220e1cd4d2b27b3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf71b80a66b9d7f5220e1cd4d2b27b3c"></a>
+<a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;&amp;other)</td></tr>
+<tr class="separator:aaf71b80a66b9d7f5220e1cd4d2b27b3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af7d486593808b4d955cb5f8d424d18ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af7d486593808b4d955cb5f8d424d18ee"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other) const </td></tr>
+<tr class="separator:af7d486593808b4d955cb5f8d424d18ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a415a449a3d8a04271260ecb380c3fa49"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a415a449a3d8a04271260ecb380c3fa49"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>VectorIterator</b> (const uint8_t *data, uoffset_t i)</td></tr>
+<tr class="separator:a415a449a3d8a04271260ecb380c3fa49"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7e10ae7b14f5f79bf0da6bbed7c17b5d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e10ae7b14f5f79bf0da6bbed7c17b5d"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>VectorIterator</b> (const <a class="el" href="structflatbuffers_1_1_vector_iterator.html">VectorIterator</a> &amp;other)</td></tr>
+<tr class="separator:a7e10ae7b14f5f79bf0da6bbed7c17b5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="flatbuffers_8h_source.html">flatbuffers.h</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/structflatbuffers_1_1_vector_iterator.js b/structflatbuffers_1_1_vector_iterator.js
new file mode 100644
index 00000000..26d79e8e
--- /dev/null
+++ b/structflatbuffers_1_1_vector_iterator.js
@@ -0,0 +1,26 @@
+var structflatbuffers_1_1_vector_iterator =
+[
+    [ "difference_type", "structflatbuffers_1_1_vector_iterator.html#a67b44f6c5e62b325e8cb4b91c99f60be", null ],
+    [ "iterator_category", "structflatbuffers_1_1_vector_iterator.html#ac9e9c7cb6d2cc0a69c22b954bb73dc42", null ],
+    [ "pointer", "structflatbuffers_1_1_vector_iterator.html#a74d61458dfc1c25d94f80cae8cebaa2a", null ],
+    [ "reference", "structflatbuffers_1_1_vector_iterator.html#acb8ab7ba9e8ce289a1c8234e872c708b", null ],
+    [ "value_type", "structflatbuffers_1_1_vector_iterator.html#aaf980961b89f2b647a07135246b75088", null ],
+    [ "VectorIterator", "structflatbuffers_1_1_vector_iterator.html#a415a449a3d8a04271260ecb380c3fa49", null ],
+    [ "VectorIterator", "structflatbuffers_1_1_vector_iterator.html#a7e10ae7b14f5f79bf0da6bbed7c17b5d", null ],
+    [ "operator!=", "structflatbuffers_1_1_vector_iterator.html#aa489e5381af5c940b0fb8e7f54aef1f4", null ],
+    [ "operator*", "structflatbuffers_1_1_vector_iterator.html#a7d2af5bdf25869708ae89ee598f11346", null ],
+    [ "operator+", "structflatbuffers_1_1_vector_iterator.html#aa0bc0de48d01ab1ca7bfb73924192451", null ],
+    [ "operator++", "structflatbuffers_1_1_vector_iterator.html#a5fae31cf992a81412140a17dde196890", null ],
+    [ "operator++", "structflatbuffers_1_1_vector_iterator.html#a428a3df67f852563e25a040e41f3aef9", null ],
+    [ "operator+=", "structflatbuffers_1_1_vector_iterator.html#a368b4ee9b89ab783045f96a2f69dec67", null ],
+    [ "operator-", "structflatbuffers_1_1_vector_iterator.html#aa7bd6c57906c8263d184750296d4d4b4", null ],
+    [ "operator-", "structflatbuffers_1_1_vector_iterator.html#a5d2754d1859696e7a6d43e74d4f9ae29", null ],
+    [ "operator--", "structflatbuffers_1_1_vector_iterator.html#ae33269dea219a9a690f00c23d67c0208", null ],
+    [ "operator--", "structflatbuffers_1_1_vector_iterator.html#a105a4e408b45c324f2ad445f5145bf51", null ],
+    [ "operator-=", "structflatbuffers_1_1_vector_iterator.html#af17653cb8a120a9bbd35dcb35a570729", null ],
+    [ "operator->", "structflatbuffers_1_1_vector_iterator.html#af0e098e805b8a387a108e0d156145329", null ],
+    [ "operator<", "structflatbuffers_1_1_vector_iterator.html#a7da0129573fc128410b7f0d5f2994301", null ],
+    [ "operator=", "structflatbuffers_1_1_vector_iterator.html#a4b0747db5a2080cf4bd8bdbdeb1ceda2", null ],
+    [ "operator=", "structflatbuffers_1_1_vector_iterator.html#aaf71b80a66b9d7f5220e1cd4d2b27b3c", null ],
+    [ "operator==", "structflatbuffers_1_1_vector_iterator.html#af7d486593808b4d955cb5f8d424d18ee", null ]
+];
\ No newline at end of file
diff --git a/usergroup0.html b/usergroup0.html
index 12cc81fe..d68afff2 100644
--- a/usergroup0.html
+++ b/usergroup0.html
@@ -59,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <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><a href="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
@@ -93,6 +93,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
       <li><a href="flatbuffers_guide_use_php.html"><span>Use&#160;in&#160;PHP</span></a></li>
       <li><a href="flatbuffers_guide_use_python.html"><span>Use&#160;in&#160;Python</span></a></li>
       <li><a href="flexbuffers.html"><span>Schema-less&#160;version</span></a></li>
+      <li><a href="usergroup1.html"><span>gRPC</span></a></li>
     </ul>
   </div>
 </div><!-- top -->
@@ -142,6 +143,7 @@ $(document).ready(function(){initNavTree('usergroup0.html','');});
 <li><a href="flatbuffers_guide_use_php.html"><span>Use&#160;in&#160;PHP</span></a></li>
 <li><a href="flatbuffers_guide_use_python.html"><span>Use&#160;in&#160;Python</span></a></li>
 <li><a href="flexbuffers.html"><span>Schema-less&#160;version</span></a></li>
+<li><a href="usergroup1.html"><span>gRPC</span></a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
diff --git a/usergroup1.html b/usergroup1.html
index f4593dc8..7f8b497c 100644
--- a/usergroup1.html
+++ b/usergroup1.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: API Reference</title>
+<title>FlatBuffers: gRPC</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>
@@ -53,13 +53,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
   <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 class="current"><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="usergroup1.html"><span>API&#160;Reference</span></a></li>
+      <li><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">
@@ -81,8 +81,24 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
   </div>
   <div id="navrow2" class="tabs2">
     <ul class="tablist">
-      <li><a href="modules.html"><span>APIs</span></a></li>
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="flatbuffers_guide_building.html"><span>Building</span></a></li>
+      <li><a href="flatbuffers_guide_tutorial.html"><span>Tutorial</span></a></li>
+      <li><a href="flatbuffers_guide_using_schema_compiler.html"><span>Using&#160;the&#160;schema&#160;compiler</span></a></li>
+      <li><a href="flatbuffers_guide_writing_schema.html"><span>Writing&#160;a&#160;schema</span></a></li>
+      <li><a href="flatbuffers_guide_use_cpp.html"><span>Use&#160;in&#160;C++</span></a></li>
+      <li><a href="flatbuffers_guide_use_c.html"><span>Use&#160;in&#160;C</span></a></li>
+      <li><a href="flatbuffers_guide_use_go.html"><span>Use&#160;in&#160;Go</span></a></li>
+      <li><a href="flatbuffers_guide_use_java_c-sharp.html"><span>Use&#160;in&#160;Java/C#</span></a></li>
+      <li><a href="flatbuffers_guide_use_javascript.html"><span>Use&#160;in&#160;JavaScript</span></a></li>
+      <li><a href="flatbuffers_guide_use_php.html"><span>Use&#160;in&#160;PHP</span></a></li>
+      <li><a href="flatbuffers_guide_use_python.html"><span>Use&#160;in&#160;Python</span></a></li>
+      <li><a href="flexbuffers.html"><span>Schema-less&#160;version</span></a></li>
+      <li class="current"><a href="usergroup1.html"><span>gRPC</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="flatbuffers_grpc_guide_use_cpp.html"><span>Use&#160;in&#160;C++</span></a></li>
     </ul>
   </div>
 </div><!-- top -->
@@ -116,12 +132,11 @@ $(document).ready(function(){initNavTree('usergroup1.html','');});
 
 <div class="header">
   <div class="headertitle">
-<div class="title">API Reference</div>  </div>
+<div class="title">gRPC</div>  </div>
 </div><!--header-->
 <div class="contents">
 <ul>
-<li><a href="modules.html"><span>APIs</span></a></li>
-<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+<li><a href="flatbuffers_grpc_guide_use_cpp.html"><span>Use&#160;in&#160;C++</span></a></li>
 </ul>
 </div><!-- contents -->
 </div><!-- doc-content -->
diff --git a/usergroup2.html b/usergroup2.html
new file mode 100644
index 00000000..56f8de9e
--- /dev/null
+++ b/usergroup2.html
@@ -0,0 +1,138 @@
+<!-- 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: API 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><a href="annotated.html"><span>Class&#160;List</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('usergroup2.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">API Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<ul>
+<li><a href="modules.html"><span>APIs</span></a></li>
+<li><a href="annotated.html"><span>Class&#160;List</span></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>
-- 
GitLab