xref: /aosp_15_r20/external/flatbuffers/tests/monster_test_generated.h (revision 890232f25432b36107d06881e0a25aaa6b473652)
1 // automatically generated by the FlatBuffers compiler, do not modify
2 
3 
4 #ifndef FLATBUFFERS_GENERATED_MONSTERTEST_MYGAME_EXAMPLE_H_
5 #define FLATBUFFERS_GENERATED_MONSTERTEST_MYGAME_EXAMPLE_H_
6 
7 #include "flatbuffers/flatbuffers.h"
8 #include "flatbuffers/flexbuffers.h"
9 #include "flatbuffers/flex_flat_util.h"
10 
11 // Ensure the included flatbuffers.h is the same version as when this file was
12 // generated, otherwise it may not be compatible.
13 static_assert(FLATBUFFERS_VERSION_MAJOR == 2 &&
14               FLATBUFFERS_VERSION_MINOR == 0 &&
15               FLATBUFFERS_VERSION_REVISION == 7,
16              "Non-compatible flatbuffers version included");
17 
18 namespace MyGame {
19 
20 struct InParentNamespace;
21 struct InParentNamespaceBuilder;
22 struct InParentNamespaceT;
23 
24 namespace Example2 {
25 
26 struct Monster;
27 struct MonsterBuilder;
28 struct MonsterT;
29 
30 }  // namespace Example2
31 
32 namespace Example {
33 
34 struct Test;
35 
36 struct TestSimpleTableWithEnum;
37 struct TestSimpleTableWithEnumBuilder;
38 struct TestSimpleTableWithEnumT;
39 
40 struct Vec3;
41 
42 struct Ability;
43 
44 struct StructOfStructs;
45 
46 struct StructOfStructsOfStructs;
47 
48 struct Stat;
49 struct StatBuilder;
50 struct StatT;
51 
52 struct Referrable;
53 struct ReferrableBuilder;
54 struct ReferrableT;
55 
56 struct Monster;
57 struct MonsterBuilder;
58 struct MonsterT;
59 
60 struct TypeAliases;
61 struct TypeAliasesBuilder;
62 struct TypeAliasesT;
63 
64 }  // namespace Example
65 
66 bool operator==(const InParentNamespaceT &lhs, const InParentNamespaceT &rhs);
67 bool operator!=(const InParentNamespaceT &lhs, const InParentNamespaceT &rhs);
68 namespace Example2 {
69 
70 bool operator==(const MonsterT &lhs, const MonsterT &rhs);
71 bool operator!=(const MonsterT &lhs, const MonsterT &rhs);
72 }  // namespace Example2
73 
74 namespace Example {
75 
76 bool operator==(const Test &lhs, const Test &rhs);
77 bool operator!=(const Test &lhs, const Test &rhs);
78 bool operator==(const TestSimpleTableWithEnumT &lhs, const TestSimpleTableWithEnumT &rhs);
79 bool operator!=(const TestSimpleTableWithEnumT &lhs, const TestSimpleTableWithEnumT &rhs);
80 bool operator==(const Vec3 &lhs, const Vec3 &rhs);
81 bool operator!=(const Vec3 &lhs, const Vec3 &rhs);
82 bool operator==(const Ability &lhs, const Ability &rhs);
83 bool operator!=(const Ability &lhs, const Ability &rhs);
84 bool operator==(const StructOfStructs &lhs, const StructOfStructs &rhs);
85 bool operator!=(const StructOfStructs &lhs, const StructOfStructs &rhs);
86 bool operator==(const StructOfStructsOfStructs &lhs, const StructOfStructsOfStructs &rhs);
87 bool operator!=(const StructOfStructsOfStructs &lhs, const StructOfStructsOfStructs &rhs);
88 bool operator==(const StatT &lhs, const StatT &rhs);
89 bool operator!=(const StatT &lhs, const StatT &rhs);
90 bool operator==(const ReferrableT &lhs, const ReferrableT &rhs);
91 bool operator!=(const ReferrableT &lhs, const ReferrableT &rhs);
92 bool operator==(const MonsterT &lhs, const MonsterT &rhs);
93 bool operator!=(const MonsterT &lhs, const MonsterT &rhs);
94 bool operator==(const TypeAliasesT &lhs, const TypeAliasesT &rhs);
95 bool operator!=(const TypeAliasesT &lhs, const TypeAliasesT &rhs);
96 
97 }  // namespace Example
98 
99 inline const flatbuffers::TypeTable *InParentNamespaceTypeTable();
100 
101 namespace Example2 {
102 
103 inline const flatbuffers::TypeTable *MonsterTypeTable();
104 
105 }  // namespace Example2
106 
107 namespace Example {
108 
109 inline const flatbuffers::TypeTable *TestTypeTable();
110 
111 inline const flatbuffers::TypeTable *TestSimpleTableWithEnumTypeTable();
112 
113 inline const flatbuffers::TypeTable *Vec3TypeTable();
114 
115 inline const flatbuffers::TypeTable *AbilityTypeTable();
116 
117 inline const flatbuffers::TypeTable *StructOfStructsTypeTable();
118 
119 inline const flatbuffers::TypeTable *StructOfStructsOfStructsTypeTable();
120 
121 inline const flatbuffers::TypeTable *StatTypeTable();
122 
123 inline const flatbuffers::TypeTable *ReferrableTypeTable();
124 
125 inline const flatbuffers::TypeTable *MonsterTypeTable();
126 
127 inline const flatbuffers::TypeTable *TypeAliasesTypeTable();
128 
129 /// Composite components of Monster color.
130 enum Color : uint8_t {
131   Color_Red = 1,
132   /// \brief color Green
133   /// Green is bit_flag with value (1u << 1)
134   Color_Green = 2,
135   /// \brief color Blue (1u << 3)
136   Color_Blue = 8,
137   Color_NONE = 0,
138   Color_ANY = 11
139 };
140 
EnumValuesColor()141 inline const Color (&EnumValuesColor())[3] {
142   static const Color values[] = {
143     Color_Red,
144     Color_Green,
145     Color_Blue
146   };
147   return values;
148 }
149 
EnumNamesColor()150 inline const char * const *EnumNamesColor() {
151   static const char * const names[9] = {
152     "Red",
153     "Green",
154     "",
155     "",
156     "",
157     "",
158     "",
159     "Blue",
160     nullptr
161   };
162   return names;
163 }
164 
EnumNameColor(Color e)165 inline const char *EnumNameColor(Color e) {
166   if (flatbuffers::IsOutRange(e, Color_Red, Color_Blue)) return "";
167   const size_t index = static_cast<size_t>(e) - static_cast<size_t>(Color_Red);
168   return EnumNamesColor()[index];
169 }
170 
171 enum Race : int8_t {
172   Race_None = -1,
173   Race_Human = 0,
174   Race_Dwarf = 1,
175   Race_Elf = 2,
176   Race_MIN = Race_None,
177   Race_MAX = Race_Elf
178 };
179 
EnumValuesRace()180 inline const Race (&EnumValuesRace())[4] {
181   static const Race values[] = {
182     Race_None,
183     Race_Human,
184     Race_Dwarf,
185     Race_Elf
186   };
187   return values;
188 }
189 
EnumNamesRace()190 inline const char * const *EnumNamesRace() {
191   static const char * const names[5] = {
192     "None",
193     "Human",
194     "Dwarf",
195     "Elf",
196     nullptr
197   };
198   return names;
199 }
200 
EnumNameRace(Race e)201 inline const char *EnumNameRace(Race e) {
202   if (flatbuffers::IsOutRange(e, Race_None, Race_Elf)) return "";
203   const size_t index = static_cast<size_t>(e) - static_cast<size_t>(Race_None);
204   return EnumNamesRace()[index];
205 }
206 
207 enum LongEnum : uint64_t {
208   LongEnum_LongOne = 2ULL,
209   LongEnum_LongTwo = 4ULL,
210   LongEnum_LongBig = 1099511627776ULL,
211   LongEnum_NONE = 0,
212   LongEnum_ANY = 1099511627782ULL
213 };
214 
EnumValuesLongEnum()215 inline const LongEnum (&EnumValuesLongEnum())[3] {
216   static const LongEnum values[] = {
217     LongEnum_LongOne,
218     LongEnum_LongTwo,
219     LongEnum_LongBig
220   };
221   return values;
222 }
223 
EnumNameLongEnum(LongEnum e)224 inline const char *EnumNameLongEnum(LongEnum e) {
225   switch (e) {
226     case LongEnum_LongOne: return "LongOne";
227     case LongEnum_LongTwo: return "LongTwo";
228     case LongEnum_LongBig: return "LongBig";
229     default: return "";
230   }
231 }
232 
233 enum Any : uint8_t {
234   Any_NONE = 0,
235   Any_Monster = 1,
236   Any_TestSimpleTableWithEnum = 2,
237   Any_MyGame_Example2_Monster = 3,
238   Any_MIN = Any_NONE,
239   Any_MAX = Any_MyGame_Example2_Monster
240 };
241 
EnumValuesAny()242 inline const Any (&EnumValuesAny())[4] {
243   static const Any values[] = {
244     Any_NONE,
245     Any_Monster,
246     Any_TestSimpleTableWithEnum,
247     Any_MyGame_Example2_Monster
248   };
249   return values;
250 }
251 
EnumNamesAny()252 inline const char * const *EnumNamesAny() {
253   static const char * const names[5] = {
254     "NONE",
255     "Monster",
256     "TestSimpleTableWithEnum",
257     "MyGame_Example2_Monster",
258     nullptr
259   };
260   return names;
261 }
262 
EnumNameAny(Any e)263 inline const char *EnumNameAny(Any e) {
264   if (flatbuffers::IsOutRange(e, Any_NONE, Any_MyGame_Example2_Monster)) return "";
265   const size_t index = static_cast<size_t>(e);
266   return EnumNamesAny()[index];
267 }
268 
269 template<typename T> struct AnyTraits {
270   static const Any enum_value = Any_NONE;
271 };
272 
273 template<> struct AnyTraits<MyGame::Example::Monster> {
274   static const Any enum_value = Any_Monster;
275 };
276 
277 template<> struct AnyTraits<MyGame::Example::TestSimpleTableWithEnum> {
278   static const Any enum_value = Any_TestSimpleTableWithEnum;
279 };
280 
281 template<> struct AnyTraits<MyGame::Example2::Monster> {
282   static const Any enum_value = Any_MyGame_Example2_Monster;
283 };
284 
285 template<typename T> struct AnyUnionTraits {
286   static const Any enum_value = Any_NONE;
287 };
288 
289 template<> struct AnyUnionTraits<MyGame::Example::MonsterT> {
290   static const Any enum_value = Any_Monster;
291 };
292 
293 template<> struct AnyUnionTraits<MyGame::Example::TestSimpleTableWithEnumT> {
294   static const Any enum_value = Any_TestSimpleTableWithEnum;
295 };
296 
297 template<> struct AnyUnionTraits<MyGame::Example2::MonsterT> {
298   static const Any enum_value = Any_MyGame_Example2_Monster;
299 };
300 
301 struct AnyUnion {
302   Any type;
303   void *value;
304 
305   AnyUnion() : type(Any_NONE), value(nullptr) {}
306   AnyUnion(AnyUnion&& u) FLATBUFFERS_NOEXCEPT :
307     type(Any_NONE), value(nullptr)
308     { std::swap(type, u.type); std::swap(value, u.value); }
309   AnyUnion(const AnyUnion &);
310   AnyUnion &operator=(const AnyUnion &u)
311     { AnyUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
312   AnyUnion &operator=(AnyUnion &&u) FLATBUFFERS_NOEXCEPT
313     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
314   ~AnyUnion() { Reset(); }
315 
316   void Reset();
317 
318   template <typename T>
319   void Set(T&& val) {
320     typedef typename std::remove_reference<T>::type RT;
321     Reset();
322     type = AnyUnionTraits<RT>::enum_value;
323     if (type != Any_NONE) {
324       value = new RT(std::forward<T>(val));
325     }
326   }
327 
328   static void *UnPack(const void *obj, Any type, const flatbuffers::resolver_function_t *resolver);
329   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
330 
331   MyGame::Example::MonsterT *AsMonster() {
332     return type == Any_Monster ?
333       reinterpret_cast<MyGame::Example::MonsterT *>(value) : nullptr;
334   }
335   const MyGame::Example::MonsterT *AsMonster() const {
336     return type == Any_Monster ?
337       reinterpret_cast<const MyGame::Example::MonsterT *>(value) : nullptr;
338   }
339   MyGame::Example::TestSimpleTableWithEnumT *AsTestSimpleTableWithEnum() {
340     return type == Any_TestSimpleTableWithEnum ?
341       reinterpret_cast<MyGame::Example::TestSimpleTableWithEnumT *>(value) : nullptr;
342   }
343   const MyGame::Example::TestSimpleTableWithEnumT *AsTestSimpleTableWithEnum() const {
344     return type == Any_TestSimpleTableWithEnum ?
345       reinterpret_cast<const MyGame::Example::TestSimpleTableWithEnumT *>(value) : nullptr;
346   }
347   MyGame::Example2::MonsterT *AsMyGame_Example2_Monster() {
348     return type == Any_MyGame_Example2_Monster ?
349       reinterpret_cast<MyGame::Example2::MonsterT *>(value) : nullptr;
350   }
351   const MyGame::Example2::MonsterT *AsMyGame_Example2_Monster() const {
352     return type == Any_MyGame_Example2_Monster ?
353       reinterpret_cast<const MyGame::Example2::MonsterT *>(value) : nullptr;
354   }
355 };
356 
357 
358 inline bool operator==(const AnyUnion &lhs, const AnyUnion &rhs) {
359   if (lhs.type != rhs.type) return false;
360   switch (lhs.type) {
361     case Any_NONE: {
362       return true;
363     }
364     case Any_Monster: {
365       return *(reinterpret_cast<const MyGame::Example::MonsterT *>(lhs.value)) ==
366              *(reinterpret_cast<const MyGame::Example::MonsterT *>(rhs.value));
367     }
368     case Any_TestSimpleTableWithEnum: {
369       return *(reinterpret_cast<const MyGame::Example::TestSimpleTableWithEnumT *>(lhs.value)) ==
370              *(reinterpret_cast<const MyGame::Example::TestSimpleTableWithEnumT *>(rhs.value));
371     }
372     case Any_MyGame_Example2_Monster: {
373       return *(reinterpret_cast<const MyGame::Example2::MonsterT *>(lhs.value)) ==
374              *(reinterpret_cast<const MyGame::Example2::MonsterT *>(rhs.value));
375     }
376     default: {
377       return false;
378     }
379   }
380 }
381 
382 inline bool operator!=(const AnyUnion &lhs, const AnyUnion &rhs) {
383     return !(lhs == rhs);
384 }
385 
386 bool VerifyAny(flatbuffers::Verifier &verifier, const void *obj, Any type);
387 bool VerifyAnyVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
388 
389 enum AnyUniqueAliases : uint8_t {
390   AnyUniqueAliases_NONE = 0,
391   AnyUniqueAliases_M = 1,
392   AnyUniqueAliases_TS = 2,
393   AnyUniqueAliases_M2 = 3,
394   AnyUniqueAliases_MIN = AnyUniqueAliases_NONE,
395   AnyUniqueAliases_MAX = AnyUniqueAliases_M2
396 };
397 
398 inline const AnyUniqueAliases (&EnumValuesAnyUniqueAliases())[4] {
399   static const AnyUniqueAliases values[] = {
400     AnyUniqueAliases_NONE,
401     AnyUniqueAliases_M,
402     AnyUniqueAliases_TS,
403     AnyUniqueAliases_M2
404   };
405   return values;
406 }
407 
408 inline const char * const *EnumNamesAnyUniqueAliases() {
409   static const char * const names[5] = {
410     "NONE",
411     "M",
412     "TS",
413     "M2",
414     nullptr
415   };
416   return names;
417 }
418 
419 inline const char *EnumNameAnyUniqueAliases(AnyUniqueAliases e) {
420   if (flatbuffers::IsOutRange(e, AnyUniqueAliases_NONE, AnyUniqueAliases_M2)) return "";
421   const size_t index = static_cast<size_t>(e);
422   return EnumNamesAnyUniqueAliases()[index];
423 }
424 
425 template<typename T> struct AnyUniqueAliasesTraits {
426   static const AnyUniqueAliases enum_value = AnyUniqueAliases_NONE;
427 };
428 
429 template<> struct AnyUniqueAliasesTraits<MyGame::Example::Monster> {
430   static const AnyUniqueAliases enum_value = AnyUniqueAliases_M;
431 };
432 
433 template<> struct AnyUniqueAliasesTraits<MyGame::Example::TestSimpleTableWithEnum> {
434   static const AnyUniqueAliases enum_value = AnyUniqueAliases_TS;
435 };
436 
437 template<> struct AnyUniqueAliasesTraits<MyGame::Example2::Monster> {
438   static const AnyUniqueAliases enum_value = AnyUniqueAliases_M2;
439 };
440 
441 template<typename T> struct AnyUniqueAliasesUnionTraits {
442   static const AnyUniqueAliases enum_value = AnyUniqueAliases_NONE;
443 };
444 
445 template<> struct AnyUniqueAliasesUnionTraits<MyGame::Example::MonsterT> {
446   static const AnyUniqueAliases enum_value = AnyUniqueAliases_M;
447 };
448 
449 template<> struct AnyUniqueAliasesUnionTraits<MyGame::Example::TestSimpleTableWithEnumT> {
450   static const AnyUniqueAliases enum_value = AnyUniqueAliases_TS;
451 };
452 
453 template<> struct AnyUniqueAliasesUnionTraits<MyGame::Example2::MonsterT> {
454   static const AnyUniqueAliases enum_value = AnyUniqueAliases_M2;
455 };
456 
457 struct AnyUniqueAliasesUnion {
458   AnyUniqueAliases type;
459   void *value;
460 
461   AnyUniqueAliasesUnion() : type(AnyUniqueAliases_NONE), value(nullptr) {}
462   AnyUniqueAliasesUnion(AnyUniqueAliasesUnion&& u) FLATBUFFERS_NOEXCEPT :
463     type(AnyUniqueAliases_NONE), value(nullptr)
464     { std::swap(type, u.type); std::swap(value, u.value); }
465   AnyUniqueAliasesUnion(const AnyUniqueAliasesUnion &);
466   AnyUniqueAliasesUnion &operator=(const AnyUniqueAliasesUnion &u)
467     { AnyUniqueAliasesUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
468   AnyUniqueAliasesUnion &operator=(AnyUniqueAliasesUnion &&u) FLATBUFFERS_NOEXCEPT
469     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
470   ~AnyUniqueAliasesUnion() { Reset(); }
471 
472   void Reset();
473 
474   template <typename T>
475   void Set(T&& val) {
476     typedef typename std::remove_reference<T>::type RT;
477     Reset();
478     type = AnyUniqueAliasesUnionTraits<RT>::enum_value;
479     if (type != AnyUniqueAliases_NONE) {
480       value = new RT(std::forward<T>(val));
481     }
482   }
483 
484   static void *UnPack(const void *obj, AnyUniqueAliases type, const flatbuffers::resolver_function_t *resolver);
485   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
486 
487   MyGame::Example::MonsterT *AsM() {
488     return type == AnyUniqueAliases_M ?
489       reinterpret_cast<MyGame::Example::MonsterT *>(value) : nullptr;
490   }
491   const MyGame::Example::MonsterT *AsM() const {
492     return type == AnyUniqueAliases_M ?
493       reinterpret_cast<const MyGame::Example::MonsterT *>(value) : nullptr;
494   }
495   MyGame::Example::TestSimpleTableWithEnumT *AsTS() {
496     return type == AnyUniqueAliases_TS ?
497       reinterpret_cast<MyGame::Example::TestSimpleTableWithEnumT *>(value) : nullptr;
498   }
499   const MyGame::Example::TestSimpleTableWithEnumT *AsTS() const {
500     return type == AnyUniqueAliases_TS ?
501       reinterpret_cast<const MyGame::Example::TestSimpleTableWithEnumT *>(value) : nullptr;
502   }
503   MyGame::Example2::MonsterT *AsM2() {
504     return type == AnyUniqueAliases_M2 ?
505       reinterpret_cast<MyGame::Example2::MonsterT *>(value) : nullptr;
506   }
507   const MyGame::Example2::MonsterT *AsM2() const {
508     return type == AnyUniqueAliases_M2 ?
509       reinterpret_cast<const MyGame::Example2::MonsterT *>(value) : nullptr;
510   }
511 };
512 
513 
514 inline bool operator==(const AnyUniqueAliasesUnion &lhs, const AnyUniqueAliasesUnion &rhs) {
515   if (lhs.type != rhs.type) return false;
516   switch (lhs.type) {
517     case AnyUniqueAliases_NONE: {
518       return true;
519     }
520     case AnyUniqueAliases_M: {
521       return *(reinterpret_cast<const MyGame::Example::MonsterT *>(lhs.value)) ==
522              *(reinterpret_cast<const MyGame::Example::MonsterT *>(rhs.value));
523     }
524     case AnyUniqueAliases_TS: {
525       return *(reinterpret_cast<const MyGame::Example::TestSimpleTableWithEnumT *>(lhs.value)) ==
526              *(reinterpret_cast<const MyGame::Example::TestSimpleTableWithEnumT *>(rhs.value));
527     }
528     case AnyUniqueAliases_M2: {
529       return *(reinterpret_cast<const MyGame::Example2::MonsterT *>(lhs.value)) ==
530              *(reinterpret_cast<const MyGame::Example2::MonsterT *>(rhs.value));
531     }
532     default: {
533       return false;
534     }
535   }
536 }
537 
538 inline bool operator!=(const AnyUniqueAliasesUnion &lhs, const AnyUniqueAliasesUnion &rhs) {
539     return !(lhs == rhs);
540 }
541 
542 bool VerifyAnyUniqueAliases(flatbuffers::Verifier &verifier, const void *obj, AnyUniqueAliases type);
543 bool VerifyAnyUniqueAliasesVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
544 
545 enum AnyAmbiguousAliases : uint8_t {
546   AnyAmbiguousAliases_NONE = 0,
547   AnyAmbiguousAliases_M1 = 1,
548   AnyAmbiguousAliases_M2 = 2,
549   AnyAmbiguousAliases_M3 = 3,
550   AnyAmbiguousAliases_MIN = AnyAmbiguousAliases_NONE,
551   AnyAmbiguousAliases_MAX = AnyAmbiguousAliases_M3
552 };
553 
554 inline const AnyAmbiguousAliases (&EnumValuesAnyAmbiguousAliases())[4] {
555   static const AnyAmbiguousAliases values[] = {
556     AnyAmbiguousAliases_NONE,
557     AnyAmbiguousAliases_M1,
558     AnyAmbiguousAliases_M2,
559     AnyAmbiguousAliases_M3
560   };
561   return values;
562 }
563 
564 inline const char * const *EnumNamesAnyAmbiguousAliases() {
565   static const char * const names[5] = {
566     "NONE",
567     "M1",
568     "M2",
569     "M3",
570     nullptr
571   };
572   return names;
573 }
574 
575 inline const char *EnumNameAnyAmbiguousAliases(AnyAmbiguousAliases e) {
576   if (flatbuffers::IsOutRange(e, AnyAmbiguousAliases_NONE, AnyAmbiguousAliases_M3)) return "";
577   const size_t index = static_cast<size_t>(e);
578   return EnumNamesAnyAmbiguousAliases()[index];
579 }
580 
581 struct AnyAmbiguousAliasesUnion {
582   AnyAmbiguousAliases type;
583   void *value;
584 
585   AnyAmbiguousAliasesUnion() : type(AnyAmbiguousAliases_NONE), value(nullptr) {}
586   AnyAmbiguousAliasesUnion(AnyAmbiguousAliasesUnion&& u) FLATBUFFERS_NOEXCEPT :
587     type(AnyAmbiguousAliases_NONE), value(nullptr)
588     { std::swap(type, u.type); std::swap(value, u.value); }
589   AnyAmbiguousAliasesUnion(const AnyAmbiguousAliasesUnion &);
590   AnyAmbiguousAliasesUnion &operator=(const AnyAmbiguousAliasesUnion &u)
591     { AnyAmbiguousAliasesUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
592   AnyAmbiguousAliasesUnion &operator=(AnyAmbiguousAliasesUnion &&u) FLATBUFFERS_NOEXCEPT
593     { std::swap(type, u.type); std::swap(value, u.value); return *this; }
594   ~AnyAmbiguousAliasesUnion() { Reset(); }
595 
596   void Reset();
597 
598   static void *UnPack(const void *obj, AnyAmbiguousAliases type, const flatbuffers::resolver_function_t *resolver);
599   flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
600 
601   MyGame::Example::MonsterT *AsM1() {
602     return type == AnyAmbiguousAliases_M1 ?
603       reinterpret_cast<MyGame::Example::MonsterT *>(value) : nullptr;
604   }
605   const MyGame::Example::MonsterT *AsM1() const {
606     return type == AnyAmbiguousAliases_M1 ?
607       reinterpret_cast<const MyGame::Example::MonsterT *>(value) : nullptr;
608   }
609   MyGame::Example::MonsterT *AsM2() {
610     return type == AnyAmbiguousAliases_M2 ?
611       reinterpret_cast<MyGame::Example::MonsterT *>(value) : nullptr;
612   }
613   const MyGame::Example::MonsterT *AsM2() const {
614     return type == AnyAmbiguousAliases_M2 ?
615       reinterpret_cast<const MyGame::Example::MonsterT *>(value) : nullptr;
616   }
617   MyGame::Example::MonsterT *AsM3() {
618     return type == AnyAmbiguousAliases_M3 ?
619       reinterpret_cast<MyGame::Example::MonsterT *>(value) : nullptr;
620   }
621   const MyGame::Example::MonsterT *AsM3() const {
622     return type == AnyAmbiguousAliases_M3 ?
623       reinterpret_cast<const MyGame::Example::MonsterT *>(value) : nullptr;
624   }
625 };
626 
627 
628 inline bool operator==(const AnyAmbiguousAliasesUnion &lhs, const AnyAmbiguousAliasesUnion &rhs) {
629   if (lhs.type != rhs.type) return false;
630   switch (lhs.type) {
631     case AnyAmbiguousAliases_NONE: {
632       return true;
633     }
634     case AnyAmbiguousAliases_M1: {
635       return *(reinterpret_cast<const MyGame::Example::MonsterT *>(lhs.value)) ==
636              *(reinterpret_cast<const MyGame::Example::MonsterT *>(rhs.value));
637     }
638     case AnyAmbiguousAliases_M2: {
639       return *(reinterpret_cast<const MyGame::Example::MonsterT *>(lhs.value)) ==
640              *(reinterpret_cast<const MyGame::Example::MonsterT *>(rhs.value));
641     }
642     case AnyAmbiguousAliases_M3: {
643       return *(reinterpret_cast<const MyGame::Example::MonsterT *>(lhs.value)) ==
644              *(reinterpret_cast<const MyGame::Example::MonsterT *>(rhs.value));
645     }
646     default: {
647       return false;
648     }
649   }
650 }
651 
652 inline bool operator!=(const AnyAmbiguousAliasesUnion &lhs, const AnyAmbiguousAliasesUnion &rhs) {
653     return !(lhs == rhs);
654 }
655 
656 bool VerifyAnyAmbiguousAliases(flatbuffers::Verifier &verifier, const void *obj, AnyAmbiguousAliases type);
657 bool VerifyAnyAmbiguousAliasesVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
658 
659 FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(2) Test FLATBUFFERS_FINAL_CLASS {
660  private:
661   int16_t a_;
662   int8_t b_;
663   int8_t padding0__;
664 
665  public:
666   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
667     return TestTypeTable();
668   }
669   Test()
670       : a_(0),
671         b_(0),
672         padding0__(0) {
673     (void)padding0__;
674   }
675   Test(int16_t _a, int8_t _b)
676       : a_(flatbuffers::EndianScalar(_a)),
677         b_(flatbuffers::EndianScalar(_b)),
678         padding0__(0) {
679     (void)padding0__;
680   }
681   int16_t a() const {
682     return flatbuffers::EndianScalar(a_);
683   }
684   void mutate_a(int16_t _a) {
685     flatbuffers::WriteScalar(&a_, _a);
686   }
687   int8_t b() const {
688     return flatbuffers::EndianScalar(b_);
689   }
690   void mutate_b(int8_t _b) {
691     flatbuffers::WriteScalar(&b_, _b);
692   }
693 };
694 FLATBUFFERS_STRUCT_END(Test, 4);
695 
696 inline bool operator==(const Test &lhs, const Test &rhs) {
697   return
698       (lhs.a() == rhs.a()) &&
699       (lhs.b() == rhs.b());
700 }
701 
702 inline bool operator!=(const Test &lhs, const Test &rhs) {
703     return !(lhs == rhs);
704 }
705 
706 
707 FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(8) Vec3 FLATBUFFERS_FINAL_CLASS {
708  private:
709   float x_;
710   float y_;
711   float z_;
712   int32_t padding0__;
713   double test1_;
714   uint8_t test2_;
715   int8_t padding1__;
716   MyGame::Example::Test test3_;
717   int16_t padding2__;
718 
719  public:
720   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
721     return Vec3TypeTable();
722   }
723   Vec3()
724       : x_(0),
725         y_(0),
726         z_(0),
727         padding0__(0),
728         test1_(0),
729         test2_(0),
730         padding1__(0),
731         test3_(),
732         padding2__(0) {
733     (void)padding0__;
734     (void)padding1__;
735     (void)padding2__;
736   }
737   Vec3(float _x, float _y, float _z, double _test1, MyGame::Example::Color _test2, const MyGame::Example::Test &_test3)
738       : x_(flatbuffers::EndianScalar(_x)),
739         y_(flatbuffers::EndianScalar(_y)),
740         z_(flatbuffers::EndianScalar(_z)),
741         padding0__(0),
742         test1_(flatbuffers::EndianScalar(_test1)),
743         test2_(flatbuffers::EndianScalar(static_cast<uint8_t>(_test2))),
744         padding1__(0),
745         test3_(_test3),
746         padding2__(0) {
747     (void)padding0__;
748     (void)padding1__;
749     (void)padding2__;
750   }
751   float x() const {
752     return flatbuffers::EndianScalar(x_);
753   }
754   void mutate_x(float _x) {
755     flatbuffers::WriteScalar(&x_, _x);
756   }
757   float y() const {
758     return flatbuffers::EndianScalar(y_);
759   }
760   void mutate_y(float _y) {
761     flatbuffers::WriteScalar(&y_, _y);
762   }
763   float z() const {
764     return flatbuffers::EndianScalar(z_);
765   }
766   void mutate_z(float _z) {
767     flatbuffers::WriteScalar(&z_, _z);
768   }
769   double test1() const {
770     return flatbuffers::EndianScalar(test1_);
771   }
772   void mutate_test1(double _test1) {
773     flatbuffers::WriteScalar(&test1_, _test1);
774   }
775   MyGame::Example::Color test2() const {
776     return static_cast<MyGame::Example::Color>(flatbuffers::EndianScalar(test2_));
777   }
778   void mutate_test2(MyGame::Example::Color _test2) {
779     flatbuffers::WriteScalar(&test2_, static_cast<uint8_t>(_test2));
780   }
781   const MyGame::Example::Test &test3() const {
782     return test3_;
783   }
784   MyGame::Example::Test &mutable_test3() {
785     return test3_;
786   }
787 };
788 FLATBUFFERS_STRUCT_END(Vec3, 32);
789 
790 inline bool operator==(const Vec3 &lhs, const Vec3 &rhs) {
791   return
792       (lhs.x() == rhs.x()) &&
793       (lhs.y() == rhs.y()) &&
794       (lhs.z() == rhs.z()) &&
795       (lhs.test1() == rhs.test1()) &&
796       (lhs.test2() == rhs.test2()) &&
797       (lhs.test3() == rhs.test3());
798 }
799 
800 inline bool operator!=(const Vec3 &lhs, const Vec3 &rhs) {
801     return !(lhs == rhs);
802 }
803 
804 
805 FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Ability FLATBUFFERS_FINAL_CLASS {
806  private:
807   uint32_t id_;
808   uint32_t distance_;
809 
810  public:
811   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
812     return AbilityTypeTable();
813   }
814   Ability()
815       : id_(0),
816         distance_(0) {
817   }
818   Ability(uint32_t _id, uint32_t _distance)
819       : id_(flatbuffers::EndianScalar(_id)),
820         distance_(flatbuffers::EndianScalar(_distance)) {
821   }
822   uint32_t id() const {
823     return flatbuffers::EndianScalar(id_);
824   }
825   void mutate_id(uint32_t _id) {
826     flatbuffers::WriteScalar(&id_, _id);
827   }
828   bool KeyCompareLessThan(const Ability *o) const {
829     return id() < o->id();
830   }
831   int KeyCompareWithValue(uint32_t _id) const {
832     return static_cast<int>(id() > _id) - static_cast<int>(id() < _id);
833   }
834   uint32_t distance() const {
835     return flatbuffers::EndianScalar(distance_);
836   }
837   void mutate_distance(uint32_t _distance) {
838     flatbuffers::WriteScalar(&distance_, _distance);
839   }
840 };
841 FLATBUFFERS_STRUCT_END(Ability, 8);
842 
843 inline bool operator==(const Ability &lhs, const Ability &rhs) {
844   return
845       (lhs.id() == rhs.id()) &&
846       (lhs.distance() == rhs.distance());
847 }
848 
849 inline bool operator!=(const Ability &lhs, const Ability &rhs) {
850     return !(lhs == rhs);
851 }
852 
853 
854 FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) StructOfStructs FLATBUFFERS_FINAL_CLASS {
855  private:
856   MyGame::Example::Ability a_;
857   MyGame::Example::Test b_;
858   MyGame::Example::Ability c_;
859 
860  public:
861   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
862     return StructOfStructsTypeTable();
863   }
864   StructOfStructs()
865       : a_(),
866         b_(),
867         c_() {
868   }
869   StructOfStructs(const MyGame::Example::Ability &_a, const MyGame::Example::Test &_b, const MyGame::Example::Ability &_c)
870       : a_(_a),
871         b_(_b),
872         c_(_c) {
873   }
874   const MyGame::Example::Ability &a() const {
875     return a_;
876   }
877   MyGame::Example::Ability &mutable_a() {
878     return a_;
879   }
880   const MyGame::Example::Test &b() const {
881     return b_;
882   }
883   MyGame::Example::Test &mutable_b() {
884     return b_;
885   }
886   const MyGame::Example::Ability &c() const {
887     return c_;
888   }
889   MyGame::Example::Ability &mutable_c() {
890     return c_;
891   }
892 };
893 FLATBUFFERS_STRUCT_END(StructOfStructs, 20);
894 
895 inline bool operator==(const StructOfStructs &lhs, const StructOfStructs &rhs) {
896   return
897       (lhs.a() == rhs.a()) &&
898       (lhs.b() == rhs.b()) &&
899       (lhs.c() == rhs.c());
900 }
901 
902 inline bool operator!=(const StructOfStructs &lhs, const StructOfStructs &rhs) {
903     return !(lhs == rhs);
904 }
905 
906 
907 FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) StructOfStructsOfStructs FLATBUFFERS_FINAL_CLASS {
908  private:
909   MyGame::Example::StructOfStructs a_;
910 
911  public:
912   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
913     return StructOfStructsOfStructsTypeTable();
914   }
915   StructOfStructsOfStructs()
916       : a_() {
917   }
918   StructOfStructsOfStructs(const MyGame::Example::StructOfStructs &_a)
919       : a_(_a) {
920   }
921   const MyGame::Example::StructOfStructs &a() const {
922     return a_;
923   }
924   MyGame::Example::StructOfStructs &mutable_a() {
925     return a_;
926   }
927 };
928 FLATBUFFERS_STRUCT_END(StructOfStructsOfStructs, 20);
929 
930 inline bool operator==(const StructOfStructsOfStructs &lhs, const StructOfStructsOfStructs &rhs) {
931   return
932       (lhs.a() == rhs.a());
933 }
934 
935 inline bool operator!=(const StructOfStructsOfStructs &lhs, const StructOfStructsOfStructs &rhs) {
936     return !(lhs == rhs);
937 }
938 
939 
940 }  // namespace Example
941 
942 struct InParentNamespaceT : public flatbuffers::NativeTable {
943   typedef InParentNamespace TableType;
944 };
945 
946 struct InParentNamespace FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
947   typedef InParentNamespaceT NativeTableType;
948   typedef InParentNamespaceBuilder Builder;
949   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
950     return InParentNamespaceTypeTable();
951   }
952   bool Verify(flatbuffers::Verifier &verifier) const {
953     return VerifyTableStart(verifier) &&
954            verifier.EndTable();
955   }
956   InParentNamespaceT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
957   void UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
958   static flatbuffers::Offset<InParentNamespace> Pack(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
959 };
960 
961 struct InParentNamespaceBuilder {
962   typedef InParentNamespace Table;
963   flatbuffers::FlatBufferBuilder &fbb_;
964   flatbuffers::uoffset_t start_;
965   explicit InParentNamespaceBuilder(flatbuffers::FlatBufferBuilder &_fbb)
966         : fbb_(_fbb) {
967     start_ = fbb_.StartTable();
968   }
969   flatbuffers::Offset<InParentNamespace> Finish() {
970     const auto end = fbb_.EndTable(start_);
971     auto o = flatbuffers::Offset<InParentNamespace>(end);
972     return o;
973   }
974 };
975 
976 inline flatbuffers::Offset<InParentNamespace> CreateInParentNamespace(
977     flatbuffers::FlatBufferBuilder &_fbb) {
978   InParentNamespaceBuilder builder_(_fbb);
979   return builder_.Finish();
980 }
981 
982 flatbuffers::Offset<InParentNamespace> CreateInParentNamespace(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
983 
984 namespace Example2 {
985 
986 struct MonsterT : public flatbuffers::NativeTable {
987   typedef Monster TableType;
988 };
989 
990 struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
991   typedef MonsterT NativeTableType;
992   typedef MonsterBuilder Builder;
993   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
994     return MonsterTypeTable();
995   }
996   bool Verify(flatbuffers::Verifier &verifier) const {
997     return VerifyTableStart(verifier) &&
998            verifier.EndTable();
999   }
1000   MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1001   void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1002   static flatbuffers::Offset<Monster> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1003 };
1004 
1005 struct MonsterBuilder {
1006   typedef Monster Table;
1007   flatbuffers::FlatBufferBuilder &fbb_;
1008   flatbuffers::uoffset_t start_;
1009   explicit MonsterBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1010         : fbb_(_fbb) {
1011     start_ = fbb_.StartTable();
1012   }
1013   flatbuffers::Offset<Monster> Finish() {
1014     const auto end = fbb_.EndTable(start_);
1015     auto o = flatbuffers::Offset<Monster>(end);
1016     return o;
1017   }
1018 };
1019 
1020 inline flatbuffers::Offset<Monster> CreateMonster(
1021     flatbuffers::FlatBufferBuilder &_fbb) {
1022   MonsterBuilder builder_(_fbb);
1023   return builder_.Finish();
1024 }
1025 
1026 flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1027 
1028 }  // namespace Example2
1029 
1030 namespace Example {
1031 
1032 struct TestSimpleTableWithEnumT : public flatbuffers::NativeTable {
1033   typedef TestSimpleTableWithEnum TableType;
1034   MyGame::Example::Color color = MyGame::Example::Color_Green;
1035 };
1036 
1037 struct TestSimpleTableWithEnum FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1038   typedef TestSimpleTableWithEnumT NativeTableType;
1039   typedef TestSimpleTableWithEnumBuilder Builder;
1040   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
1041     return TestSimpleTableWithEnumTypeTable();
1042   }
1043   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1044     VT_COLOR = 4
1045   };
1046   MyGame::Example::Color color() const {
1047     return static_cast<MyGame::Example::Color>(GetField<uint8_t>(VT_COLOR, 2));
1048   }
1049   bool mutate_color(MyGame::Example::Color _color = static_cast<MyGame::Example::Color>(2)) {
1050     return SetField<uint8_t>(VT_COLOR, static_cast<uint8_t>(_color), 2);
1051   }
1052   bool Verify(flatbuffers::Verifier &verifier) const {
1053     return VerifyTableStart(verifier) &&
1054            VerifyField<uint8_t>(verifier, VT_COLOR, 1) &&
1055            verifier.EndTable();
1056   }
1057   TestSimpleTableWithEnumT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1058   void UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1059   static flatbuffers::Offset<TestSimpleTableWithEnum> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TestSimpleTableWithEnumT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1060 };
1061 
1062 struct TestSimpleTableWithEnumBuilder {
1063   typedef TestSimpleTableWithEnum Table;
1064   flatbuffers::FlatBufferBuilder &fbb_;
1065   flatbuffers::uoffset_t start_;
1066   void add_color(MyGame::Example::Color color) {
1067     fbb_.AddElement<uint8_t>(TestSimpleTableWithEnum::VT_COLOR, static_cast<uint8_t>(color), 2);
1068   }
1069   explicit TestSimpleTableWithEnumBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1070         : fbb_(_fbb) {
1071     start_ = fbb_.StartTable();
1072   }
1073   flatbuffers::Offset<TestSimpleTableWithEnum> Finish() {
1074     const auto end = fbb_.EndTable(start_);
1075     auto o = flatbuffers::Offset<TestSimpleTableWithEnum>(end);
1076     return o;
1077   }
1078 };
1079 
1080 inline flatbuffers::Offset<TestSimpleTableWithEnum> CreateTestSimpleTableWithEnum(
1081     flatbuffers::FlatBufferBuilder &_fbb,
1082     MyGame::Example::Color color = MyGame::Example::Color_Green) {
1083   TestSimpleTableWithEnumBuilder builder_(_fbb);
1084   builder_.add_color(color);
1085   return builder_.Finish();
1086 }
1087 
1088 flatbuffers::Offset<TestSimpleTableWithEnum> CreateTestSimpleTableWithEnum(flatbuffers::FlatBufferBuilder &_fbb, const TestSimpleTableWithEnumT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1089 
1090 struct StatT : public flatbuffers::NativeTable {
1091   typedef Stat TableType;
1092   std::string id{};
1093   int64_t val = 0;
1094   uint16_t count = 0;
1095 };
1096 
1097 struct Stat FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1098   typedef StatT NativeTableType;
1099   typedef StatBuilder Builder;
1100   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
1101     return StatTypeTable();
1102   }
1103   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1104     VT_ID = 4,
1105     VT_VAL = 6,
1106     VT_COUNT = 8
1107   };
1108   const flatbuffers::String *id() const {
1109     return GetPointer<const flatbuffers::String *>(VT_ID);
1110   }
1111   flatbuffers::String *mutable_id() {
1112     return GetPointer<flatbuffers::String *>(VT_ID);
1113   }
1114   int64_t val() const {
1115     return GetField<int64_t>(VT_VAL, 0);
1116   }
1117   bool mutate_val(int64_t _val = 0) {
1118     return SetField<int64_t>(VT_VAL, _val, 0);
1119   }
1120   uint16_t count() const {
1121     return GetField<uint16_t>(VT_COUNT, 0);
1122   }
1123   bool mutate_count(uint16_t _count = 0) {
1124     return SetField<uint16_t>(VT_COUNT, _count, 0);
1125   }
1126   bool KeyCompareLessThan(const Stat *o) const {
1127     return count() < o->count();
1128   }
1129   int KeyCompareWithValue(uint16_t _count) const {
1130     return static_cast<int>(count() > _count) - static_cast<int>(count() < _count);
1131   }
1132   bool Verify(flatbuffers::Verifier &verifier) const {
1133     return VerifyTableStart(verifier) &&
1134            VerifyOffset(verifier, VT_ID) &&
1135            verifier.VerifyString(id()) &&
1136            VerifyField<int64_t>(verifier, VT_VAL, 8) &&
1137            VerifyField<uint16_t>(verifier, VT_COUNT, 2) &&
1138            verifier.EndTable();
1139   }
1140   StatT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1141   void UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1142   static flatbuffers::Offset<Stat> Pack(flatbuffers::FlatBufferBuilder &_fbb, const StatT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1143 };
1144 
1145 struct StatBuilder {
1146   typedef Stat Table;
1147   flatbuffers::FlatBufferBuilder &fbb_;
1148   flatbuffers::uoffset_t start_;
1149   void add_id(flatbuffers::Offset<flatbuffers::String> id) {
1150     fbb_.AddOffset(Stat::VT_ID, id);
1151   }
1152   void add_val(int64_t val) {
1153     fbb_.AddElement<int64_t>(Stat::VT_VAL, val, 0);
1154   }
1155   void add_count(uint16_t count) {
1156     fbb_.AddElement<uint16_t>(Stat::VT_COUNT, count, 0);
1157   }
1158   explicit StatBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1159         : fbb_(_fbb) {
1160     start_ = fbb_.StartTable();
1161   }
1162   flatbuffers::Offset<Stat> Finish() {
1163     const auto end = fbb_.EndTable(start_);
1164     auto o = flatbuffers::Offset<Stat>(end);
1165     return o;
1166   }
1167 };
1168 
1169 inline flatbuffers::Offset<Stat> CreateStat(
1170     flatbuffers::FlatBufferBuilder &_fbb,
1171     flatbuffers::Offset<flatbuffers::String> id = 0,
1172     int64_t val = 0,
1173     uint16_t count = 0) {
1174   StatBuilder builder_(_fbb);
1175   builder_.add_val(val);
1176   builder_.add_id(id);
1177   builder_.add_count(count);
1178   return builder_.Finish();
1179 }
1180 
1181 inline flatbuffers::Offset<Stat> CreateStatDirect(
1182     flatbuffers::FlatBufferBuilder &_fbb,
1183     const char *id = nullptr,
1184     int64_t val = 0,
1185     uint16_t count = 0) {
1186   auto id__ = id ? _fbb.CreateString(id) : 0;
1187   return MyGame::Example::CreateStat(
1188       _fbb,
1189       id__,
1190       val,
1191       count);
1192 }
1193 
1194 flatbuffers::Offset<Stat> CreateStat(flatbuffers::FlatBufferBuilder &_fbb, const StatT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1195 
1196 struct ReferrableT : public flatbuffers::NativeTable {
1197   typedef Referrable TableType;
1198   uint64_t id = 0;
1199 };
1200 
1201 struct Referrable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1202   typedef ReferrableT NativeTableType;
1203   typedef ReferrableBuilder Builder;
1204   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
1205     return ReferrableTypeTable();
1206   }
1207   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1208     VT_ID = 4
1209   };
1210   uint64_t id() const {
1211     return GetField<uint64_t>(VT_ID, 0);
1212   }
1213   bool mutate_id(uint64_t _id = 0) {
1214     return SetField<uint64_t>(VT_ID, _id, 0);
1215   }
1216   bool KeyCompareLessThan(const Referrable *o) const {
1217     return id() < o->id();
1218   }
1219   int KeyCompareWithValue(uint64_t _id) const {
1220     return static_cast<int>(id() > _id) - static_cast<int>(id() < _id);
1221   }
1222   bool Verify(flatbuffers::Verifier &verifier) const {
1223     return VerifyTableStart(verifier) &&
1224            VerifyField<uint64_t>(verifier, VT_ID, 8) &&
1225            verifier.EndTable();
1226   }
1227   ReferrableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1228   void UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1229   static flatbuffers::Offset<Referrable> Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReferrableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1230 };
1231 
1232 struct ReferrableBuilder {
1233   typedef Referrable Table;
1234   flatbuffers::FlatBufferBuilder &fbb_;
1235   flatbuffers::uoffset_t start_;
1236   void add_id(uint64_t id) {
1237     fbb_.AddElement<uint64_t>(Referrable::VT_ID, id, 0);
1238   }
1239   explicit ReferrableBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1240         : fbb_(_fbb) {
1241     start_ = fbb_.StartTable();
1242   }
1243   flatbuffers::Offset<Referrable> Finish() {
1244     const auto end = fbb_.EndTable(start_);
1245     auto o = flatbuffers::Offset<Referrable>(end);
1246     return o;
1247   }
1248 };
1249 
1250 inline flatbuffers::Offset<Referrable> CreateReferrable(
1251     flatbuffers::FlatBufferBuilder &_fbb,
1252     uint64_t id = 0) {
1253   ReferrableBuilder builder_(_fbb);
1254   builder_.add_id(id);
1255   return builder_.Finish();
1256 }
1257 
1258 flatbuffers::Offset<Referrable> CreateReferrable(flatbuffers::FlatBufferBuilder &_fbb, const ReferrableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1259 
1260 struct MonsterT : public flatbuffers::NativeTable {
1261   typedef Monster TableType;
1262   flatbuffers::unique_ptr<MyGame::Example::Vec3> pos{};
1263   int16_t mana = 150;
1264   int16_t hp = 100;
1265   std::string name{};
1266   std::vector<uint8_t> inventory{};
1267   MyGame::Example::Color color = MyGame::Example::Color_Blue;
1268   MyGame::Example::AnyUnion test{};
1269   std::vector<MyGame::Example::Test> test4{};
1270   std::vector<std::string> testarrayofstring{};
1271   std::vector<flatbuffers::unique_ptr<MyGame::Example::MonsterT>> testarrayoftables{};
1272   flatbuffers::unique_ptr<MyGame::Example::MonsterT> enemy{};
1273   std::vector<uint8_t> testnestedflatbuffer{};
1274   flatbuffers::unique_ptr<MyGame::Example::StatT> testempty{};
1275   bool testbool = false;
1276   int32_t testhashs32_fnv1 = 0;
1277   uint32_t testhashu32_fnv1 = 0;
1278   int64_t testhashs64_fnv1 = 0;
1279   uint64_t testhashu64_fnv1 = 0;
1280   int32_t testhashs32_fnv1a = 0;
1281   Stat *testhashu32_fnv1a = nullptr;
1282   int64_t testhashs64_fnv1a = 0;
1283   uint64_t testhashu64_fnv1a = 0;
1284   std::vector<bool> testarrayofbools{};
1285   float testf = 3.14159f;
1286   float testf2 = 3.0f;
1287   float testf3 = 0.0f;
1288   std::vector<std::string> testarrayofstring2{};
1289   std::vector<MyGame::Example::Ability> testarrayofsortedstruct{};
1290   std::vector<uint8_t> flex{};
1291   std::vector<MyGame::Example::Test> test5{};
1292   std::vector<int64_t> vector_of_longs{};
1293   std::vector<double> vector_of_doubles{};
1294   flatbuffers::unique_ptr<MyGame::InParentNamespaceT> parent_namespace_test{};
1295   std::vector<flatbuffers::unique_ptr<MyGame::Example::ReferrableT>> vector_of_referrables{};
1296   ReferrableT *single_weak_reference = nullptr;
1297   std::vector<ReferrableT *> vector_of_weak_references{};
1298   std::vector<flatbuffers::unique_ptr<MyGame::Example::ReferrableT>> vector_of_strong_referrables{};
1299   ReferrableT *co_owning_reference = nullptr;
1300   std::vector<flatbuffers::unique_ptr<ReferrableT>> vector_of_co_owning_references{};
1301   ReferrableT *non_owning_reference = nullptr;
1302   std::vector<ReferrableT *> vector_of_non_owning_references{};
1303   MyGame::Example::AnyUniqueAliasesUnion any_unique{};
1304   MyGame::Example::AnyAmbiguousAliasesUnion any_ambiguous{};
1305   std::vector<MyGame::Example::Color> vector_of_enums{};
1306   MyGame::Example::Race signed_enum = MyGame::Example::Race_None;
1307   std::vector<uint8_t> testrequirednestedflatbuffer{};
1308   std::vector<flatbuffers::unique_ptr<MyGame::Example::StatT>> scalar_key_sorted_tables{};
1309   MyGame::Example::Test native_inline{};
1310   MyGame::Example::LongEnum long_enum_non_enum_default = static_cast<MyGame::Example::LongEnum>(0);
1311   MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum_LongOne;
1312   MonsterT() = default;
1313   MonsterT(const MonsterT &o);
1314   MonsterT(MonsterT&&) FLATBUFFERS_NOEXCEPT = default;
1315   MonsterT &operator=(MonsterT o) FLATBUFFERS_NOEXCEPT;
1316 };
1317 
1318 /// an example documentation comment: "monster object"
1319 struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1320   typedef MonsterT NativeTableType;
1321   typedef MonsterBuilder Builder;
1322   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
1323     return MonsterTypeTable();
1324   }
1325   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1326     VT_POS = 4,
1327     VT_MANA = 6,
1328     VT_HP = 8,
1329     VT_NAME = 10,
1330     VT_INVENTORY = 14,
1331     VT_COLOR = 16,
1332     VT_TEST_TYPE = 18,
1333     VT_TEST = 20,
1334     VT_TEST4 = 22,
1335     VT_TESTARRAYOFSTRING = 24,
1336     VT_TESTARRAYOFTABLES = 26,
1337     VT_ENEMY = 28,
1338     VT_TESTNESTEDFLATBUFFER = 30,
1339     VT_TESTEMPTY = 32,
1340     VT_TESTBOOL = 34,
1341     VT_TESTHASHS32_FNV1 = 36,
1342     VT_TESTHASHU32_FNV1 = 38,
1343     VT_TESTHASHS64_FNV1 = 40,
1344     VT_TESTHASHU64_FNV1 = 42,
1345     VT_TESTHASHS32_FNV1A = 44,
1346     VT_TESTHASHU32_FNV1A = 46,
1347     VT_TESTHASHS64_FNV1A = 48,
1348     VT_TESTHASHU64_FNV1A = 50,
1349     VT_TESTARRAYOFBOOLS = 52,
1350     VT_TESTF = 54,
1351     VT_TESTF2 = 56,
1352     VT_TESTF3 = 58,
1353     VT_TESTARRAYOFSTRING2 = 60,
1354     VT_TESTARRAYOFSORTEDSTRUCT = 62,
1355     VT_FLEX = 64,
1356     VT_TEST5 = 66,
1357     VT_VECTOR_OF_LONGS = 68,
1358     VT_VECTOR_OF_DOUBLES = 70,
1359     VT_PARENT_NAMESPACE_TEST = 72,
1360     VT_VECTOR_OF_REFERRABLES = 74,
1361     VT_SINGLE_WEAK_REFERENCE = 76,
1362     VT_VECTOR_OF_WEAK_REFERENCES = 78,
1363     VT_VECTOR_OF_STRONG_REFERRABLES = 80,
1364     VT_CO_OWNING_REFERENCE = 82,
1365     VT_VECTOR_OF_CO_OWNING_REFERENCES = 84,
1366     VT_NON_OWNING_REFERENCE = 86,
1367     VT_VECTOR_OF_NON_OWNING_REFERENCES = 88,
1368     VT_ANY_UNIQUE_TYPE = 90,
1369     VT_ANY_UNIQUE = 92,
1370     VT_ANY_AMBIGUOUS_TYPE = 94,
1371     VT_ANY_AMBIGUOUS = 96,
1372     VT_VECTOR_OF_ENUMS = 98,
1373     VT_SIGNED_ENUM = 100,
1374     VT_TESTREQUIREDNESTEDFLATBUFFER = 102,
1375     VT_SCALAR_KEY_SORTED_TABLES = 104,
1376     VT_NATIVE_INLINE = 106,
1377     VT_LONG_ENUM_NON_ENUM_DEFAULT = 108,
1378     VT_LONG_ENUM_NORMAL_DEFAULT = 110
1379   };
1380   const MyGame::Example::Vec3 *pos() const {
1381     return GetStruct<const MyGame::Example::Vec3 *>(VT_POS);
1382   }
1383   MyGame::Example::Vec3 *mutable_pos() {
1384     return GetStruct<MyGame::Example::Vec3 *>(VT_POS);
1385   }
1386   int16_t mana() const {
1387     return GetField<int16_t>(VT_MANA, 150);
1388   }
1389   bool mutate_mana(int16_t _mana = 150) {
1390     return SetField<int16_t>(VT_MANA, _mana, 150);
1391   }
1392   int16_t hp() const {
1393     return GetField<int16_t>(VT_HP, 100);
1394   }
1395   bool mutate_hp(int16_t _hp = 100) {
1396     return SetField<int16_t>(VT_HP, _hp, 100);
1397   }
1398   const flatbuffers::String *name() const {
1399     return GetPointer<const flatbuffers::String *>(VT_NAME);
1400   }
1401   flatbuffers::String *mutable_name() {
1402     return GetPointer<flatbuffers::String *>(VT_NAME);
1403   }
1404   bool KeyCompareLessThan(const Monster *o) const {
1405     return *name() < *o->name();
1406   }
1407   int KeyCompareWithValue(const char *_name) const {
1408     return strcmp(name()->c_str(), _name);
1409   }
1410   const flatbuffers::Vector<uint8_t> *inventory() const {
1411     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_INVENTORY);
1412   }
1413   flatbuffers::Vector<uint8_t> *mutable_inventory() {
1414     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_INVENTORY);
1415   }
1416   MyGame::Example::Color color() const {
1417     return static_cast<MyGame::Example::Color>(GetField<uint8_t>(VT_COLOR, 8));
1418   }
1419   bool mutate_color(MyGame::Example::Color _color = static_cast<MyGame::Example::Color>(8)) {
1420     return SetField<uint8_t>(VT_COLOR, static_cast<uint8_t>(_color), 8);
1421   }
1422   MyGame::Example::Any test_type() const {
1423     return static_cast<MyGame::Example::Any>(GetField<uint8_t>(VT_TEST_TYPE, 0));
1424   }
1425   const void *test() const {
1426     return GetPointer<const void *>(VT_TEST);
1427   }
1428   template<typename T> const T *test_as() const;
1429   const MyGame::Example::Monster *test_as_Monster() const {
1430     return test_type() == MyGame::Example::Any_Monster ? static_cast<const MyGame::Example::Monster *>(test()) : nullptr;
1431   }
1432   const MyGame::Example::TestSimpleTableWithEnum *test_as_TestSimpleTableWithEnum() const {
1433     return test_type() == MyGame::Example::Any_TestSimpleTableWithEnum ? static_cast<const MyGame::Example::TestSimpleTableWithEnum *>(test()) : nullptr;
1434   }
1435   const MyGame::Example2::Monster *test_as_MyGame_Example2_Monster() const {
1436     return test_type() == MyGame::Example::Any_MyGame_Example2_Monster ? static_cast<const MyGame::Example2::Monster *>(test()) : nullptr;
1437   }
1438   void *mutable_test() {
1439     return GetPointer<void *>(VT_TEST);
1440   }
1441   const flatbuffers::Vector<const MyGame::Example::Test *> *test4() const {
1442     return GetPointer<const flatbuffers::Vector<const MyGame::Example::Test *> *>(VT_TEST4);
1443   }
1444   flatbuffers::Vector<const MyGame::Example::Test *> *mutable_test4() {
1445     return GetPointer<flatbuffers::Vector<const MyGame::Example::Test *> *>(VT_TEST4);
1446   }
1447   const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *testarrayofstring() const {
1448     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_TESTARRAYOFSTRING);
1449   }
1450   flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *mutable_testarrayofstring() {
1451     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_TESTARRAYOFSTRING);
1452   }
1453   /// an example documentation comment: this will end up in the generated code
1454   /// multiline too
1455   const flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Monster>> *testarrayoftables() const {
1456     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Monster>> *>(VT_TESTARRAYOFTABLES);
1457   }
1458   flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Monster>> *mutable_testarrayoftables() {
1459     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Monster>> *>(VT_TESTARRAYOFTABLES);
1460   }
1461   const MyGame::Example::Monster *enemy() const {
1462     return GetPointer<const MyGame::Example::Monster *>(VT_ENEMY);
1463   }
1464   MyGame::Example::Monster *mutable_enemy() {
1465     return GetPointer<MyGame::Example::Monster *>(VT_ENEMY);
1466   }
1467   const flatbuffers::Vector<uint8_t> *testnestedflatbuffer() const {
1468     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_TESTNESTEDFLATBUFFER);
1469   }
1470   flatbuffers::Vector<uint8_t> *mutable_testnestedflatbuffer() {
1471     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_TESTNESTEDFLATBUFFER);
1472   }
1473   const MyGame::Example::Monster *testnestedflatbuffer_nested_root() const {
1474     return flatbuffers::GetRoot<MyGame::Example::Monster>(testnestedflatbuffer()->Data());
1475   }
1476   const MyGame::Example::Stat *testempty() const {
1477     return GetPointer<const MyGame::Example::Stat *>(VT_TESTEMPTY);
1478   }
1479   MyGame::Example::Stat *mutable_testempty() {
1480     return GetPointer<MyGame::Example::Stat *>(VT_TESTEMPTY);
1481   }
1482   bool testbool() const {
1483     return GetField<uint8_t>(VT_TESTBOOL, 0) != 0;
1484   }
1485   bool mutate_testbool(bool _testbool = 0) {
1486     return SetField<uint8_t>(VT_TESTBOOL, static_cast<uint8_t>(_testbool), 0);
1487   }
1488   int32_t testhashs32_fnv1() const {
1489     return GetField<int32_t>(VT_TESTHASHS32_FNV1, 0);
1490   }
1491   bool mutate_testhashs32_fnv1(int32_t _testhashs32_fnv1 = 0) {
1492     return SetField<int32_t>(VT_TESTHASHS32_FNV1, _testhashs32_fnv1, 0);
1493   }
1494   uint32_t testhashu32_fnv1() const {
1495     return GetField<uint32_t>(VT_TESTHASHU32_FNV1, 0);
1496   }
1497   bool mutate_testhashu32_fnv1(uint32_t _testhashu32_fnv1 = 0) {
1498     return SetField<uint32_t>(VT_TESTHASHU32_FNV1, _testhashu32_fnv1, 0);
1499   }
1500   int64_t testhashs64_fnv1() const {
1501     return GetField<int64_t>(VT_TESTHASHS64_FNV1, 0);
1502   }
1503   bool mutate_testhashs64_fnv1(int64_t _testhashs64_fnv1 = 0) {
1504     return SetField<int64_t>(VT_TESTHASHS64_FNV1, _testhashs64_fnv1, 0);
1505   }
1506   uint64_t testhashu64_fnv1() const {
1507     return GetField<uint64_t>(VT_TESTHASHU64_FNV1, 0);
1508   }
1509   bool mutate_testhashu64_fnv1(uint64_t _testhashu64_fnv1 = 0) {
1510     return SetField<uint64_t>(VT_TESTHASHU64_FNV1, _testhashu64_fnv1, 0);
1511   }
1512   int32_t testhashs32_fnv1a() const {
1513     return GetField<int32_t>(VT_TESTHASHS32_FNV1A, 0);
1514   }
1515   bool mutate_testhashs32_fnv1a(int32_t _testhashs32_fnv1a = 0) {
1516     return SetField<int32_t>(VT_TESTHASHS32_FNV1A, _testhashs32_fnv1a, 0);
1517   }
1518   uint32_t testhashu32_fnv1a() const {
1519     return GetField<uint32_t>(VT_TESTHASHU32_FNV1A, 0);
1520   }
1521   bool mutate_testhashu32_fnv1a(uint32_t _testhashu32_fnv1a = 0) {
1522     return SetField<uint32_t>(VT_TESTHASHU32_FNV1A, _testhashu32_fnv1a, 0);
1523   }
1524   int64_t testhashs64_fnv1a() const {
1525     return GetField<int64_t>(VT_TESTHASHS64_FNV1A, 0);
1526   }
1527   bool mutate_testhashs64_fnv1a(int64_t _testhashs64_fnv1a = 0) {
1528     return SetField<int64_t>(VT_TESTHASHS64_FNV1A, _testhashs64_fnv1a, 0);
1529   }
1530   uint64_t testhashu64_fnv1a() const {
1531     return GetField<uint64_t>(VT_TESTHASHU64_FNV1A, 0);
1532   }
1533   bool mutate_testhashu64_fnv1a(uint64_t _testhashu64_fnv1a = 0) {
1534     return SetField<uint64_t>(VT_TESTHASHU64_FNV1A, _testhashu64_fnv1a, 0);
1535   }
1536   const flatbuffers::Vector<uint8_t> *testarrayofbools() const {
1537     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_TESTARRAYOFBOOLS);
1538   }
1539   flatbuffers::Vector<uint8_t> *mutable_testarrayofbools() {
1540     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_TESTARRAYOFBOOLS);
1541   }
1542   float testf() const {
1543     return GetField<float>(VT_TESTF, 3.14159f);
1544   }
1545   bool mutate_testf(float _testf = 3.14159f) {
1546     return SetField<float>(VT_TESTF, _testf, 3.14159f);
1547   }
1548   float testf2() const {
1549     return GetField<float>(VT_TESTF2, 3.0f);
1550   }
1551   bool mutate_testf2(float _testf2 = 3.0f) {
1552     return SetField<float>(VT_TESTF2, _testf2, 3.0f);
1553   }
1554   float testf3() const {
1555     return GetField<float>(VT_TESTF3, 0.0f);
1556   }
1557   bool mutate_testf3(float _testf3 = 0.0f) {
1558     return SetField<float>(VT_TESTF3, _testf3, 0.0f);
1559   }
1560   const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *testarrayofstring2() const {
1561     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_TESTARRAYOFSTRING2);
1562   }
1563   flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *mutable_testarrayofstring2() {
1564     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_TESTARRAYOFSTRING2);
1565   }
1566   const flatbuffers::Vector<const MyGame::Example::Ability *> *testarrayofsortedstruct() const {
1567     return GetPointer<const flatbuffers::Vector<const MyGame::Example::Ability *> *>(VT_TESTARRAYOFSORTEDSTRUCT);
1568   }
1569   flatbuffers::Vector<const MyGame::Example::Ability *> *mutable_testarrayofsortedstruct() {
1570     return GetPointer<flatbuffers::Vector<const MyGame::Example::Ability *> *>(VT_TESTARRAYOFSORTEDSTRUCT);
1571   }
1572   const flatbuffers::Vector<uint8_t> *flex() const {
1573     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_FLEX);
1574   }
1575   flatbuffers::Vector<uint8_t> *mutable_flex() {
1576     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_FLEX);
1577   }
1578   flexbuffers::Reference flex_flexbuffer_root() const {
1579     return flexbuffers::GetRoot(flex()->Data(), flex()->size());
1580   }
1581   const flatbuffers::Vector<const MyGame::Example::Test *> *test5() const {
1582     return GetPointer<const flatbuffers::Vector<const MyGame::Example::Test *> *>(VT_TEST5);
1583   }
1584   flatbuffers::Vector<const MyGame::Example::Test *> *mutable_test5() {
1585     return GetPointer<flatbuffers::Vector<const MyGame::Example::Test *> *>(VT_TEST5);
1586   }
1587   const flatbuffers::Vector<int64_t> *vector_of_longs() const {
1588     return GetPointer<const flatbuffers::Vector<int64_t> *>(VT_VECTOR_OF_LONGS);
1589   }
1590   flatbuffers::Vector<int64_t> *mutable_vector_of_longs() {
1591     return GetPointer<flatbuffers::Vector<int64_t> *>(VT_VECTOR_OF_LONGS);
1592   }
1593   const flatbuffers::Vector<double> *vector_of_doubles() const {
1594     return GetPointer<const flatbuffers::Vector<double> *>(VT_VECTOR_OF_DOUBLES);
1595   }
1596   flatbuffers::Vector<double> *mutable_vector_of_doubles() {
1597     return GetPointer<flatbuffers::Vector<double> *>(VT_VECTOR_OF_DOUBLES);
1598   }
1599   const MyGame::InParentNamespace *parent_namespace_test() const {
1600     return GetPointer<const MyGame::InParentNamespace *>(VT_PARENT_NAMESPACE_TEST);
1601   }
1602   MyGame::InParentNamespace *mutable_parent_namespace_test() {
1603     return GetPointer<MyGame::InParentNamespace *>(VT_PARENT_NAMESPACE_TEST);
1604   }
1605   const flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Referrable>> *vector_of_referrables() const {
1606     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Referrable>> *>(VT_VECTOR_OF_REFERRABLES);
1607   }
1608   flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Referrable>> *mutable_vector_of_referrables() {
1609     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Referrable>> *>(VT_VECTOR_OF_REFERRABLES);
1610   }
1611   uint64_t single_weak_reference() const {
1612     return GetField<uint64_t>(VT_SINGLE_WEAK_REFERENCE, 0);
1613   }
1614   bool mutate_single_weak_reference(uint64_t _single_weak_reference = 0) {
1615     return SetField<uint64_t>(VT_SINGLE_WEAK_REFERENCE, _single_weak_reference, 0);
1616   }
1617   const flatbuffers::Vector<uint64_t> *vector_of_weak_references() const {
1618     return GetPointer<const flatbuffers::Vector<uint64_t> *>(VT_VECTOR_OF_WEAK_REFERENCES);
1619   }
1620   flatbuffers::Vector<uint64_t> *mutable_vector_of_weak_references() {
1621     return GetPointer<flatbuffers::Vector<uint64_t> *>(VT_VECTOR_OF_WEAK_REFERENCES);
1622   }
1623   const flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Referrable>> *vector_of_strong_referrables() const {
1624     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Referrable>> *>(VT_VECTOR_OF_STRONG_REFERRABLES);
1625   }
1626   flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Referrable>> *mutable_vector_of_strong_referrables() {
1627     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Referrable>> *>(VT_VECTOR_OF_STRONG_REFERRABLES);
1628   }
1629   uint64_t co_owning_reference() const {
1630     return GetField<uint64_t>(VT_CO_OWNING_REFERENCE, 0);
1631   }
1632   bool mutate_co_owning_reference(uint64_t _co_owning_reference = 0) {
1633     return SetField<uint64_t>(VT_CO_OWNING_REFERENCE, _co_owning_reference, 0);
1634   }
1635   const flatbuffers::Vector<uint64_t> *vector_of_co_owning_references() const {
1636     return GetPointer<const flatbuffers::Vector<uint64_t> *>(VT_VECTOR_OF_CO_OWNING_REFERENCES);
1637   }
1638   flatbuffers::Vector<uint64_t> *mutable_vector_of_co_owning_references() {
1639     return GetPointer<flatbuffers::Vector<uint64_t> *>(VT_VECTOR_OF_CO_OWNING_REFERENCES);
1640   }
1641   uint64_t non_owning_reference() const {
1642     return GetField<uint64_t>(VT_NON_OWNING_REFERENCE, 0);
1643   }
1644   bool mutate_non_owning_reference(uint64_t _non_owning_reference = 0) {
1645     return SetField<uint64_t>(VT_NON_OWNING_REFERENCE, _non_owning_reference, 0);
1646   }
1647   const flatbuffers::Vector<uint64_t> *vector_of_non_owning_references() const {
1648     return GetPointer<const flatbuffers::Vector<uint64_t> *>(VT_VECTOR_OF_NON_OWNING_REFERENCES);
1649   }
1650   flatbuffers::Vector<uint64_t> *mutable_vector_of_non_owning_references() {
1651     return GetPointer<flatbuffers::Vector<uint64_t> *>(VT_VECTOR_OF_NON_OWNING_REFERENCES);
1652   }
1653   MyGame::Example::AnyUniqueAliases any_unique_type() const {
1654     return static_cast<MyGame::Example::AnyUniqueAliases>(GetField<uint8_t>(VT_ANY_UNIQUE_TYPE, 0));
1655   }
1656   const void *any_unique() const {
1657     return GetPointer<const void *>(VT_ANY_UNIQUE);
1658   }
1659   template<typename T> const T *any_unique_as() const;
1660   const MyGame::Example::Monster *any_unique_as_M() const {
1661     return any_unique_type() == MyGame::Example::AnyUniqueAliases_M ? static_cast<const MyGame::Example::Monster *>(any_unique()) : nullptr;
1662   }
1663   const MyGame::Example::TestSimpleTableWithEnum *any_unique_as_TS() const {
1664     return any_unique_type() == MyGame::Example::AnyUniqueAliases_TS ? static_cast<const MyGame::Example::TestSimpleTableWithEnum *>(any_unique()) : nullptr;
1665   }
1666   const MyGame::Example2::Monster *any_unique_as_M2() const {
1667     return any_unique_type() == MyGame::Example::AnyUniqueAliases_M2 ? static_cast<const MyGame::Example2::Monster *>(any_unique()) : nullptr;
1668   }
1669   void *mutable_any_unique() {
1670     return GetPointer<void *>(VT_ANY_UNIQUE);
1671   }
1672   MyGame::Example::AnyAmbiguousAliases any_ambiguous_type() const {
1673     return static_cast<MyGame::Example::AnyAmbiguousAliases>(GetField<uint8_t>(VT_ANY_AMBIGUOUS_TYPE, 0));
1674   }
1675   const void *any_ambiguous() const {
1676     return GetPointer<const void *>(VT_ANY_AMBIGUOUS);
1677   }
1678   const MyGame::Example::Monster *any_ambiguous_as_M1() const {
1679     return any_ambiguous_type() == MyGame::Example::AnyAmbiguousAliases_M1 ? static_cast<const MyGame::Example::Monster *>(any_ambiguous()) : nullptr;
1680   }
1681   const MyGame::Example::Monster *any_ambiguous_as_M2() const {
1682     return any_ambiguous_type() == MyGame::Example::AnyAmbiguousAliases_M2 ? static_cast<const MyGame::Example::Monster *>(any_ambiguous()) : nullptr;
1683   }
1684   const MyGame::Example::Monster *any_ambiguous_as_M3() const {
1685     return any_ambiguous_type() == MyGame::Example::AnyAmbiguousAliases_M3 ? static_cast<const MyGame::Example::Monster *>(any_ambiguous()) : nullptr;
1686   }
1687   void *mutable_any_ambiguous() {
1688     return GetPointer<void *>(VT_ANY_AMBIGUOUS);
1689   }
1690   const flatbuffers::Vector<uint8_t> *vector_of_enums() const {
1691     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_VECTOR_OF_ENUMS);
1692   }
1693   flatbuffers::Vector<uint8_t> *mutable_vector_of_enums() {
1694     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_VECTOR_OF_ENUMS);
1695   }
1696   MyGame::Example::Race signed_enum() const {
1697     return static_cast<MyGame::Example::Race>(GetField<int8_t>(VT_SIGNED_ENUM, -1));
1698   }
1699   bool mutate_signed_enum(MyGame::Example::Race _signed_enum = static_cast<MyGame::Example::Race>(-1)) {
1700     return SetField<int8_t>(VT_SIGNED_ENUM, static_cast<int8_t>(_signed_enum), -1);
1701   }
1702   const flatbuffers::Vector<uint8_t> *testrequirednestedflatbuffer() const {
1703     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_TESTREQUIREDNESTEDFLATBUFFER);
1704   }
1705   flatbuffers::Vector<uint8_t> *mutable_testrequirednestedflatbuffer() {
1706     return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_TESTREQUIREDNESTEDFLATBUFFER);
1707   }
1708   const MyGame::Example::Monster *testrequirednestedflatbuffer_nested_root() const {
1709     return flatbuffers::GetRoot<MyGame::Example::Monster>(testrequirednestedflatbuffer()->Data());
1710   }
1711   const flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Stat>> *scalar_key_sorted_tables() const {
1712     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Stat>> *>(VT_SCALAR_KEY_SORTED_TABLES);
1713   }
1714   flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Stat>> *mutable_scalar_key_sorted_tables() {
1715     return GetPointer<flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Stat>> *>(VT_SCALAR_KEY_SORTED_TABLES);
1716   }
1717   const MyGame::Example::Test *native_inline() const {
1718     return GetStruct<const MyGame::Example::Test *>(VT_NATIVE_INLINE);
1719   }
1720   MyGame::Example::Test *mutable_native_inline() {
1721     return GetStruct<MyGame::Example::Test *>(VT_NATIVE_INLINE);
1722   }
1723   MyGame::Example::LongEnum long_enum_non_enum_default() const {
1724     return static_cast<MyGame::Example::LongEnum>(GetField<uint64_t>(VT_LONG_ENUM_NON_ENUM_DEFAULT, 0));
1725   }
1726   bool mutate_long_enum_non_enum_default(MyGame::Example::LongEnum _long_enum_non_enum_default = static_cast<MyGame::Example::LongEnum>(0)) {
1727     return SetField<uint64_t>(VT_LONG_ENUM_NON_ENUM_DEFAULT, static_cast<uint64_t>(_long_enum_non_enum_default), 0);
1728   }
1729   MyGame::Example::LongEnum long_enum_normal_default() const {
1730     return static_cast<MyGame::Example::LongEnum>(GetField<uint64_t>(VT_LONG_ENUM_NORMAL_DEFAULT, 2ULL));
1731   }
1732   bool mutate_long_enum_normal_default(MyGame::Example::LongEnum _long_enum_normal_default = static_cast<MyGame::Example::LongEnum>(2ULL)) {
1733     return SetField<uint64_t>(VT_LONG_ENUM_NORMAL_DEFAULT, static_cast<uint64_t>(_long_enum_normal_default), 2ULL);
1734   }
1735   bool Verify(flatbuffers::Verifier &verifier) const {
1736     return VerifyTableStart(verifier) &&
1737            VerifyField<MyGame::Example::Vec3>(verifier, VT_POS, 8) &&
1738            VerifyField<int16_t>(verifier, VT_MANA, 2) &&
1739            VerifyField<int16_t>(verifier, VT_HP, 2) &&
1740            VerifyOffsetRequired(verifier, VT_NAME) &&
1741            verifier.VerifyString(name()) &&
1742            VerifyOffset(verifier, VT_INVENTORY) &&
1743            verifier.VerifyVector(inventory()) &&
1744            VerifyField<uint8_t>(verifier, VT_COLOR, 1) &&
1745            VerifyField<uint8_t>(verifier, VT_TEST_TYPE, 1) &&
1746            VerifyOffset(verifier, VT_TEST) &&
1747            VerifyAny(verifier, test(), test_type()) &&
1748            VerifyOffset(verifier, VT_TEST4) &&
1749            verifier.VerifyVector(test4()) &&
1750            VerifyOffset(verifier, VT_TESTARRAYOFSTRING) &&
1751            verifier.VerifyVector(testarrayofstring()) &&
1752            verifier.VerifyVectorOfStrings(testarrayofstring()) &&
1753            VerifyOffset(verifier, VT_TESTARRAYOFTABLES) &&
1754            verifier.VerifyVector(testarrayoftables()) &&
1755            verifier.VerifyVectorOfTables(testarrayoftables()) &&
1756            VerifyOffset(verifier, VT_ENEMY) &&
1757            verifier.VerifyTable(enemy()) &&
1758            VerifyOffset(verifier, VT_TESTNESTEDFLATBUFFER) &&
1759            verifier.VerifyVector(testnestedflatbuffer()) &&
1760            verifier.VerifyNestedFlatBuffer<MyGame::Example::Monster>(testnestedflatbuffer(), nullptr) &&
1761            VerifyOffset(verifier, VT_TESTEMPTY) &&
1762            verifier.VerifyTable(testempty()) &&
1763            VerifyField<uint8_t>(verifier, VT_TESTBOOL, 1) &&
1764            VerifyField<int32_t>(verifier, VT_TESTHASHS32_FNV1, 4) &&
1765            VerifyField<uint32_t>(verifier, VT_TESTHASHU32_FNV1, 4) &&
1766            VerifyField<int64_t>(verifier, VT_TESTHASHS64_FNV1, 8) &&
1767            VerifyField<uint64_t>(verifier, VT_TESTHASHU64_FNV1, 8) &&
1768            VerifyField<int32_t>(verifier, VT_TESTHASHS32_FNV1A, 4) &&
1769            VerifyField<uint32_t>(verifier, VT_TESTHASHU32_FNV1A, 4) &&
1770            VerifyField<int64_t>(verifier, VT_TESTHASHS64_FNV1A, 8) &&
1771            VerifyField<uint64_t>(verifier, VT_TESTHASHU64_FNV1A, 8) &&
1772            VerifyOffset(verifier, VT_TESTARRAYOFBOOLS) &&
1773            verifier.VerifyVector(testarrayofbools()) &&
1774            VerifyField<float>(verifier, VT_TESTF, 4) &&
1775            VerifyField<float>(verifier, VT_TESTF2, 4) &&
1776            VerifyField<float>(verifier, VT_TESTF3, 4) &&
1777            VerifyOffset(verifier, VT_TESTARRAYOFSTRING2) &&
1778            verifier.VerifyVector(testarrayofstring2()) &&
1779            verifier.VerifyVectorOfStrings(testarrayofstring2()) &&
1780            VerifyOffset(verifier, VT_TESTARRAYOFSORTEDSTRUCT) &&
1781            verifier.VerifyVector(testarrayofsortedstruct()) &&
1782            VerifyOffset(verifier, VT_FLEX) &&
1783            verifier.VerifyVector(flex()) &&
1784            flexbuffers::VerifyNestedFlexBuffer(flex(), verifier) &&
1785            VerifyOffset(verifier, VT_TEST5) &&
1786            verifier.VerifyVector(test5()) &&
1787            VerifyOffset(verifier, VT_VECTOR_OF_LONGS) &&
1788            verifier.VerifyVector(vector_of_longs()) &&
1789            VerifyOffset(verifier, VT_VECTOR_OF_DOUBLES) &&
1790            verifier.VerifyVector(vector_of_doubles()) &&
1791            VerifyOffset(verifier, VT_PARENT_NAMESPACE_TEST) &&
1792            verifier.VerifyTable(parent_namespace_test()) &&
1793            VerifyOffset(verifier, VT_VECTOR_OF_REFERRABLES) &&
1794            verifier.VerifyVector(vector_of_referrables()) &&
1795            verifier.VerifyVectorOfTables(vector_of_referrables()) &&
1796            VerifyField<uint64_t>(verifier, VT_SINGLE_WEAK_REFERENCE, 8) &&
1797            VerifyOffset(verifier, VT_VECTOR_OF_WEAK_REFERENCES) &&
1798            verifier.VerifyVector(vector_of_weak_references()) &&
1799            VerifyOffset(verifier, VT_VECTOR_OF_STRONG_REFERRABLES) &&
1800            verifier.VerifyVector(vector_of_strong_referrables()) &&
1801            verifier.VerifyVectorOfTables(vector_of_strong_referrables()) &&
1802            VerifyField<uint64_t>(verifier, VT_CO_OWNING_REFERENCE, 8) &&
1803            VerifyOffset(verifier, VT_VECTOR_OF_CO_OWNING_REFERENCES) &&
1804            verifier.VerifyVector(vector_of_co_owning_references()) &&
1805            VerifyField<uint64_t>(verifier, VT_NON_OWNING_REFERENCE, 8) &&
1806            VerifyOffset(verifier, VT_VECTOR_OF_NON_OWNING_REFERENCES) &&
1807            verifier.VerifyVector(vector_of_non_owning_references()) &&
1808            VerifyField<uint8_t>(verifier, VT_ANY_UNIQUE_TYPE, 1) &&
1809            VerifyOffset(verifier, VT_ANY_UNIQUE) &&
1810            VerifyAnyUniqueAliases(verifier, any_unique(), any_unique_type()) &&
1811            VerifyField<uint8_t>(verifier, VT_ANY_AMBIGUOUS_TYPE, 1) &&
1812            VerifyOffset(verifier, VT_ANY_AMBIGUOUS) &&
1813            VerifyAnyAmbiguousAliases(verifier, any_ambiguous(), any_ambiguous_type()) &&
1814            VerifyOffset(verifier, VT_VECTOR_OF_ENUMS) &&
1815            verifier.VerifyVector(vector_of_enums()) &&
1816            VerifyField<int8_t>(verifier, VT_SIGNED_ENUM, 1) &&
1817            VerifyOffset(verifier, VT_TESTREQUIREDNESTEDFLATBUFFER) &&
1818            verifier.VerifyVector(testrequirednestedflatbuffer()) &&
1819            verifier.VerifyNestedFlatBuffer<MyGame::Example::Monster>(testrequirednestedflatbuffer(), nullptr) &&
1820            VerifyOffset(verifier, VT_SCALAR_KEY_SORTED_TABLES) &&
1821            verifier.VerifyVector(scalar_key_sorted_tables()) &&
1822            verifier.VerifyVectorOfTables(scalar_key_sorted_tables()) &&
1823            VerifyField<MyGame::Example::Test>(verifier, VT_NATIVE_INLINE, 2) &&
1824            VerifyField<uint64_t>(verifier, VT_LONG_ENUM_NON_ENUM_DEFAULT, 8) &&
1825            VerifyField<uint64_t>(verifier, VT_LONG_ENUM_NORMAL_DEFAULT, 8) &&
1826            verifier.EndTable();
1827   }
1828   MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1829   void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1830   static flatbuffers::Offset<Monster> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1831 };
1832 
1833 template<> inline const MyGame::Example::Monster *Monster::test_as<MyGame::Example::Monster>() const {
1834   return test_as_Monster();
1835 }
1836 
1837 template<> inline const MyGame::Example::TestSimpleTableWithEnum *Monster::test_as<MyGame::Example::TestSimpleTableWithEnum>() const {
1838   return test_as_TestSimpleTableWithEnum();
1839 }
1840 
1841 template<> inline const MyGame::Example2::Monster *Monster::test_as<MyGame::Example2::Monster>() const {
1842   return test_as_MyGame_Example2_Monster();
1843 }
1844 
1845 template<> inline const MyGame::Example::Monster *Monster::any_unique_as<MyGame::Example::Monster>() const {
1846   return any_unique_as_M();
1847 }
1848 
1849 template<> inline const MyGame::Example::TestSimpleTableWithEnum *Monster::any_unique_as<MyGame::Example::TestSimpleTableWithEnum>() const {
1850   return any_unique_as_TS();
1851 }
1852 
1853 template<> inline const MyGame::Example2::Monster *Monster::any_unique_as<MyGame::Example2::Monster>() const {
1854   return any_unique_as_M2();
1855 }
1856 
1857 struct MonsterBuilder {
1858   typedef Monster Table;
1859   flatbuffers::FlatBufferBuilder &fbb_;
1860   flatbuffers::uoffset_t start_;
1861   void add_pos(const MyGame::Example::Vec3 *pos) {
1862     fbb_.AddStruct(Monster::VT_POS, pos);
1863   }
1864   void add_mana(int16_t mana) {
1865     fbb_.AddElement<int16_t>(Monster::VT_MANA, mana, 150);
1866   }
1867   void add_hp(int16_t hp) {
1868     fbb_.AddElement<int16_t>(Monster::VT_HP, hp, 100);
1869   }
1870   void add_name(flatbuffers::Offset<flatbuffers::String> name) {
1871     fbb_.AddOffset(Monster::VT_NAME, name);
1872   }
1873   void add_inventory(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> inventory) {
1874     fbb_.AddOffset(Monster::VT_INVENTORY, inventory);
1875   }
1876   void add_color(MyGame::Example::Color color) {
1877     fbb_.AddElement<uint8_t>(Monster::VT_COLOR, static_cast<uint8_t>(color), 8);
1878   }
1879   void add_test_type(MyGame::Example::Any test_type) {
1880     fbb_.AddElement<uint8_t>(Monster::VT_TEST_TYPE, static_cast<uint8_t>(test_type), 0);
1881   }
1882   void add_test(flatbuffers::Offset<void> test) {
1883     fbb_.AddOffset(Monster::VT_TEST, test);
1884   }
1885   void add_test4(flatbuffers::Offset<flatbuffers::Vector<const MyGame::Example::Test *>> test4) {
1886     fbb_.AddOffset(Monster::VT_TEST4, test4);
1887   }
1888   void add_testarrayofstring(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> testarrayofstring) {
1889     fbb_.AddOffset(Monster::VT_TESTARRAYOFSTRING, testarrayofstring);
1890   }
1891   void add_testarrayoftables(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Monster>>> testarrayoftables) {
1892     fbb_.AddOffset(Monster::VT_TESTARRAYOFTABLES, testarrayoftables);
1893   }
1894   void add_enemy(flatbuffers::Offset<MyGame::Example::Monster> enemy) {
1895     fbb_.AddOffset(Monster::VT_ENEMY, enemy);
1896   }
1897   void add_testnestedflatbuffer(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> testnestedflatbuffer) {
1898     fbb_.AddOffset(Monster::VT_TESTNESTEDFLATBUFFER, testnestedflatbuffer);
1899   }
1900   void add_testempty(flatbuffers::Offset<MyGame::Example::Stat> testempty) {
1901     fbb_.AddOffset(Monster::VT_TESTEMPTY, testempty);
1902   }
1903   void add_testbool(bool testbool) {
1904     fbb_.AddElement<uint8_t>(Monster::VT_TESTBOOL, static_cast<uint8_t>(testbool), 0);
1905   }
1906   void add_testhashs32_fnv1(int32_t testhashs32_fnv1) {
1907     fbb_.AddElement<int32_t>(Monster::VT_TESTHASHS32_FNV1, testhashs32_fnv1, 0);
1908   }
1909   void add_testhashu32_fnv1(uint32_t testhashu32_fnv1) {
1910     fbb_.AddElement<uint32_t>(Monster::VT_TESTHASHU32_FNV1, testhashu32_fnv1, 0);
1911   }
1912   void add_testhashs64_fnv1(int64_t testhashs64_fnv1) {
1913     fbb_.AddElement<int64_t>(Monster::VT_TESTHASHS64_FNV1, testhashs64_fnv1, 0);
1914   }
1915   void add_testhashu64_fnv1(uint64_t testhashu64_fnv1) {
1916     fbb_.AddElement<uint64_t>(Monster::VT_TESTHASHU64_FNV1, testhashu64_fnv1, 0);
1917   }
1918   void add_testhashs32_fnv1a(int32_t testhashs32_fnv1a) {
1919     fbb_.AddElement<int32_t>(Monster::VT_TESTHASHS32_FNV1A, testhashs32_fnv1a, 0);
1920   }
1921   void add_testhashu32_fnv1a(uint32_t testhashu32_fnv1a) {
1922     fbb_.AddElement<uint32_t>(Monster::VT_TESTHASHU32_FNV1A, testhashu32_fnv1a, 0);
1923   }
1924   void add_testhashs64_fnv1a(int64_t testhashs64_fnv1a) {
1925     fbb_.AddElement<int64_t>(Monster::VT_TESTHASHS64_FNV1A, testhashs64_fnv1a, 0);
1926   }
1927   void add_testhashu64_fnv1a(uint64_t testhashu64_fnv1a) {
1928     fbb_.AddElement<uint64_t>(Monster::VT_TESTHASHU64_FNV1A, testhashu64_fnv1a, 0);
1929   }
1930   void add_testarrayofbools(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> testarrayofbools) {
1931     fbb_.AddOffset(Monster::VT_TESTARRAYOFBOOLS, testarrayofbools);
1932   }
1933   void add_testf(float testf) {
1934     fbb_.AddElement<float>(Monster::VT_TESTF, testf, 3.14159f);
1935   }
1936   void add_testf2(float testf2) {
1937     fbb_.AddElement<float>(Monster::VT_TESTF2, testf2, 3.0f);
1938   }
1939   void add_testf3(float testf3) {
1940     fbb_.AddElement<float>(Monster::VT_TESTF3, testf3, 0.0f);
1941   }
1942   void add_testarrayofstring2(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> testarrayofstring2) {
1943     fbb_.AddOffset(Monster::VT_TESTARRAYOFSTRING2, testarrayofstring2);
1944   }
1945   void add_testarrayofsortedstruct(flatbuffers::Offset<flatbuffers::Vector<const MyGame::Example::Ability *>> testarrayofsortedstruct) {
1946     fbb_.AddOffset(Monster::VT_TESTARRAYOFSORTEDSTRUCT, testarrayofsortedstruct);
1947   }
1948   void add_flex(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> flex) {
1949     fbb_.AddOffset(Monster::VT_FLEX, flex);
1950   }
1951   void add_test5(flatbuffers::Offset<flatbuffers::Vector<const MyGame::Example::Test *>> test5) {
1952     fbb_.AddOffset(Monster::VT_TEST5, test5);
1953   }
1954   void add_vector_of_longs(flatbuffers::Offset<flatbuffers::Vector<int64_t>> vector_of_longs) {
1955     fbb_.AddOffset(Monster::VT_VECTOR_OF_LONGS, vector_of_longs);
1956   }
1957   void add_vector_of_doubles(flatbuffers::Offset<flatbuffers::Vector<double>> vector_of_doubles) {
1958     fbb_.AddOffset(Monster::VT_VECTOR_OF_DOUBLES, vector_of_doubles);
1959   }
1960   void add_parent_namespace_test(flatbuffers::Offset<MyGame::InParentNamespace> parent_namespace_test) {
1961     fbb_.AddOffset(Monster::VT_PARENT_NAMESPACE_TEST, parent_namespace_test);
1962   }
1963   void add_vector_of_referrables(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Referrable>>> vector_of_referrables) {
1964     fbb_.AddOffset(Monster::VT_VECTOR_OF_REFERRABLES, vector_of_referrables);
1965   }
1966   void add_single_weak_reference(uint64_t single_weak_reference) {
1967     fbb_.AddElement<uint64_t>(Monster::VT_SINGLE_WEAK_REFERENCE, single_weak_reference, 0);
1968   }
1969   void add_vector_of_weak_references(flatbuffers::Offset<flatbuffers::Vector<uint64_t>> vector_of_weak_references) {
1970     fbb_.AddOffset(Monster::VT_VECTOR_OF_WEAK_REFERENCES, vector_of_weak_references);
1971   }
1972   void add_vector_of_strong_referrables(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Referrable>>> vector_of_strong_referrables) {
1973     fbb_.AddOffset(Monster::VT_VECTOR_OF_STRONG_REFERRABLES, vector_of_strong_referrables);
1974   }
1975   void add_co_owning_reference(uint64_t co_owning_reference) {
1976     fbb_.AddElement<uint64_t>(Monster::VT_CO_OWNING_REFERENCE, co_owning_reference, 0);
1977   }
1978   void add_vector_of_co_owning_references(flatbuffers::Offset<flatbuffers::Vector<uint64_t>> vector_of_co_owning_references) {
1979     fbb_.AddOffset(Monster::VT_VECTOR_OF_CO_OWNING_REFERENCES, vector_of_co_owning_references);
1980   }
1981   void add_non_owning_reference(uint64_t non_owning_reference) {
1982     fbb_.AddElement<uint64_t>(Monster::VT_NON_OWNING_REFERENCE, non_owning_reference, 0);
1983   }
1984   void add_vector_of_non_owning_references(flatbuffers::Offset<flatbuffers::Vector<uint64_t>> vector_of_non_owning_references) {
1985     fbb_.AddOffset(Monster::VT_VECTOR_OF_NON_OWNING_REFERENCES, vector_of_non_owning_references);
1986   }
1987   void add_any_unique_type(MyGame::Example::AnyUniqueAliases any_unique_type) {
1988     fbb_.AddElement<uint8_t>(Monster::VT_ANY_UNIQUE_TYPE, static_cast<uint8_t>(any_unique_type), 0);
1989   }
1990   void add_any_unique(flatbuffers::Offset<void> any_unique) {
1991     fbb_.AddOffset(Monster::VT_ANY_UNIQUE, any_unique);
1992   }
1993   void add_any_ambiguous_type(MyGame::Example::AnyAmbiguousAliases any_ambiguous_type) {
1994     fbb_.AddElement<uint8_t>(Monster::VT_ANY_AMBIGUOUS_TYPE, static_cast<uint8_t>(any_ambiguous_type), 0);
1995   }
1996   void add_any_ambiguous(flatbuffers::Offset<void> any_ambiguous) {
1997     fbb_.AddOffset(Monster::VT_ANY_AMBIGUOUS, any_ambiguous);
1998   }
1999   void add_vector_of_enums(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> vector_of_enums) {
2000     fbb_.AddOffset(Monster::VT_VECTOR_OF_ENUMS, vector_of_enums);
2001   }
2002   void add_signed_enum(MyGame::Example::Race signed_enum) {
2003     fbb_.AddElement<int8_t>(Monster::VT_SIGNED_ENUM, static_cast<int8_t>(signed_enum), -1);
2004   }
2005   void add_testrequirednestedflatbuffer(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> testrequirednestedflatbuffer) {
2006     fbb_.AddOffset(Monster::VT_TESTREQUIREDNESTEDFLATBUFFER, testrequirednestedflatbuffer);
2007   }
2008   void add_scalar_key_sorted_tables(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Stat>>> scalar_key_sorted_tables) {
2009     fbb_.AddOffset(Monster::VT_SCALAR_KEY_SORTED_TABLES, scalar_key_sorted_tables);
2010   }
2011   void add_native_inline(const MyGame::Example::Test *native_inline) {
2012     fbb_.AddStruct(Monster::VT_NATIVE_INLINE, native_inline);
2013   }
2014   void add_long_enum_non_enum_default(MyGame::Example::LongEnum long_enum_non_enum_default) {
2015     fbb_.AddElement<uint64_t>(Monster::VT_LONG_ENUM_NON_ENUM_DEFAULT, static_cast<uint64_t>(long_enum_non_enum_default), 0);
2016   }
2017   void add_long_enum_normal_default(MyGame::Example::LongEnum long_enum_normal_default) {
2018     fbb_.AddElement<uint64_t>(Monster::VT_LONG_ENUM_NORMAL_DEFAULT, static_cast<uint64_t>(long_enum_normal_default), 2ULL);
2019   }
2020   explicit MonsterBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2021         : fbb_(_fbb) {
2022     start_ = fbb_.StartTable();
2023   }
2024   flatbuffers::Offset<Monster> Finish() {
2025     const auto end = fbb_.EndTable(start_);
2026     auto o = flatbuffers::Offset<Monster>(end);
2027     fbb_.Required(o, Monster::VT_NAME);
2028     return o;
2029   }
2030 };
2031 
2032 inline flatbuffers::Offset<Monster> CreateMonster(
2033     flatbuffers::FlatBufferBuilder &_fbb,
2034     const MyGame::Example::Vec3 *pos = nullptr,
2035     int16_t mana = 150,
2036     int16_t hp = 100,
2037     flatbuffers::Offset<flatbuffers::String> name = 0,
2038     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> inventory = 0,
2039     MyGame::Example::Color color = MyGame::Example::Color_Blue,
2040     MyGame::Example::Any test_type = MyGame::Example::Any_NONE,
2041     flatbuffers::Offset<void> test = 0,
2042     flatbuffers::Offset<flatbuffers::Vector<const MyGame::Example::Test *>> test4 = 0,
2043     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> testarrayofstring = 0,
2044     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Monster>>> testarrayoftables = 0,
2045     flatbuffers::Offset<MyGame::Example::Monster> enemy = 0,
2046     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> testnestedflatbuffer = 0,
2047     flatbuffers::Offset<MyGame::Example::Stat> testempty = 0,
2048     bool testbool = false,
2049     int32_t testhashs32_fnv1 = 0,
2050     uint32_t testhashu32_fnv1 = 0,
2051     int64_t testhashs64_fnv1 = 0,
2052     uint64_t testhashu64_fnv1 = 0,
2053     int32_t testhashs32_fnv1a = 0,
2054     uint32_t testhashu32_fnv1a = 0,
2055     int64_t testhashs64_fnv1a = 0,
2056     uint64_t testhashu64_fnv1a = 0,
2057     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> testarrayofbools = 0,
2058     float testf = 3.14159f,
2059     float testf2 = 3.0f,
2060     float testf3 = 0.0f,
2061     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> testarrayofstring2 = 0,
2062     flatbuffers::Offset<flatbuffers::Vector<const MyGame::Example::Ability *>> testarrayofsortedstruct = 0,
2063     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> flex = 0,
2064     flatbuffers::Offset<flatbuffers::Vector<const MyGame::Example::Test *>> test5 = 0,
2065     flatbuffers::Offset<flatbuffers::Vector<int64_t>> vector_of_longs = 0,
2066     flatbuffers::Offset<flatbuffers::Vector<double>> vector_of_doubles = 0,
2067     flatbuffers::Offset<MyGame::InParentNamespace> parent_namespace_test = 0,
2068     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Referrable>>> vector_of_referrables = 0,
2069     uint64_t single_weak_reference = 0,
2070     flatbuffers::Offset<flatbuffers::Vector<uint64_t>> vector_of_weak_references = 0,
2071     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Referrable>>> vector_of_strong_referrables = 0,
2072     uint64_t co_owning_reference = 0,
2073     flatbuffers::Offset<flatbuffers::Vector<uint64_t>> vector_of_co_owning_references = 0,
2074     uint64_t non_owning_reference = 0,
2075     flatbuffers::Offset<flatbuffers::Vector<uint64_t>> vector_of_non_owning_references = 0,
2076     MyGame::Example::AnyUniqueAliases any_unique_type = MyGame::Example::AnyUniqueAliases_NONE,
2077     flatbuffers::Offset<void> any_unique = 0,
2078     MyGame::Example::AnyAmbiguousAliases any_ambiguous_type = MyGame::Example::AnyAmbiguousAliases_NONE,
2079     flatbuffers::Offset<void> any_ambiguous = 0,
2080     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> vector_of_enums = 0,
2081     MyGame::Example::Race signed_enum = MyGame::Example::Race_None,
2082     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> testrequirednestedflatbuffer = 0,
2083     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<MyGame::Example::Stat>>> scalar_key_sorted_tables = 0,
2084     const MyGame::Example::Test *native_inline = nullptr,
2085     MyGame::Example::LongEnum long_enum_non_enum_default = static_cast<MyGame::Example::LongEnum>(0),
2086     MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum_LongOne) {
2087   MonsterBuilder builder_(_fbb);
2088   builder_.add_long_enum_normal_default(long_enum_normal_default);
2089   builder_.add_long_enum_non_enum_default(long_enum_non_enum_default);
2090   builder_.add_non_owning_reference(non_owning_reference);
2091   builder_.add_co_owning_reference(co_owning_reference);
2092   builder_.add_single_weak_reference(single_weak_reference);
2093   builder_.add_testhashu64_fnv1a(testhashu64_fnv1a);
2094   builder_.add_testhashs64_fnv1a(testhashs64_fnv1a);
2095   builder_.add_testhashu64_fnv1(testhashu64_fnv1);
2096   builder_.add_testhashs64_fnv1(testhashs64_fnv1);
2097   builder_.add_native_inline(native_inline);
2098   builder_.add_scalar_key_sorted_tables(scalar_key_sorted_tables);
2099   builder_.add_testrequirednestedflatbuffer(testrequirednestedflatbuffer);
2100   builder_.add_vector_of_enums(vector_of_enums);
2101   builder_.add_any_ambiguous(any_ambiguous);
2102   builder_.add_any_unique(any_unique);
2103   builder_.add_vector_of_non_owning_references(vector_of_non_owning_references);
2104   builder_.add_vector_of_co_owning_references(vector_of_co_owning_references);
2105   builder_.add_vector_of_strong_referrables(vector_of_strong_referrables);
2106   builder_.add_vector_of_weak_references(vector_of_weak_references);
2107   builder_.add_vector_of_referrables(vector_of_referrables);
2108   builder_.add_parent_namespace_test(parent_namespace_test);
2109   builder_.add_vector_of_doubles(vector_of_doubles);
2110   builder_.add_vector_of_longs(vector_of_longs);
2111   builder_.add_test5(test5);
2112   builder_.add_flex(flex);
2113   builder_.add_testarrayofsortedstruct(testarrayofsortedstruct);
2114   builder_.add_testarrayofstring2(testarrayofstring2);
2115   builder_.add_testf3(testf3);
2116   builder_.add_testf2(testf2);
2117   builder_.add_testf(testf);
2118   builder_.add_testarrayofbools(testarrayofbools);
2119   builder_.add_testhashu32_fnv1a(testhashu32_fnv1a);
2120   builder_.add_testhashs32_fnv1a(testhashs32_fnv1a);
2121   builder_.add_testhashu32_fnv1(testhashu32_fnv1);
2122   builder_.add_testhashs32_fnv1(testhashs32_fnv1);
2123   builder_.add_testempty(testempty);
2124   builder_.add_testnestedflatbuffer(testnestedflatbuffer);
2125   builder_.add_enemy(enemy);
2126   builder_.add_testarrayoftables(testarrayoftables);
2127   builder_.add_testarrayofstring(testarrayofstring);
2128   builder_.add_test4(test4);
2129   builder_.add_test(test);
2130   builder_.add_inventory(inventory);
2131   builder_.add_name(name);
2132   builder_.add_pos(pos);
2133   builder_.add_hp(hp);
2134   builder_.add_mana(mana);
2135   builder_.add_signed_enum(signed_enum);
2136   builder_.add_any_ambiguous_type(any_ambiguous_type);
2137   builder_.add_any_unique_type(any_unique_type);
2138   builder_.add_testbool(testbool);
2139   builder_.add_test_type(test_type);
2140   builder_.add_color(color);
2141   return builder_.Finish();
2142 }
2143 
2144 inline flatbuffers::Offset<Monster> CreateMonsterDirect(
2145     flatbuffers::FlatBufferBuilder &_fbb,
2146     const MyGame::Example::Vec3 *pos = nullptr,
2147     int16_t mana = 150,
2148     int16_t hp = 100,
2149     const char *name = nullptr,
2150     const std::vector<uint8_t> *inventory = nullptr,
2151     MyGame::Example::Color color = MyGame::Example::Color_Blue,
2152     MyGame::Example::Any test_type = MyGame::Example::Any_NONE,
2153     flatbuffers::Offset<void> test = 0,
2154     const std::vector<MyGame::Example::Test> *test4 = nullptr,
2155     const std::vector<flatbuffers::Offset<flatbuffers::String>> *testarrayofstring = nullptr,
2156     std::vector<flatbuffers::Offset<MyGame::Example::Monster>> *testarrayoftables = nullptr,
2157     flatbuffers::Offset<MyGame::Example::Monster> enemy = 0,
2158     const std::vector<uint8_t> *testnestedflatbuffer = nullptr,
2159     flatbuffers::Offset<MyGame::Example::Stat> testempty = 0,
2160     bool testbool = false,
2161     int32_t testhashs32_fnv1 = 0,
2162     uint32_t testhashu32_fnv1 = 0,
2163     int64_t testhashs64_fnv1 = 0,
2164     uint64_t testhashu64_fnv1 = 0,
2165     int32_t testhashs32_fnv1a = 0,
2166     uint32_t testhashu32_fnv1a = 0,
2167     int64_t testhashs64_fnv1a = 0,
2168     uint64_t testhashu64_fnv1a = 0,
2169     const std::vector<uint8_t> *testarrayofbools = nullptr,
2170     float testf = 3.14159f,
2171     float testf2 = 3.0f,
2172     float testf3 = 0.0f,
2173     const std::vector<flatbuffers::Offset<flatbuffers::String>> *testarrayofstring2 = nullptr,
2174     std::vector<MyGame::Example::Ability> *testarrayofsortedstruct = nullptr,
2175     const std::vector<uint8_t> *flex = nullptr,
2176     const std::vector<MyGame::Example::Test> *test5 = nullptr,
2177     const std::vector<int64_t> *vector_of_longs = nullptr,
2178     const std::vector<double> *vector_of_doubles = nullptr,
2179     flatbuffers::Offset<MyGame::InParentNamespace> parent_namespace_test = 0,
2180     std::vector<flatbuffers::Offset<MyGame::Example::Referrable>> *vector_of_referrables = nullptr,
2181     uint64_t single_weak_reference = 0,
2182     const std::vector<uint64_t> *vector_of_weak_references = nullptr,
2183     std::vector<flatbuffers::Offset<MyGame::Example::Referrable>> *vector_of_strong_referrables = nullptr,
2184     uint64_t co_owning_reference = 0,
2185     const std::vector<uint64_t> *vector_of_co_owning_references = nullptr,
2186     uint64_t non_owning_reference = 0,
2187     const std::vector<uint64_t> *vector_of_non_owning_references = nullptr,
2188     MyGame::Example::AnyUniqueAliases any_unique_type = MyGame::Example::AnyUniqueAliases_NONE,
2189     flatbuffers::Offset<void> any_unique = 0,
2190     MyGame::Example::AnyAmbiguousAliases any_ambiguous_type = MyGame::Example::AnyAmbiguousAliases_NONE,
2191     flatbuffers::Offset<void> any_ambiguous = 0,
2192     const std::vector<uint8_t> *vector_of_enums = nullptr,
2193     MyGame::Example::Race signed_enum = MyGame::Example::Race_None,
2194     const std::vector<uint8_t> *testrequirednestedflatbuffer = nullptr,
2195     std::vector<flatbuffers::Offset<MyGame::Example::Stat>> *scalar_key_sorted_tables = nullptr,
2196     const MyGame::Example::Test *native_inline = nullptr,
2197     MyGame::Example::LongEnum long_enum_non_enum_default = static_cast<MyGame::Example::LongEnum>(0),
2198     MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum_LongOne) {
2199   auto name__ = name ? _fbb.CreateString(name) : 0;
2200   auto inventory__ = inventory ? _fbb.CreateVector<uint8_t>(*inventory) : 0;
2201   auto test4__ = test4 ? _fbb.CreateVectorOfStructs<MyGame::Example::Test>(*test4) : 0;
2202   auto testarrayofstring__ = testarrayofstring ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*testarrayofstring) : 0;
2203   auto testarrayoftables__ = testarrayoftables ? _fbb.CreateVectorOfSortedTables<MyGame::Example::Monster>(testarrayoftables) : 0;
2204   auto testnestedflatbuffer__ = testnestedflatbuffer ? _fbb.CreateVector<uint8_t>(*testnestedflatbuffer) : 0;
2205   auto testarrayofbools__ = testarrayofbools ? _fbb.CreateVector<uint8_t>(*testarrayofbools) : 0;
2206   auto testarrayofstring2__ = testarrayofstring2 ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*testarrayofstring2) : 0;
2207   auto testarrayofsortedstruct__ = testarrayofsortedstruct ? _fbb.CreateVectorOfSortedStructs<MyGame::Example::Ability>(testarrayofsortedstruct) : 0;
2208   auto flex__ = flex ? _fbb.CreateVector<uint8_t>(*flex) : 0;
2209   auto test5__ = test5 ? _fbb.CreateVectorOfStructs<MyGame::Example::Test>(*test5) : 0;
2210   auto vector_of_longs__ = vector_of_longs ? _fbb.CreateVector<int64_t>(*vector_of_longs) : 0;
2211   auto vector_of_doubles__ = vector_of_doubles ? _fbb.CreateVector<double>(*vector_of_doubles) : 0;
2212   auto vector_of_referrables__ = vector_of_referrables ? _fbb.CreateVectorOfSortedTables<MyGame::Example::Referrable>(vector_of_referrables) : 0;
2213   auto vector_of_weak_references__ = vector_of_weak_references ? _fbb.CreateVector<uint64_t>(*vector_of_weak_references) : 0;
2214   auto vector_of_strong_referrables__ = vector_of_strong_referrables ? _fbb.CreateVectorOfSortedTables<MyGame::Example::Referrable>(vector_of_strong_referrables) : 0;
2215   auto vector_of_co_owning_references__ = vector_of_co_owning_references ? _fbb.CreateVector<uint64_t>(*vector_of_co_owning_references) : 0;
2216   auto vector_of_non_owning_references__ = vector_of_non_owning_references ? _fbb.CreateVector<uint64_t>(*vector_of_non_owning_references) : 0;
2217   auto vector_of_enums__ = vector_of_enums ? _fbb.CreateVector<uint8_t>(*vector_of_enums) : 0;
2218   auto testrequirednestedflatbuffer__ = testrequirednestedflatbuffer ? _fbb.CreateVector<uint8_t>(*testrequirednestedflatbuffer) : 0;
2219   auto scalar_key_sorted_tables__ = scalar_key_sorted_tables ? _fbb.CreateVectorOfSortedTables<MyGame::Example::Stat>(scalar_key_sorted_tables) : 0;
2220   return MyGame::Example::CreateMonster(
2221       _fbb,
2222       pos,
2223       mana,
2224       hp,
2225       name__,
2226       inventory__,
2227       color,
2228       test_type,
2229       test,
2230       test4__,
2231       testarrayofstring__,
2232       testarrayoftables__,
2233       enemy,
2234       testnestedflatbuffer__,
2235       testempty,
2236       testbool,
2237       testhashs32_fnv1,
2238       testhashu32_fnv1,
2239       testhashs64_fnv1,
2240       testhashu64_fnv1,
2241       testhashs32_fnv1a,
2242       testhashu32_fnv1a,
2243       testhashs64_fnv1a,
2244       testhashu64_fnv1a,
2245       testarrayofbools__,
2246       testf,
2247       testf2,
2248       testf3,
2249       testarrayofstring2__,
2250       testarrayofsortedstruct__,
2251       flex__,
2252       test5__,
2253       vector_of_longs__,
2254       vector_of_doubles__,
2255       parent_namespace_test,
2256       vector_of_referrables__,
2257       single_weak_reference,
2258       vector_of_weak_references__,
2259       vector_of_strong_referrables__,
2260       co_owning_reference,
2261       vector_of_co_owning_references__,
2262       non_owning_reference,
2263       vector_of_non_owning_references__,
2264       any_unique_type,
2265       any_unique,
2266       any_ambiguous_type,
2267       any_ambiguous,
2268       vector_of_enums__,
2269       signed_enum,
2270       testrequirednestedflatbuffer__,
2271       scalar_key_sorted_tables__,
2272       native_inline,
2273       long_enum_non_enum_default,
2274       long_enum_normal_default);
2275 }
2276 
2277 flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2278 
2279 struct TypeAliasesT : public flatbuffers::NativeTable {
2280   typedef TypeAliases TableType;
2281   int8_t i8 = 0;
2282   uint8_t u8 = 0;
2283   int16_t i16 = 0;
2284   uint16_t u16 = 0;
2285   int32_t i32 = 0;
2286   uint32_t u32 = 0;
2287   int64_t i64 = 0;
2288   uint64_t u64 = 0;
2289   float f32 = 0.0f;
2290   double f64 = 0.0;
2291   std::vector<int8_t> v8{};
2292   std::vector<double> vf64{};
2293 };
2294 
2295 struct TypeAliases FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
2296   typedef TypeAliasesT NativeTableType;
2297   typedef TypeAliasesBuilder Builder;
2298   static const flatbuffers::TypeTable *MiniReflectTypeTable() {
2299     return TypeAliasesTypeTable();
2300   }
2301   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
2302     VT_I8 = 4,
2303     VT_U8 = 6,
2304     VT_I16 = 8,
2305     VT_U16 = 10,
2306     VT_I32 = 12,
2307     VT_U32 = 14,
2308     VT_I64 = 16,
2309     VT_U64 = 18,
2310     VT_F32 = 20,
2311     VT_F64 = 22,
2312     VT_V8 = 24,
2313     VT_VF64 = 26
2314   };
2315   int8_t i8() const {
2316     return GetField<int8_t>(VT_I8, 0);
2317   }
2318   bool mutate_i8(int8_t _i8 = 0) {
2319     return SetField<int8_t>(VT_I8, _i8, 0);
2320   }
2321   uint8_t u8() const {
2322     return GetField<uint8_t>(VT_U8, 0);
2323   }
2324   bool mutate_u8(uint8_t _u8 = 0) {
2325     return SetField<uint8_t>(VT_U8, _u8, 0);
2326   }
2327   int16_t i16() const {
2328     return GetField<int16_t>(VT_I16, 0);
2329   }
2330   bool mutate_i16(int16_t _i16 = 0) {
2331     return SetField<int16_t>(VT_I16, _i16, 0);
2332   }
2333   uint16_t u16() const {
2334     return GetField<uint16_t>(VT_U16, 0);
2335   }
2336   bool mutate_u16(uint16_t _u16 = 0) {
2337     return SetField<uint16_t>(VT_U16, _u16, 0);
2338   }
2339   int32_t i32() const {
2340     return GetField<int32_t>(VT_I32, 0);
2341   }
2342   bool mutate_i32(int32_t _i32 = 0) {
2343     return SetField<int32_t>(VT_I32, _i32, 0);
2344   }
2345   uint32_t u32() const {
2346     return GetField<uint32_t>(VT_U32, 0);
2347   }
2348   bool mutate_u32(uint32_t _u32 = 0) {
2349     return SetField<uint32_t>(VT_U32, _u32, 0);
2350   }
2351   int64_t i64() const {
2352     return GetField<int64_t>(VT_I64, 0);
2353   }
2354   bool mutate_i64(int64_t _i64 = 0) {
2355     return SetField<int64_t>(VT_I64, _i64, 0);
2356   }
2357   uint64_t u64() const {
2358     return GetField<uint64_t>(VT_U64, 0);
2359   }
2360   bool mutate_u64(uint64_t _u64 = 0) {
2361     return SetField<uint64_t>(VT_U64, _u64, 0);
2362   }
2363   float f32() const {
2364     return GetField<float>(VT_F32, 0.0f);
2365   }
2366   bool mutate_f32(float _f32 = 0.0f) {
2367     return SetField<float>(VT_F32, _f32, 0.0f);
2368   }
2369   double f64() const {
2370     return GetField<double>(VT_F64, 0.0);
2371   }
2372   bool mutate_f64(double _f64 = 0.0) {
2373     return SetField<double>(VT_F64, _f64, 0.0);
2374   }
2375   const flatbuffers::Vector<int8_t> *v8() const {
2376     return GetPointer<const flatbuffers::Vector<int8_t> *>(VT_V8);
2377   }
2378   flatbuffers::Vector<int8_t> *mutable_v8() {
2379     return GetPointer<flatbuffers::Vector<int8_t> *>(VT_V8);
2380   }
2381   const flatbuffers::Vector<double> *vf64() const {
2382     return GetPointer<const flatbuffers::Vector<double> *>(VT_VF64);
2383   }
2384   flatbuffers::Vector<double> *mutable_vf64() {
2385     return GetPointer<flatbuffers::Vector<double> *>(VT_VF64);
2386   }
2387   bool Verify(flatbuffers::Verifier &verifier) const {
2388     return VerifyTableStart(verifier) &&
2389            VerifyField<int8_t>(verifier, VT_I8, 1) &&
2390            VerifyField<uint8_t>(verifier, VT_U8, 1) &&
2391            VerifyField<int16_t>(verifier, VT_I16, 2) &&
2392            VerifyField<uint16_t>(verifier, VT_U16, 2) &&
2393            VerifyField<int32_t>(verifier, VT_I32, 4) &&
2394            VerifyField<uint32_t>(verifier, VT_U32, 4) &&
2395            VerifyField<int64_t>(verifier, VT_I64, 8) &&
2396            VerifyField<uint64_t>(verifier, VT_U64, 8) &&
2397            VerifyField<float>(verifier, VT_F32, 4) &&
2398            VerifyField<double>(verifier, VT_F64, 8) &&
2399            VerifyOffset(verifier, VT_V8) &&
2400            verifier.VerifyVector(v8()) &&
2401            VerifyOffset(verifier, VT_VF64) &&
2402            verifier.VerifyVector(vf64()) &&
2403            verifier.EndTable();
2404   }
2405   TypeAliasesT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2406   void UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
2407   static flatbuffers::Offset<TypeAliases> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2408 };
2409 
2410 struct TypeAliasesBuilder {
2411   typedef TypeAliases Table;
2412   flatbuffers::FlatBufferBuilder &fbb_;
2413   flatbuffers::uoffset_t start_;
2414   void add_i8(int8_t i8) {
2415     fbb_.AddElement<int8_t>(TypeAliases::VT_I8, i8, 0);
2416   }
2417   void add_u8(uint8_t u8) {
2418     fbb_.AddElement<uint8_t>(TypeAliases::VT_U8, u8, 0);
2419   }
2420   void add_i16(int16_t i16) {
2421     fbb_.AddElement<int16_t>(TypeAliases::VT_I16, i16, 0);
2422   }
2423   void add_u16(uint16_t u16) {
2424     fbb_.AddElement<uint16_t>(TypeAliases::VT_U16, u16, 0);
2425   }
2426   void add_i32(int32_t i32) {
2427     fbb_.AddElement<int32_t>(TypeAliases::VT_I32, i32, 0);
2428   }
2429   void add_u32(uint32_t u32) {
2430     fbb_.AddElement<uint32_t>(TypeAliases::VT_U32, u32, 0);
2431   }
2432   void add_i64(int64_t i64) {
2433     fbb_.AddElement<int64_t>(TypeAliases::VT_I64, i64, 0);
2434   }
2435   void add_u64(uint64_t u64) {
2436     fbb_.AddElement<uint64_t>(TypeAliases::VT_U64, u64, 0);
2437   }
2438   void add_f32(float f32) {
2439     fbb_.AddElement<float>(TypeAliases::VT_F32, f32, 0.0f);
2440   }
2441   void add_f64(double f64) {
2442     fbb_.AddElement<double>(TypeAliases::VT_F64, f64, 0.0);
2443   }
2444   void add_v8(flatbuffers::Offset<flatbuffers::Vector<int8_t>> v8) {
2445     fbb_.AddOffset(TypeAliases::VT_V8, v8);
2446   }
2447   void add_vf64(flatbuffers::Offset<flatbuffers::Vector<double>> vf64) {
2448     fbb_.AddOffset(TypeAliases::VT_VF64, vf64);
2449   }
2450   explicit TypeAliasesBuilder(flatbuffers::FlatBufferBuilder &_fbb)
2451         : fbb_(_fbb) {
2452     start_ = fbb_.StartTable();
2453   }
2454   flatbuffers::Offset<TypeAliases> Finish() {
2455     const auto end = fbb_.EndTable(start_);
2456     auto o = flatbuffers::Offset<TypeAliases>(end);
2457     return o;
2458   }
2459 };
2460 
2461 inline flatbuffers::Offset<TypeAliases> CreateTypeAliases(
2462     flatbuffers::FlatBufferBuilder &_fbb,
2463     int8_t i8 = 0,
2464     uint8_t u8 = 0,
2465     int16_t i16 = 0,
2466     uint16_t u16 = 0,
2467     int32_t i32 = 0,
2468     uint32_t u32 = 0,
2469     int64_t i64 = 0,
2470     uint64_t u64 = 0,
2471     float f32 = 0.0f,
2472     double f64 = 0.0,
2473     flatbuffers::Offset<flatbuffers::Vector<int8_t>> v8 = 0,
2474     flatbuffers::Offset<flatbuffers::Vector<double>> vf64 = 0) {
2475   TypeAliasesBuilder builder_(_fbb);
2476   builder_.add_f64(f64);
2477   builder_.add_u64(u64);
2478   builder_.add_i64(i64);
2479   builder_.add_vf64(vf64);
2480   builder_.add_v8(v8);
2481   builder_.add_f32(f32);
2482   builder_.add_u32(u32);
2483   builder_.add_i32(i32);
2484   builder_.add_u16(u16);
2485   builder_.add_i16(i16);
2486   builder_.add_u8(u8);
2487   builder_.add_i8(i8);
2488   return builder_.Finish();
2489 }
2490 
2491 inline flatbuffers::Offset<TypeAliases> CreateTypeAliasesDirect(
2492     flatbuffers::FlatBufferBuilder &_fbb,
2493     int8_t i8 = 0,
2494     uint8_t u8 = 0,
2495     int16_t i16 = 0,
2496     uint16_t u16 = 0,
2497     int32_t i32 = 0,
2498     uint32_t u32 = 0,
2499     int64_t i64 = 0,
2500     uint64_t u64 = 0,
2501     float f32 = 0.0f,
2502     double f64 = 0.0,
2503     const std::vector<int8_t> *v8 = nullptr,
2504     const std::vector<double> *vf64 = nullptr) {
2505   auto v8__ = v8 ? _fbb.CreateVector<int8_t>(*v8) : 0;
2506   auto vf64__ = vf64 ? _fbb.CreateVector<double>(*vf64) : 0;
2507   return MyGame::Example::CreateTypeAliases(
2508       _fbb,
2509       i8,
2510       u8,
2511       i16,
2512       u16,
2513       i32,
2514       u32,
2515       i64,
2516       u64,
2517       f32,
2518       f64,
2519       v8__,
2520       vf64__);
2521 }
2522 
2523 flatbuffers::Offset<TypeAliases> CreateTypeAliases(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
2524 
2525 }  // namespace Example
2526 
2527 
2528 inline bool operator==(const InParentNamespaceT &, const InParentNamespaceT &) {
2529   return true;
2530 }
2531 
2532 inline bool operator!=(const InParentNamespaceT &lhs, const InParentNamespaceT &rhs) {
2533     return !(lhs == rhs);
2534 }
2535 
2536 
2537 inline InParentNamespaceT *InParentNamespace::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
2538   auto _o = std::unique_ptr<InParentNamespaceT>(new InParentNamespaceT());
2539   UnPackTo(_o.get(), _resolver);
2540   return _o.release();
2541 }
2542 
2543 inline void InParentNamespace::UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver) const {
2544   (void)_o;
2545   (void)_resolver;
2546 }
2547 
2548 inline flatbuffers::Offset<InParentNamespace> InParentNamespace::Pack(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
2549   return CreateInParentNamespace(_fbb, _o, _rehasher);
2550 }
2551 
2552 inline flatbuffers::Offset<InParentNamespace> CreateInParentNamespace(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
2553   (void)_rehasher;
2554   (void)_o;
2555   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const InParentNamespaceT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
2556   return MyGame::CreateInParentNamespace(
2557       _fbb);
2558 }
2559 
2560 namespace Example2 {
2561 
2562 
2563 inline bool operator==(const MonsterT &, const MonsterT &) {
2564   return true;
2565 }
2566 
2567 inline bool operator!=(const MonsterT &lhs, const MonsterT &rhs) {
2568     return !(lhs == rhs);
2569 }
2570 
2571 
2572 inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
2573   auto _o = std::unique_ptr<MonsterT>(new MonsterT());
2574   UnPackTo(_o.get(), _resolver);
2575   return _o.release();
2576 }
2577 
2578 inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const {
2579   (void)_o;
2580   (void)_resolver;
2581 }
2582 
2583 inline flatbuffers::Offset<Monster> Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
2584   return CreateMonster(_fbb, _o, _rehasher);
2585 }
2586 
2587 inline flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
2588   (void)_rehasher;
2589   (void)_o;
2590   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MonsterT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
2591   return MyGame::Example2::CreateMonster(
2592       _fbb);
2593 }
2594 
2595 }  // namespace Example2
2596 
2597 namespace Example {
2598 
2599 
2600 inline bool operator==(const TestSimpleTableWithEnumT &lhs, const TestSimpleTableWithEnumT &rhs) {
2601   return
2602       (lhs.color == rhs.color);
2603 }
2604 
2605 inline bool operator!=(const TestSimpleTableWithEnumT &lhs, const TestSimpleTableWithEnumT &rhs) {
2606     return !(lhs == rhs);
2607 }
2608 
2609 
2610 inline TestSimpleTableWithEnumT *TestSimpleTableWithEnum::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
2611   auto _o = std::unique_ptr<TestSimpleTableWithEnumT>(new TestSimpleTableWithEnumT());
2612   UnPackTo(_o.get(), _resolver);
2613   return _o.release();
2614 }
2615 
2616 inline void TestSimpleTableWithEnum::UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver) const {
2617   (void)_o;
2618   (void)_resolver;
2619   { auto _e = color(); _o->color = _e; }
2620 }
2621 
2622 inline flatbuffers::Offset<TestSimpleTableWithEnum> TestSimpleTableWithEnum::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TestSimpleTableWithEnumT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
2623   return CreateTestSimpleTableWithEnum(_fbb, _o, _rehasher);
2624 }
2625 
2626 inline flatbuffers::Offset<TestSimpleTableWithEnum> CreateTestSimpleTableWithEnum(flatbuffers::FlatBufferBuilder &_fbb, const TestSimpleTableWithEnumT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
2627   (void)_rehasher;
2628   (void)_o;
2629   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TestSimpleTableWithEnumT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
2630   auto _color = _o->color;
2631   return MyGame::Example::CreateTestSimpleTableWithEnum(
2632       _fbb,
2633       _color);
2634 }
2635 
2636 
2637 inline bool operator==(const StatT &lhs, const StatT &rhs) {
2638   return
2639       (lhs.id == rhs.id) &&
2640       (lhs.val == rhs.val) &&
2641       (lhs.count == rhs.count);
2642 }
2643 
2644 inline bool operator!=(const StatT &lhs, const StatT &rhs) {
2645     return !(lhs == rhs);
2646 }
2647 
2648 
2649 inline StatT *Stat::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
2650   auto _o = std::unique_ptr<StatT>(new StatT());
2651   UnPackTo(_o.get(), _resolver);
2652   return _o.release();
2653 }
2654 
2655 inline void Stat::UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver) const {
2656   (void)_o;
2657   (void)_resolver;
2658   { auto _e = id(); if (_e) _o->id = _e->str(); }
2659   { auto _e = val(); _o->val = _e; }
2660   { auto _e = count(); _o->count = _e; }
2661 }
2662 
2663 inline flatbuffers::Offset<Stat> Stat::Pack(flatbuffers::FlatBufferBuilder &_fbb, const StatT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
2664   return CreateStat(_fbb, _o, _rehasher);
2665 }
2666 
2667 inline flatbuffers::Offset<Stat> CreateStat(flatbuffers::FlatBufferBuilder &_fbb, const StatT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
2668   (void)_rehasher;
2669   (void)_o;
2670   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const StatT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
2671   auto _id = _o->id.empty() ? 0 : _fbb.CreateString(_o->id);
2672   auto _val = _o->val;
2673   auto _count = _o->count;
2674   return MyGame::Example::CreateStat(
2675       _fbb,
2676       _id,
2677       _val,
2678       _count);
2679 }
2680 
2681 
2682 inline bool operator==(const ReferrableT &lhs, const ReferrableT &rhs) {
2683   return
2684       (lhs.id == rhs.id);
2685 }
2686 
2687 inline bool operator!=(const ReferrableT &lhs, const ReferrableT &rhs) {
2688     return !(lhs == rhs);
2689 }
2690 
2691 
2692 inline ReferrableT *Referrable::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
2693   auto _o = std::unique_ptr<ReferrableT>(new ReferrableT());
2694   UnPackTo(_o.get(), _resolver);
2695   return _o.release();
2696 }
2697 
2698 inline void Referrable::UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver) const {
2699   (void)_o;
2700   (void)_resolver;
2701   { auto _e = id(); _o->id = _e; }
2702 }
2703 
2704 inline flatbuffers::Offset<Referrable> Referrable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReferrableT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
2705   return CreateReferrable(_fbb, _o, _rehasher);
2706 }
2707 
2708 inline flatbuffers::Offset<Referrable> CreateReferrable(flatbuffers::FlatBufferBuilder &_fbb, const ReferrableT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
2709   (void)_rehasher;
2710   (void)_o;
2711   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ReferrableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
2712   auto _id = _o->id;
2713   return MyGame::Example::CreateReferrable(
2714       _fbb,
2715       _id);
2716 }
2717 
2718 
2719 inline bool operator==(const MonsterT &lhs, const MonsterT &rhs) {
2720   return
2721       ((lhs.pos == rhs.pos) || (lhs.pos && rhs.pos && *lhs.pos == *rhs.pos)) &&
2722       (lhs.mana == rhs.mana) &&
2723       (lhs.hp == rhs.hp) &&
2724       (lhs.name == rhs.name) &&
2725       (lhs.inventory == rhs.inventory) &&
2726       (lhs.color == rhs.color) &&
2727       (lhs.test == rhs.test) &&
2728       (lhs.test4 == rhs.test4) &&
2729       (lhs.testarrayofstring == rhs.testarrayofstring) &&
2730       (lhs.testarrayoftables.size() == rhs.testarrayoftables.size() && std::equal(lhs.testarrayoftables.cbegin(), lhs.testarrayoftables.cend(), rhs.testarrayoftables.cbegin(), [](flatbuffers::unique_ptr<MyGame::Example::MonsterT> const &a, flatbuffers::unique_ptr<MyGame::Example::MonsterT> const &b) { return (a == b) || (a && b && *a == *b); })) &&
2731       ((lhs.enemy == rhs.enemy) || (lhs.enemy && rhs.enemy && *lhs.enemy == *rhs.enemy)) &&
2732       (lhs.testnestedflatbuffer == rhs.testnestedflatbuffer) &&
2733       ((lhs.testempty == rhs.testempty) || (lhs.testempty && rhs.testempty && *lhs.testempty == *rhs.testempty)) &&
2734       (lhs.testbool == rhs.testbool) &&
2735       (lhs.testhashs32_fnv1 == rhs.testhashs32_fnv1) &&
2736       (lhs.testhashu32_fnv1 == rhs.testhashu32_fnv1) &&
2737       (lhs.testhashs64_fnv1 == rhs.testhashs64_fnv1) &&
2738       (lhs.testhashu64_fnv1 == rhs.testhashu64_fnv1) &&
2739       (lhs.testhashs32_fnv1a == rhs.testhashs32_fnv1a) &&
2740       (lhs.testhashu32_fnv1a == rhs.testhashu32_fnv1a) &&
2741       (lhs.testhashs64_fnv1a == rhs.testhashs64_fnv1a) &&
2742       (lhs.testhashu64_fnv1a == rhs.testhashu64_fnv1a) &&
2743       (lhs.testarrayofbools == rhs.testarrayofbools) &&
2744       (lhs.testf == rhs.testf) &&
2745       (lhs.testf2 == rhs.testf2) &&
2746       (lhs.testf3 == rhs.testf3) &&
2747       (lhs.testarrayofstring2 == rhs.testarrayofstring2) &&
2748       (lhs.testarrayofsortedstruct == rhs.testarrayofsortedstruct) &&
2749       (lhs.flex == rhs.flex) &&
2750       (lhs.test5 == rhs.test5) &&
2751       (lhs.vector_of_longs == rhs.vector_of_longs) &&
2752       (lhs.vector_of_doubles == rhs.vector_of_doubles) &&
2753       ((lhs.parent_namespace_test == rhs.parent_namespace_test) || (lhs.parent_namespace_test && rhs.parent_namespace_test && *lhs.parent_namespace_test == *rhs.parent_namespace_test)) &&
2754       (lhs.vector_of_referrables.size() == rhs.vector_of_referrables.size() && std::equal(lhs.vector_of_referrables.cbegin(), lhs.vector_of_referrables.cend(), rhs.vector_of_referrables.cbegin(), [](flatbuffers::unique_ptr<MyGame::Example::ReferrableT> const &a, flatbuffers::unique_ptr<MyGame::Example::ReferrableT> const &b) { return (a == b) || (a && b && *a == *b); })) &&
2755       (lhs.single_weak_reference == rhs.single_weak_reference) &&
2756       (lhs.vector_of_weak_references == rhs.vector_of_weak_references) &&
2757       (lhs.vector_of_strong_referrables.size() == rhs.vector_of_strong_referrables.size() && std::equal(lhs.vector_of_strong_referrables.cbegin(), lhs.vector_of_strong_referrables.cend(), rhs.vector_of_strong_referrables.cbegin(), [](flatbuffers::unique_ptr<MyGame::Example::ReferrableT> const &a, flatbuffers::unique_ptr<MyGame::Example::ReferrableT> const &b) { return (a == b) || (a && b && *a == *b); })) &&
2758       (lhs.co_owning_reference == rhs.co_owning_reference) &&
2759       (lhs.vector_of_co_owning_references == rhs.vector_of_co_owning_references) &&
2760       (lhs.non_owning_reference == rhs.non_owning_reference) &&
2761       (lhs.vector_of_non_owning_references == rhs.vector_of_non_owning_references) &&
2762       (lhs.any_unique == rhs.any_unique) &&
2763       (lhs.any_ambiguous == rhs.any_ambiguous) &&
2764       (lhs.vector_of_enums == rhs.vector_of_enums) &&
2765       (lhs.signed_enum == rhs.signed_enum) &&
2766       (lhs.testrequirednestedflatbuffer == rhs.testrequirednestedflatbuffer) &&
2767       (lhs.scalar_key_sorted_tables.size() == rhs.scalar_key_sorted_tables.size() && std::equal(lhs.scalar_key_sorted_tables.cbegin(), lhs.scalar_key_sorted_tables.cend(), rhs.scalar_key_sorted_tables.cbegin(), [](flatbuffers::unique_ptr<MyGame::Example::StatT> const &a, flatbuffers::unique_ptr<MyGame::Example::StatT> const &b) { return (a == b) || (a && b && *a == *b); })) &&
2768       (lhs.native_inline == rhs.native_inline) &&
2769       (lhs.long_enum_non_enum_default == rhs.long_enum_non_enum_default) &&
2770       (lhs.long_enum_normal_default == rhs.long_enum_normal_default);
2771 }
2772 
2773 inline bool operator!=(const MonsterT &lhs, const MonsterT &rhs) {
2774     return !(lhs == rhs);
2775 }
2776 
2777 
2778 inline MonsterT::MonsterT(const MonsterT &o)
2779       : pos((o.pos) ? new MyGame::Example::Vec3(*o.pos) : nullptr),
2780         mana(o.mana),
2781         hp(o.hp),
2782         name(o.name),
2783         inventory(o.inventory),
2784         color(o.color),
2785         test(o.test),
2786         test4(o.test4),
2787         testarrayofstring(o.testarrayofstring),
2788         enemy((o.enemy) ? new MyGame::Example::MonsterT(*o.enemy) : nullptr),
2789         testnestedflatbuffer(o.testnestedflatbuffer),
2790         testempty((o.testempty) ? new MyGame::Example::StatT(*o.testempty) : nullptr),
2791         testbool(o.testbool),
2792         testhashs32_fnv1(o.testhashs32_fnv1),
2793         testhashu32_fnv1(o.testhashu32_fnv1),
2794         testhashs64_fnv1(o.testhashs64_fnv1),
2795         testhashu64_fnv1(o.testhashu64_fnv1),
2796         testhashs32_fnv1a(o.testhashs32_fnv1a),
2797         testhashu32_fnv1a(o.testhashu32_fnv1a),
2798         testhashs64_fnv1a(o.testhashs64_fnv1a),
2799         testhashu64_fnv1a(o.testhashu64_fnv1a),
2800         testarrayofbools(o.testarrayofbools),
2801         testf(o.testf),
2802         testf2(o.testf2),
2803         testf3(o.testf3),
2804         testarrayofstring2(o.testarrayofstring2),
2805         testarrayofsortedstruct(o.testarrayofsortedstruct),
2806         flex(o.flex),
2807         test5(o.test5),
2808         vector_of_longs(o.vector_of_longs),
2809         vector_of_doubles(o.vector_of_doubles),
2810         parent_namespace_test((o.parent_namespace_test) ? new MyGame::InParentNamespaceT(*o.parent_namespace_test) : nullptr),
2811         single_weak_reference(o.single_weak_reference),
2812         vector_of_weak_references(o.vector_of_weak_references),
2813         co_owning_reference(o.co_owning_reference),
2814         non_owning_reference(o.non_owning_reference),
2815         vector_of_non_owning_references(o.vector_of_non_owning_references),
2816         any_unique(o.any_unique),
2817         any_ambiguous(o.any_ambiguous),
2818         vector_of_enums(o.vector_of_enums),
2819         signed_enum(o.signed_enum),
2820         testrequirednestedflatbuffer(o.testrequirednestedflatbuffer),
2821         native_inline(o.native_inline),
2822         long_enum_non_enum_default(o.long_enum_non_enum_default),
2823         long_enum_normal_default(o.long_enum_normal_default) {
2824   testarrayoftables.reserve(o.testarrayoftables.size());
2825   for (const auto &testarrayoftables_ : o.testarrayoftables) { testarrayoftables.emplace_back((testarrayoftables_) ? new MyGame::Example::MonsterT(*testarrayoftables_) : nullptr); }
2826   vector_of_referrables.reserve(o.vector_of_referrables.size());
2827   for (const auto &vector_of_referrables_ : o.vector_of_referrables) { vector_of_referrables.emplace_back((vector_of_referrables_) ? new MyGame::Example::ReferrableT(*vector_of_referrables_) : nullptr); }
2828   vector_of_strong_referrables.reserve(o.vector_of_strong_referrables.size());
2829   for (const auto &vector_of_strong_referrables_ : o.vector_of_strong_referrables) { vector_of_strong_referrables.emplace_back((vector_of_strong_referrables_) ? new MyGame::Example::ReferrableT(*vector_of_strong_referrables_) : nullptr); }
2830   vector_of_co_owning_references.reserve(o.vector_of_co_owning_references.size());
2831   for (const auto &vector_of_co_owning_references_ : o.vector_of_co_owning_references) { vector_of_co_owning_references.emplace_back((vector_of_co_owning_references_) ? new ReferrableT(*vector_of_co_owning_references_) : nullptr); }
2832   scalar_key_sorted_tables.reserve(o.scalar_key_sorted_tables.size());
2833   for (const auto &scalar_key_sorted_tables_ : o.scalar_key_sorted_tables) { scalar_key_sorted_tables.emplace_back((scalar_key_sorted_tables_) ? new MyGame::Example::StatT(*scalar_key_sorted_tables_) : nullptr); }
2834 }
2835 
2836 inline MonsterT &MonsterT::operator=(MonsterT o) FLATBUFFERS_NOEXCEPT {
2837   std::swap(pos, o.pos);
2838   std::swap(mana, o.mana);
2839   std::swap(hp, o.hp);
2840   std::swap(name, o.name);
2841   std::swap(inventory, o.inventory);
2842   std::swap(color, o.color);
2843   std::swap(test, o.test);
2844   std::swap(test4, o.test4);
2845   std::swap(testarrayofstring, o.testarrayofstring);
2846   std::swap(testarrayoftables, o.testarrayoftables);
2847   std::swap(enemy, o.enemy);
2848   std::swap(testnestedflatbuffer, o.testnestedflatbuffer);
2849   std::swap(testempty, o.testempty);
2850   std::swap(testbool, o.testbool);
2851   std::swap(testhashs32_fnv1, o.testhashs32_fnv1);
2852   std::swap(testhashu32_fnv1, o.testhashu32_fnv1);
2853   std::swap(testhashs64_fnv1, o.testhashs64_fnv1);
2854   std::swap(testhashu64_fnv1, o.testhashu64_fnv1);
2855   std::swap(testhashs32_fnv1a, o.testhashs32_fnv1a);
2856   std::swap(testhashu32_fnv1a, o.testhashu32_fnv1a);
2857   std::swap(testhashs64_fnv1a, o.testhashs64_fnv1a);
2858   std::swap(testhashu64_fnv1a, o.testhashu64_fnv1a);
2859   std::swap(testarrayofbools, o.testarrayofbools);
2860   std::swap(testf, o.testf);
2861   std::swap(testf2, o.testf2);
2862   std::swap(testf3, o.testf3);
2863   std::swap(testarrayofstring2, o.testarrayofstring2);
2864   std::swap(testarrayofsortedstruct, o.testarrayofsortedstruct);
2865   std::swap(flex, o.flex);
2866   std::swap(test5, o.test5);
2867   std::swap(vector_of_longs, o.vector_of_longs);
2868   std::swap(vector_of_doubles, o.vector_of_doubles);
2869   std::swap(parent_namespace_test, o.parent_namespace_test);
2870   std::swap(vector_of_referrables, o.vector_of_referrables);
2871   std::swap(single_weak_reference, o.single_weak_reference);
2872   std::swap(vector_of_weak_references, o.vector_of_weak_references);
2873   std::swap(vector_of_strong_referrables, o.vector_of_strong_referrables);
2874   std::swap(co_owning_reference, o.co_owning_reference);
2875   std::swap(vector_of_co_owning_references, o.vector_of_co_owning_references);
2876   std::swap(non_owning_reference, o.non_owning_reference);
2877   std::swap(vector_of_non_owning_references, o.vector_of_non_owning_references);
2878   std::swap(any_unique, o.any_unique);
2879   std::swap(any_ambiguous, o.any_ambiguous);
2880   std::swap(vector_of_enums, o.vector_of_enums);
2881   std::swap(signed_enum, o.signed_enum);
2882   std::swap(testrequirednestedflatbuffer, o.testrequirednestedflatbuffer);
2883   std::swap(scalar_key_sorted_tables, o.scalar_key_sorted_tables);
2884   std::swap(native_inline, o.native_inline);
2885   std::swap(long_enum_non_enum_default, o.long_enum_non_enum_default);
2886   std::swap(long_enum_normal_default, o.long_enum_normal_default);
2887   return *this;
2888 }
2889 
2890 inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
2891   auto _o = std::unique_ptr<MonsterT>(new MonsterT());
2892   UnPackTo(_o.get(), _resolver);
2893   return _o.release();
2894 }
2895 
2896 inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const {
2897   (void)_o;
2898   (void)_resolver;
2899   { auto _e = pos(); if (_e) _o->pos = flatbuffers::unique_ptr<MyGame::Example::Vec3>(new MyGame::Example::Vec3(*_e)); }
2900   { auto _e = mana(); _o->mana = _e; }
2901   { auto _e = hp(); _o->hp = _e; }
2902   { auto _e = name(); if (_e) _o->name = _e->str(); }
2903   { auto _e = inventory(); if (_e) { _o->inventory.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inventory.begin()); } }
2904   { auto _e = color(); _o->color = _e; }
2905   { auto _e = test_type(); _o->test.type = _e; }
2906   { auto _e = test(); if (_e) _o->test.value = MyGame::Example::AnyUnion::UnPack(_e, test_type(), _resolver); }
2907   { auto _e = test4(); if (_e) { _o->test4.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test4[_i] = *_e->Get(_i); } } }
2908   { auto _e = testarrayofstring(); if (_e) { _o->testarrayofstring.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring[_i] = _e->Get(_i)->str(); } } }
2909   { auto _e = testarrayoftables(); if (_e) { _o->testarrayoftables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayoftables[_i] = flatbuffers::unique_ptr<MyGame::Example::MonsterT>(_e->Get(_i)->UnPack(_resolver)); } } }
2910   { auto _e = enemy(); if (_e) _o->enemy = flatbuffers::unique_ptr<MyGame::Example::MonsterT>(_e->UnPack(_resolver)); }
2911   { auto _e = testnestedflatbuffer(); if (_e) { _o->testnestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testnestedflatbuffer.begin()); } }
2912   { auto _e = testempty(); if (_e) _o->testempty = flatbuffers::unique_ptr<MyGame::Example::StatT>(_e->UnPack(_resolver)); }
2913   { auto _e = testbool(); _o->testbool = _e; }
2914   { auto _e = testhashs32_fnv1(); _o->testhashs32_fnv1 = _e; }
2915   { auto _e = testhashu32_fnv1(); _o->testhashu32_fnv1 = _e; }
2916   { auto _e = testhashs64_fnv1(); _o->testhashs64_fnv1 = _e; }
2917   { auto _e = testhashu64_fnv1(); _o->testhashu64_fnv1 = _e; }
2918   { auto _e = testhashs32_fnv1a(); _o->testhashs32_fnv1a = _e; }
2919   { auto _e = testhashu32_fnv1a(); //scalar resolver, naked
2920 if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->testhashu32_fnv1a), static_cast<flatbuffers::hash_value_t>(_e)); else _o->testhashu32_fnv1a = nullptr; }
2921   { auto _e = testhashs64_fnv1a(); _o->testhashs64_fnv1a = _e; }
2922   { auto _e = testhashu64_fnv1a(); _o->testhashu64_fnv1a = _e; }
2923   { auto _e = testarrayofbools(); if (_e) { _o->testarrayofbools.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofbools[_i] = _e->Get(_i) != 0; } } }
2924   { auto _e = testf(); _o->testf = _e; }
2925   { auto _e = testf2(); _o->testf2 = _e; }
2926   { auto _e = testf3(); _o->testf3 = _e; }
2927   { auto _e = testarrayofstring2(); if (_e) { _o->testarrayofstring2.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring2[_i] = _e->Get(_i)->str(); } } }
2928   { auto _e = testarrayofsortedstruct(); if (_e) { _o->testarrayofsortedstruct.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofsortedstruct[_i] = *_e->Get(_i); } } }
2929   { auto _e = flex(); if (_e) { _o->flex.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->flex.begin()); } }
2930   { auto _e = test5(); if (_e) { _o->test5.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test5[_i] = *_e->Get(_i); } } }
2931   { auto _e = vector_of_longs(); if (_e) { _o->vector_of_longs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_longs[_i] = _e->Get(_i); } } }
2932   { auto _e = vector_of_doubles(); if (_e) { _o->vector_of_doubles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_doubles[_i] = _e->Get(_i); } } }
2933   { auto _e = parent_namespace_test(); if (_e) _o->parent_namespace_test = flatbuffers::unique_ptr<MyGame::InParentNamespaceT>(_e->UnPack(_resolver)); }
2934   { auto _e = vector_of_referrables(); if (_e) { _o->vector_of_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_referrables[_i] = flatbuffers::unique_ptr<MyGame::Example::ReferrableT>(_e->Get(_i)->UnPack(_resolver)); } } }
2935   { auto _e = single_weak_reference(); //scalar resolver, naked
2936 if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->single_weak_reference), static_cast<flatbuffers::hash_value_t>(_e)); else _o->single_weak_reference = nullptr; }
2937   { auto _e = vector_of_weak_references(); if (_e) { _o->vector_of_weak_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, naked
2938 if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->vector_of_weak_references[_i]), static_cast<flatbuffers::hash_value_t>(_e->Get(_i))); else _o->vector_of_weak_references[_i] = nullptr; } } }
2939   { auto _e = vector_of_strong_referrables(); if (_e) { _o->vector_of_strong_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_strong_referrables[_i] = flatbuffers::unique_ptr<MyGame::Example::ReferrableT>(_e->Get(_i)->UnPack(_resolver)); } } }
2940   { auto _e = co_owning_reference(); //scalar resolver, naked
2941 if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->co_owning_reference), static_cast<flatbuffers::hash_value_t>(_e)); else _o->co_owning_reference = nullptr; }
2942   { auto _e = vector_of_co_owning_references(); if (_e) { _o->vector_of_co_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, default_ptr_type
2943 if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->vector_of_co_owning_references[_i]), static_cast<flatbuffers::hash_value_t>(_e->Get(_i)));/* else do nothing */; } } }
2944   { auto _e = non_owning_reference(); //scalar resolver, naked
2945 if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->non_owning_reference), static_cast<flatbuffers::hash_value_t>(_e)); else _o->non_owning_reference = nullptr; }
2946   { auto _e = vector_of_non_owning_references(); if (_e) { _o->vector_of_non_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, naked
2947 if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->vector_of_non_owning_references[_i]), static_cast<flatbuffers::hash_value_t>(_e->Get(_i))); else _o->vector_of_non_owning_references[_i] = nullptr; } } }
2948   { auto _e = any_unique_type(); _o->any_unique.type = _e; }
2949   { auto _e = any_unique(); if (_e) _o->any_unique.value = MyGame::Example::AnyUniqueAliasesUnion::UnPack(_e, any_unique_type(), _resolver); }
2950   { auto _e = any_ambiguous_type(); _o->any_ambiguous.type = _e; }
2951   { auto _e = any_ambiguous(); if (_e) _o->any_ambiguous.value = MyGame::Example::AnyAmbiguousAliasesUnion::UnPack(_e, any_ambiguous_type(), _resolver); }
2952   { auto _e = vector_of_enums(); if (_e) { _o->vector_of_enums.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_enums[_i] = static_cast<MyGame::Example::Color>(_e->Get(_i)); } } }
2953   { auto _e = signed_enum(); _o->signed_enum = _e; }
2954   { auto _e = testrequirednestedflatbuffer(); if (_e) { _o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } }
2955   { auto _e = scalar_key_sorted_tables(); if (_e) { _o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->scalar_key_sorted_tables[_i] = flatbuffers::unique_ptr<MyGame::Example::StatT>(_e->Get(_i)->UnPack(_resolver)); } } }
2956   { auto _e = native_inline(); if (_e) _o->native_inline = *_e; }
2957   { auto _e = long_enum_non_enum_default(); _o->long_enum_non_enum_default = _e; }
2958   { auto _e = long_enum_normal_default(); _o->long_enum_normal_default = _e; }
2959 }
2960 
2961 inline flatbuffers::Offset<Monster> Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
2962   return CreateMonster(_fbb, _o, _rehasher);
2963 }
2964 
2965 inline flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
2966   (void)_rehasher;
2967   (void)_o;
2968   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MonsterT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
2969   auto _pos = _o->pos ? _o->pos.get() : nullptr;
2970   auto _mana = _o->mana;
2971   auto _hp = _o->hp;
2972   auto _name = _fbb.CreateString(_o->name);
2973   auto _inventory = _o->inventory.size() ? _fbb.CreateVector(_o->inventory) : 0;
2974   auto _color = _o->color;
2975   auto _test_type = _o->test.type;
2976   auto _test = _o->test.Pack(_fbb);
2977   auto _test4 = _o->test4.size() ? _fbb.CreateVectorOfStructs(_o->test4) : 0;
2978   auto _testarrayofstring = _o->testarrayofstring.size() ? _fbb.CreateVectorOfStrings(_o->testarrayofstring) : 0;
2979   auto _testarrayoftables = _o->testarrayoftables.size() ? _fbb.CreateVector<flatbuffers::Offset<MyGame::Example::Monster>> (_o->testarrayoftables.size(), [](size_t i, _VectorArgs *__va) { return CreateMonster(*__va->__fbb, __va->__o->testarrayoftables[i].get(), __va->__rehasher); }, &_va ) : 0;
2980   auto _enemy = _o->enemy ? CreateMonster(_fbb, _o->enemy.get(), _rehasher) : 0;
2981   auto _testnestedflatbuffer = _o->testnestedflatbuffer.size() ? _fbb.CreateVector(_o->testnestedflatbuffer) : 0;
2982   auto _testempty = _o->testempty ? CreateStat(_fbb, _o->testempty.get(), _rehasher) : 0;
2983   auto _testbool = _o->testbool;
2984   auto _testhashs32_fnv1 = _o->testhashs32_fnv1;
2985   auto _testhashu32_fnv1 = _o->testhashu32_fnv1;
2986   auto _testhashs64_fnv1 = _o->testhashs64_fnv1;
2987   auto _testhashu64_fnv1 = _o->testhashu64_fnv1;
2988   auto _testhashs32_fnv1a = _o->testhashs32_fnv1a;
2989   auto _testhashu32_fnv1a = _rehasher ? static_cast<uint32_t>((*_rehasher)(_o->testhashu32_fnv1a)) : 0;
2990   auto _testhashs64_fnv1a = _o->testhashs64_fnv1a;
2991   auto _testhashu64_fnv1a = _o->testhashu64_fnv1a;
2992   auto _testarrayofbools = _o->testarrayofbools.size() ? _fbb.CreateVector(_o->testarrayofbools) : 0;
2993   auto _testf = _o->testf;
2994   auto _testf2 = _o->testf2;
2995   auto _testf3 = _o->testf3;
2996   auto _testarrayofstring2 = _o->testarrayofstring2.size() ? _fbb.CreateVectorOfStrings(_o->testarrayofstring2) : 0;
2997   auto _testarrayofsortedstruct = _o->testarrayofsortedstruct.size() ? _fbb.CreateVectorOfStructs(_o->testarrayofsortedstruct) : 0;
2998   auto _flex = _o->flex.size() ? _fbb.CreateVector(_o->flex) : 0;
2999   auto _test5 = _o->test5.size() ? _fbb.CreateVectorOfStructs(_o->test5) : 0;
3000   auto _vector_of_longs = _o->vector_of_longs.size() ? _fbb.CreateVector(_o->vector_of_longs) : 0;
3001   auto _vector_of_doubles = _o->vector_of_doubles.size() ? _fbb.CreateVector(_o->vector_of_doubles) : 0;
3002   auto _parent_namespace_test = _o->parent_namespace_test ? CreateInParentNamespace(_fbb, _o->parent_namespace_test.get(), _rehasher) : 0;
3003   auto _vector_of_referrables = _o->vector_of_referrables.size() ? _fbb.CreateVector<flatbuffers::Offset<MyGame::Example::Referrable>> (_o->vector_of_referrables.size(), [](size_t i, _VectorArgs *__va) { return CreateReferrable(*__va->__fbb, __va->__o->vector_of_referrables[i].get(), __va->__rehasher); }, &_va ) : 0;
3004   auto _single_weak_reference = _rehasher ? static_cast<uint64_t>((*_rehasher)(_o->single_weak_reference)) : 0;
3005   auto _vector_of_weak_references = _o->vector_of_weak_references.size() ? _fbb.CreateVector<uint64_t>(_o->vector_of_weak_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast<uint64_t>((*__va->__rehasher)(__va->__o->vector_of_weak_references[i])) : 0; }, &_va ) : 0;
3006   auto _vector_of_strong_referrables = _o->vector_of_strong_referrables.size() ? _fbb.CreateVector<flatbuffers::Offset<MyGame::Example::Referrable>> (_o->vector_of_strong_referrables.size(), [](size_t i, _VectorArgs *__va) { return CreateReferrable(*__va->__fbb, __va->__o->vector_of_strong_referrables[i].get(), __va->__rehasher); }, &_va ) : 0;
3007   auto _co_owning_reference = _rehasher ? static_cast<uint64_t>((*_rehasher)(_o->co_owning_reference)) : 0;
3008   auto _vector_of_co_owning_references = _o->vector_of_co_owning_references.size() ? _fbb.CreateVector<uint64_t>(_o->vector_of_co_owning_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast<uint64_t>((*__va->__rehasher)(__va->__o->vector_of_co_owning_references[i].get())) : 0; }, &_va ) : 0;
3009   auto _non_owning_reference = _rehasher ? static_cast<uint64_t>((*_rehasher)(_o->non_owning_reference)) : 0;
3010   auto _vector_of_non_owning_references = _o->vector_of_non_owning_references.size() ? _fbb.CreateVector<uint64_t>(_o->vector_of_non_owning_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast<uint64_t>((*__va->__rehasher)(__va->__o->vector_of_non_owning_references[i])) : 0; }, &_va ) : 0;
3011   auto _any_unique_type = _o->any_unique.type;
3012   auto _any_unique = _o->any_unique.Pack(_fbb);
3013   auto _any_ambiguous_type = _o->any_ambiguous.type;
3014   auto _any_ambiguous = _o->any_ambiguous.Pack(_fbb);
3015   auto _vector_of_enums = _o->vector_of_enums.size() ? _fbb.CreateVectorScalarCast<uint8_t>(flatbuffers::data(_o->vector_of_enums), _o->vector_of_enums.size()) : 0;
3016   auto _signed_enum = _o->signed_enum;
3017   auto _testrequirednestedflatbuffer = _o->testrequirednestedflatbuffer.size() ? _fbb.CreateVector(_o->testrequirednestedflatbuffer) : 0;
3018   auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector<flatbuffers::Offset<MyGame::Example::Stat>> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0;
3019   auto _native_inline = &_o->native_inline;
3020   auto _long_enum_non_enum_default = _o->long_enum_non_enum_default;
3021   auto _long_enum_normal_default = _o->long_enum_normal_default;
3022   return MyGame::Example::CreateMonster(
3023       _fbb,
3024       _pos,
3025       _mana,
3026       _hp,
3027       _name,
3028       _inventory,
3029       _color,
3030       _test_type,
3031       _test,
3032       _test4,
3033       _testarrayofstring,
3034       _testarrayoftables,
3035       _enemy,
3036       _testnestedflatbuffer,
3037       _testempty,
3038       _testbool,
3039       _testhashs32_fnv1,
3040       _testhashu32_fnv1,
3041       _testhashs64_fnv1,
3042       _testhashu64_fnv1,
3043       _testhashs32_fnv1a,
3044       _testhashu32_fnv1a,
3045       _testhashs64_fnv1a,
3046       _testhashu64_fnv1a,
3047       _testarrayofbools,
3048       _testf,
3049       _testf2,
3050       _testf3,
3051       _testarrayofstring2,
3052       _testarrayofsortedstruct,
3053       _flex,
3054       _test5,
3055       _vector_of_longs,
3056       _vector_of_doubles,
3057       _parent_namespace_test,
3058       _vector_of_referrables,
3059       _single_weak_reference,
3060       _vector_of_weak_references,
3061       _vector_of_strong_referrables,
3062       _co_owning_reference,
3063       _vector_of_co_owning_references,
3064       _non_owning_reference,
3065       _vector_of_non_owning_references,
3066       _any_unique_type,
3067       _any_unique,
3068       _any_ambiguous_type,
3069       _any_ambiguous,
3070       _vector_of_enums,
3071       _signed_enum,
3072       _testrequirednestedflatbuffer,
3073       _scalar_key_sorted_tables,
3074       _native_inline,
3075       _long_enum_non_enum_default,
3076       _long_enum_normal_default);
3077 }
3078 
3079 
3080 inline bool operator==(const TypeAliasesT &lhs, const TypeAliasesT &rhs) {
3081   return
3082       (lhs.i8 == rhs.i8) &&
3083       (lhs.u8 == rhs.u8) &&
3084       (lhs.i16 == rhs.i16) &&
3085       (lhs.u16 == rhs.u16) &&
3086       (lhs.i32 == rhs.i32) &&
3087       (lhs.u32 == rhs.u32) &&
3088       (lhs.i64 == rhs.i64) &&
3089       (lhs.u64 == rhs.u64) &&
3090       (lhs.f32 == rhs.f32) &&
3091       (lhs.f64 == rhs.f64) &&
3092       (lhs.v8 == rhs.v8) &&
3093       (lhs.vf64 == rhs.vf64);
3094 }
3095 
3096 inline bool operator!=(const TypeAliasesT &lhs, const TypeAliasesT &rhs) {
3097     return !(lhs == rhs);
3098 }
3099 
3100 
3101 inline TypeAliasesT *TypeAliases::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
3102   auto _o = std::unique_ptr<TypeAliasesT>(new TypeAliasesT());
3103   UnPackTo(_o.get(), _resolver);
3104   return _o.release();
3105 }
3106 
3107 inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver) const {
3108   (void)_o;
3109   (void)_resolver;
3110   { auto _e = i8(); _o->i8 = _e; }
3111   { auto _e = u8(); _o->u8 = _e; }
3112   { auto _e = i16(); _o->i16 = _e; }
3113   { auto _e = u16(); _o->u16 = _e; }
3114   { auto _e = i32(); _o->i32 = _e; }
3115   { auto _e = u32(); _o->u32 = _e; }
3116   { auto _e = i64(); _o->i64 = _e; }
3117   { auto _e = u64(); _o->u64 = _e; }
3118   { auto _e = f32(); _o->f32 = _e; }
3119   { auto _e = f64(); _o->f64 = _e; }
3120   { auto _e = v8(); if (_e) { _o->v8.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->v8.begin()); } }
3121   { auto _e = vf64(); if (_e) { _o->vf64.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vf64[_i] = _e->Get(_i); } } }
3122 }
3123 
3124 inline flatbuffers::Offset<TypeAliases> TypeAliases::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
3125   return CreateTypeAliases(_fbb, _o, _rehasher);
3126 }
3127 
3128 inline flatbuffers::Offset<TypeAliases> CreateTypeAliases(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
3129   (void)_rehasher;
3130   (void)_o;
3131   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TypeAliasesT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
3132   auto _i8 = _o->i8;
3133   auto _u8 = _o->u8;
3134   auto _i16 = _o->i16;
3135   auto _u16 = _o->u16;
3136   auto _i32 = _o->i32;
3137   auto _u32 = _o->u32;
3138   auto _i64 = _o->i64;
3139   auto _u64 = _o->u64;
3140   auto _f32 = _o->f32;
3141   auto _f64 = _o->f64;
3142   auto _v8 = _o->v8.size() ? _fbb.CreateVector(_o->v8) : 0;
3143   auto _vf64 = _o->vf64.size() ? _fbb.CreateVector(_o->vf64) : 0;
3144   return MyGame::Example::CreateTypeAliases(
3145       _fbb,
3146       _i8,
3147       _u8,
3148       _i16,
3149       _u16,
3150       _i32,
3151       _u32,
3152       _i64,
3153       _u64,
3154       _f32,
3155       _f64,
3156       _v8,
3157       _vf64);
3158 }
3159 
3160 inline bool VerifyAny(flatbuffers::Verifier &verifier, const void *obj, Any type) {
3161   switch (type) {
3162     case Any_NONE: {
3163       return true;
3164     }
3165     case Any_Monster: {
3166       auto ptr = reinterpret_cast<const MyGame::Example::Monster *>(obj);
3167       return verifier.VerifyTable(ptr);
3168     }
3169     case Any_TestSimpleTableWithEnum: {
3170       auto ptr = reinterpret_cast<const MyGame::Example::TestSimpleTableWithEnum *>(obj);
3171       return verifier.VerifyTable(ptr);
3172     }
3173     case Any_MyGame_Example2_Monster: {
3174       auto ptr = reinterpret_cast<const MyGame::Example2::Monster *>(obj);
3175       return verifier.VerifyTable(ptr);
3176     }
3177     default: return true;
3178   }
3179 }
3180 
3181 inline bool VerifyAnyVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
3182   if (!values || !types) return !values && !types;
3183   if (values->size() != types->size()) return false;
3184   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
3185     if (!VerifyAny(
3186         verifier,  values->Get(i), types->GetEnum<Any>(i))) {
3187       return false;
3188     }
3189   }
3190   return true;
3191 }
3192 
3193 inline void *AnyUnion::UnPack(const void *obj, Any type, const flatbuffers::resolver_function_t *resolver) {
3194   (void)resolver;
3195   switch (type) {
3196     case Any_Monster: {
3197       auto ptr = reinterpret_cast<const MyGame::Example::Monster *>(obj);
3198       return ptr->UnPack(resolver);
3199     }
3200     case Any_TestSimpleTableWithEnum: {
3201       auto ptr = reinterpret_cast<const MyGame::Example::TestSimpleTableWithEnum *>(obj);
3202       return ptr->UnPack(resolver);
3203     }
3204     case Any_MyGame_Example2_Monster: {
3205       auto ptr = reinterpret_cast<const MyGame::Example2::Monster *>(obj);
3206       return ptr->UnPack(resolver);
3207     }
3208     default: return nullptr;
3209   }
3210 }
3211 
3212 inline flatbuffers::Offset<void> AnyUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
3213   (void)_rehasher;
3214   switch (type) {
3215     case Any_Monster: {
3216       auto ptr = reinterpret_cast<const MyGame::Example::MonsterT *>(value);
3217       return CreateMonster(_fbb, ptr, _rehasher).Union();
3218     }
3219     case Any_TestSimpleTableWithEnum: {
3220       auto ptr = reinterpret_cast<const MyGame::Example::TestSimpleTableWithEnumT *>(value);
3221       return CreateTestSimpleTableWithEnum(_fbb, ptr, _rehasher).Union();
3222     }
3223     case Any_MyGame_Example2_Monster: {
3224       auto ptr = reinterpret_cast<const MyGame::Example2::MonsterT *>(value);
3225       return CreateMonster(_fbb, ptr, _rehasher).Union();
3226     }
3227     default: return 0;
3228   }
3229 }
3230 
3231 inline AnyUnion::AnyUnion(const AnyUnion &u) : type(u.type), value(nullptr) {
3232   switch (type) {
3233     case Any_Monster: {
3234       value = new MyGame::Example::MonsterT(*reinterpret_cast<MyGame::Example::MonsterT *>(u.value));
3235       break;
3236     }
3237     case Any_TestSimpleTableWithEnum: {
3238       value = new MyGame::Example::TestSimpleTableWithEnumT(*reinterpret_cast<MyGame::Example::TestSimpleTableWithEnumT *>(u.value));
3239       break;
3240     }
3241     case Any_MyGame_Example2_Monster: {
3242       value = new MyGame::Example2::MonsterT(*reinterpret_cast<MyGame::Example2::MonsterT *>(u.value));
3243       break;
3244     }
3245     default:
3246       break;
3247   }
3248 }
3249 
3250 inline void AnyUnion::Reset() {
3251   switch (type) {
3252     case Any_Monster: {
3253       auto ptr = reinterpret_cast<MyGame::Example::MonsterT *>(value);
3254       delete ptr;
3255       break;
3256     }
3257     case Any_TestSimpleTableWithEnum: {
3258       auto ptr = reinterpret_cast<MyGame::Example::TestSimpleTableWithEnumT *>(value);
3259       delete ptr;
3260       break;
3261     }
3262     case Any_MyGame_Example2_Monster: {
3263       auto ptr = reinterpret_cast<MyGame::Example2::MonsterT *>(value);
3264       delete ptr;
3265       break;
3266     }
3267     default: break;
3268   }
3269   value = nullptr;
3270   type = Any_NONE;
3271 }
3272 
3273 inline bool VerifyAnyUniqueAliases(flatbuffers::Verifier &verifier, const void *obj, AnyUniqueAliases type) {
3274   switch (type) {
3275     case AnyUniqueAliases_NONE: {
3276       return true;
3277     }
3278     case AnyUniqueAliases_M: {
3279       auto ptr = reinterpret_cast<const MyGame::Example::Monster *>(obj);
3280       return verifier.VerifyTable(ptr);
3281     }
3282     case AnyUniqueAliases_TS: {
3283       auto ptr = reinterpret_cast<const MyGame::Example::TestSimpleTableWithEnum *>(obj);
3284       return verifier.VerifyTable(ptr);
3285     }
3286     case AnyUniqueAliases_M2: {
3287       auto ptr = reinterpret_cast<const MyGame::Example2::Monster *>(obj);
3288       return verifier.VerifyTable(ptr);
3289     }
3290     default: return true;
3291   }
3292 }
3293 
3294 inline bool VerifyAnyUniqueAliasesVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
3295   if (!values || !types) return !values && !types;
3296   if (values->size() != types->size()) return false;
3297   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
3298     if (!VerifyAnyUniqueAliases(
3299         verifier,  values->Get(i), types->GetEnum<AnyUniqueAliases>(i))) {
3300       return false;
3301     }
3302   }
3303   return true;
3304 }
3305 
3306 inline void *AnyUniqueAliasesUnion::UnPack(const void *obj, AnyUniqueAliases type, const flatbuffers::resolver_function_t *resolver) {
3307   (void)resolver;
3308   switch (type) {
3309     case AnyUniqueAliases_M: {
3310       auto ptr = reinterpret_cast<const MyGame::Example::Monster *>(obj);
3311       return ptr->UnPack(resolver);
3312     }
3313     case AnyUniqueAliases_TS: {
3314       auto ptr = reinterpret_cast<const MyGame::Example::TestSimpleTableWithEnum *>(obj);
3315       return ptr->UnPack(resolver);
3316     }
3317     case AnyUniqueAliases_M2: {
3318       auto ptr = reinterpret_cast<const MyGame::Example2::Monster *>(obj);
3319       return ptr->UnPack(resolver);
3320     }
3321     default: return nullptr;
3322   }
3323 }
3324 
3325 inline flatbuffers::Offset<void> AnyUniqueAliasesUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
3326   (void)_rehasher;
3327   switch (type) {
3328     case AnyUniqueAliases_M: {
3329       auto ptr = reinterpret_cast<const MyGame::Example::MonsterT *>(value);
3330       return CreateMonster(_fbb, ptr, _rehasher).Union();
3331     }
3332     case AnyUniqueAliases_TS: {
3333       auto ptr = reinterpret_cast<const MyGame::Example::TestSimpleTableWithEnumT *>(value);
3334       return CreateTestSimpleTableWithEnum(_fbb, ptr, _rehasher).Union();
3335     }
3336     case AnyUniqueAliases_M2: {
3337       auto ptr = reinterpret_cast<const MyGame::Example2::MonsterT *>(value);
3338       return CreateMonster(_fbb, ptr, _rehasher).Union();
3339     }
3340     default: return 0;
3341   }
3342 }
3343 
3344 inline AnyUniqueAliasesUnion::AnyUniqueAliasesUnion(const AnyUniqueAliasesUnion &u) : type(u.type), value(nullptr) {
3345   switch (type) {
3346     case AnyUniqueAliases_M: {
3347       value = new MyGame::Example::MonsterT(*reinterpret_cast<MyGame::Example::MonsterT *>(u.value));
3348       break;
3349     }
3350     case AnyUniqueAliases_TS: {
3351       value = new MyGame::Example::TestSimpleTableWithEnumT(*reinterpret_cast<MyGame::Example::TestSimpleTableWithEnumT *>(u.value));
3352       break;
3353     }
3354     case AnyUniqueAliases_M2: {
3355       value = new MyGame::Example2::MonsterT(*reinterpret_cast<MyGame::Example2::MonsterT *>(u.value));
3356       break;
3357     }
3358     default:
3359       break;
3360   }
3361 }
3362 
3363 inline void AnyUniqueAliasesUnion::Reset() {
3364   switch (type) {
3365     case AnyUniqueAliases_M: {
3366       auto ptr = reinterpret_cast<MyGame::Example::MonsterT *>(value);
3367       delete ptr;
3368       break;
3369     }
3370     case AnyUniqueAliases_TS: {
3371       auto ptr = reinterpret_cast<MyGame::Example::TestSimpleTableWithEnumT *>(value);
3372       delete ptr;
3373       break;
3374     }
3375     case AnyUniqueAliases_M2: {
3376       auto ptr = reinterpret_cast<MyGame::Example2::MonsterT *>(value);
3377       delete ptr;
3378       break;
3379     }
3380     default: break;
3381   }
3382   value = nullptr;
3383   type = AnyUniqueAliases_NONE;
3384 }
3385 
3386 inline bool VerifyAnyAmbiguousAliases(flatbuffers::Verifier &verifier, const void *obj, AnyAmbiguousAliases type) {
3387   switch (type) {
3388     case AnyAmbiguousAliases_NONE: {
3389       return true;
3390     }
3391     case AnyAmbiguousAliases_M1: {
3392       auto ptr = reinterpret_cast<const MyGame::Example::Monster *>(obj);
3393       return verifier.VerifyTable(ptr);
3394     }
3395     case AnyAmbiguousAliases_M2: {
3396       auto ptr = reinterpret_cast<const MyGame::Example::Monster *>(obj);
3397       return verifier.VerifyTable(ptr);
3398     }
3399     case AnyAmbiguousAliases_M3: {
3400       auto ptr = reinterpret_cast<const MyGame::Example::Monster *>(obj);
3401       return verifier.VerifyTable(ptr);
3402     }
3403     default: return true;
3404   }
3405 }
3406 
3407 inline bool VerifyAnyAmbiguousAliasesVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
3408   if (!values || !types) return !values && !types;
3409   if (values->size() != types->size()) return false;
3410   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
3411     if (!VerifyAnyAmbiguousAliases(
3412         verifier,  values->Get(i), types->GetEnum<AnyAmbiguousAliases>(i))) {
3413       return false;
3414     }
3415   }
3416   return true;
3417 }
3418 
3419 inline void *AnyAmbiguousAliasesUnion::UnPack(const void *obj, AnyAmbiguousAliases type, const flatbuffers::resolver_function_t *resolver) {
3420   (void)resolver;
3421   switch (type) {
3422     case AnyAmbiguousAliases_M1: {
3423       auto ptr = reinterpret_cast<const MyGame::Example::Monster *>(obj);
3424       return ptr->UnPack(resolver);
3425     }
3426     case AnyAmbiguousAliases_M2: {
3427       auto ptr = reinterpret_cast<const MyGame::Example::Monster *>(obj);
3428       return ptr->UnPack(resolver);
3429     }
3430     case AnyAmbiguousAliases_M3: {
3431       auto ptr = reinterpret_cast<const MyGame::Example::Monster *>(obj);
3432       return ptr->UnPack(resolver);
3433     }
3434     default: return nullptr;
3435   }
3436 }
3437 
3438 inline flatbuffers::Offset<void> AnyAmbiguousAliasesUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
3439   (void)_rehasher;
3440   switch (type) {
3441     case AnyAmbiguousAliases_M1: {
3442       auto ptr = reinterpret_cast<const MyGame::Example::MonsterT *>(value);
3443       return CreateMonster(_fbb, ptr, _rehasher).Union();
3444     }
3445     case AnyAmbiguousAliases_M2: {
3446       auto ptr = reinterpret_cast<const MyGame::Example::MonsterT *>(value);
3447       return CreateMonster(_fbb, ptr, _rehasher).Union();
3448     }
3449     case AnyAmbiguousAliases_M3: {
3450       auto ptr = reinterpret_cast<const MyGame::Example::MonsterT *>(value);
3451       return CreateMonster(_fbb, ptr, _rehasher).Union();
3452     }
3453     default: return 0;
3454   }
3455 }
3456 
3457 inline AnyAmbiguousAliasesUnion::AnyAmbiguousAliasesUnion(const AnyAmbiguousAliasesUnion &u) : type(u.type), value(nullptr) {
3458   switch (type) {
3459     case AnyAmbiguousAliases_M1: {
3460       value = new MyGame::Example::MonsterT(*reinterpret_cast<MyGame::Example::MonsterT *>(u.value));
3461       break;
3462     }
3463     case AnyAmbiguousAliases_M2: {
3464       value = new MyGame::Example::MonsterT(*reinterpret_cast<MyGame::Example::MonsterT *>(u.value));
3465       break;
3466     }
3467     case AnyAmbiguousAliases_M3: {
3468       value = new MyGame::Example::MonsterT(*reinterpret_cast<MyGame::Example::MonsterT *>(u.value));
3469       break;
3470     }
3471     default:
3472       break;
3473   }
3474 }
3475 
3476 inline void AnyAmbiguousAliasesUnion::Reset() {
3477   switch (type) {
3478     case AnyAmbiguousAliases_M1: {
3479       auto ptr = reinterpret_cast<MyGame::Example::MonsterT *>(value);
3480       delete ptr;
3481       break;
3482     }
3483     case AnyAmbiguousAliases_M2: {
3484       auto ptr = reinterpret_cast<MyGame::Example::MonsterT *>(value);
3485       delete ptr;
3486       break;
3487     }
3488     case AnyAmbiguousAliases_M3: {
3489       auto ptr = reinterpret_cast<MyGame::Example::MonsterT *>(value);
3490       delete ptr;
3491       break;
3492     }
3493     default: break;
3494   }
3495   value = nullptr;
3496   type = AnyAmbiguousAliases_NONE;
3497 }
3498 
3499 inline const flatbuffers::TypeTable *ColorTypeTable() {
3500   static const flatbuffers::TypeCode type_codes[] = {
3501     { flatbuffers::ET_UCHAR, 0, 0 },
3502     { flatbuffers::ET_UCHAR, 0, 0 },
3503     { flatbuffers::ET_UCHAR, 0, 0 }
3504   };
3505   static const flatbuffers::TypeFunction type_refs[] = {
3506     MyGame::Example::ColorTypeTable
3507   };
3508   static const int64_t values[] = { 1, 2, 8 };
3509   static const char * const names[] = {
3510     "Red",
3511     "Green",
3512     "Blue"
3513   };
3514   static const flatbuffers::TypeTable tt = {
3515     flatbuffers::ST_ENUM, 3, type_codes, type_refs, nullptr, values, names
3516   };
3517   return &tt;
3518 }
3519 
3520 inline const flatbuffers::TypeTable *RaceTypeTable() {
3521   static const flatbuffers::TypeCode type_codes[] = {
3522     { flatbuffers::ET_CHAR, 0, 0 },
3523     { flatbuffers::ET_CHAR, 0, 0 },
3524     { flatbuffers::ET_CHAR, 0, 0 },
3525     { flatbuffers::ET_CHAR, 0, 0 }
3526   };
3527   static const flatbuffers::TypeFunction type_refs[] = {
3528     MyGame::Example::RaceTypeTable
3529   };
3530   static const int64_t values[] = { -1, 0, 1, 2 };
3531   static const char * const names[] = {
3532     "None",
3533     "Human",
3534     "Dwarf",
3535     "Elf"
3536   };
3537   static const flatbuffers::TypeTable tt = {
3538     flatbuffers::ST_ENUM, 4, type_codes, type_refs, nullptr, values, names
3539   };
3540   return &tt;
3541 }
3542 
3543 inline const flatbuffers::TypeTable *LongEnumTypeTable() {
3544   static const flatbuffers::TypeCode type_codes[] = {
3545     { flatbuffers::ET_ULONG, 0, 0 },
3546     { flatbuffers::ET_ULONG, 0, 0 },
3547     { flatbuffers::ET_ULONG, 0, 0 }
3548   };
3549   static const flatbuffers::TypeFunction type_refs[] = {
3550     MyGame::Example::LongEnumTypeTable
3551   };
3552   static const int64_t values[] = { 2ULL, 4ULL, 1099511627776ULL };
3553   static const char * const names[] = {
3554     "LongOne",
3555     "LongTwo",
3556     "LongBig"
3557   };
3558   static const flatbuffers::TypeTable tt = {
3559     flatbuffers::ST_ENUM, 3, type_codes, type_refs, nullptr, values, names
3560   };
3561   return &tt;
3562 }
3563 
3564 inline const flatbuffers::TypeTable *AnyTypeTable() {
3565   static const flatbuffers::TypeCode type_codes[] = {
3566     { flatbuffers::ET_SEQUENCE, 0, -1 },
3567     { flatbuffers::ET_SEQUENCE, 0, 0 },
3568     { flatbuffers::ET_SEQUENCE, 0, 1 },
3569     { flatbuffers::ET_SEQUENCE, 0, 2 }
3570   };
3571   static const flatbuffers::TypeFunction type_refs[] = {
3572     MyGame::Example::MonsterTypeTable,
3573     MyGame::Example::TestSimpleTableWithEnumTypeTable,
3574     MyGame::Example2::MonsterTypeTable
3575   };
3576   static const char * const names[] = {
3577     "NONE",
3578     "Monster",
3579     "TestSimpleTableWithEnum",
3580     "MyGame_Example2_Monster"
3581   };
3582   static const flatbuffers::TypeTable tt = {
3583     flatbuffers::ST_UNION, 4, type_codes, type_refs, nullptr, nullptr, names
3584   };
3585   return &tt;
3586 }
3587 
3588 inline const flatbuffers::TypeTable *AnyUniqueAliasesTypeTable() {
3589   static const flatbuffers::TypeCode type_codes[] = {
3590     { flatbuffers::ET_SEQUENCE, 0, -1 },
3591     { flatbuffers::ET_SEQUENCE, 0, 0 },
3592     { flatbuffers::ET_SEQUENCE, 0, 1 },
3593     { flatbuffers::ET_SEQUENCE, 0, 2 }
3594   };
3595   static const flatbuffers::TypeFunction type_refs[] = {
3596     MyGame::Example::MonsterTypeTable,
3597     MyGame::Example::TestSimpleTableWithEnumTypeTable,
3598     MyGame::Example2::MonsterTypeTable
3599   };
3600   static const char * const names[] = {
3601     "NONE",
3602     "M",
3603     "TS",
3604     "M2"
3605   };
3606   static const flatbuffers::TypeTable tt = {
3607     flatbuffers::ST_UNION, 4, type_codes, type_refs, nullptr, nullptr, names
3608   };
3609   return &tt;
3610 }
3611 
3612 inline const flatbuffers::TypeTable *AnyAmbiguousAliasesTypeTable() {
3613   static const flatbuffers::TypeCode type_codes[] = {
3614     { flatbuffers::ET_SEQUENCE, 0, -1 },
3615     { flatbuffers::ET_SEQUENCE, 0, 0 },
3616     { flatbuffers::ET_SEQUENCE, 0, 0 },
3617     { flatbuffers::ET_SEQUENCE, 0, 0 }
3618   };
3619   static const flatbuffers::TypeFunction type_refs[] = {
3620     MyGame::Example::MonsterTypeTable
3621   };
3622   static const char * const names[] = {
3623     "NONE",
3624     "M1",
3625     "M2",
3626     "M3"
3627   };
3628   static const flatbuffers::TypeTable tt = {
3629     flatbuffers::ST_UNION, 4, type_codes, type_refs, nullptr, nullptr, names
3630   };
3631   return &tt;
3632 }
3633 
3634 }  // namespace Example
3635 
3636 inline const flatbuffers::TypeTable *InParentNamespaceTypeTable() {
3637   static const flatbuffers::TypeTable tt = {
3638     flatbuffers::ST_TABLE, 0, nullptr, nullptr, nullptr, nullptr, nullptr
3639   };
3640   return &tt;
3641 }
3642 
3643 namespace Example2 {
3644 
3645 inline const flatbuffers::TypeTable *MonsterTypeTable() {
3646   static const flatbuffers::TypeTable tt = {
3647     flatbuffers::ST_TABLE, 0, nullptr, nullptr, nullptr, nullptr, nullptr
3648   };
3649   return &tt;
3650 }
3651 
3652 }  // namespace Example2
3653 
3654 namespace Example {
3655 
3656 inline const flatbuffers::TypeTable *TestTypeTable() {
3657   static const flatbuffers::TypeCode type_codes[] = {
3658     { flatbuffers::ET_SHORT, 0, -1 },
3659     { flatbuffers::ET_CHAR, 0, -1 }
3660   };
3661   static const int64_t values[] = { 0, 2, 4 };
3662   static const char * const names[] = {
3663     "a",
3664     "b"
3665   };
3666   static const flatbuffers::TypeTable tt = {
3667     flatbuffers::ST_STRUCT, 2, type_codes, nullptr, nullptr, values, names
3668   };
3669   return &tt;
3670 }
3671 
3672 inline const flatbuffers::TypeTable *TestSimpleTableWithEnumTypeTable() {
3673   static const flatbuffers::TypeCode type_codes[] = {
3674     { flatbuffers::ET_UCHAR, 0, 0 }
3675   };
3676   static const flatbuffers::TypeFunction type_refs[] = {
3677     MyGame::Example::ColorTypeTable
3678   };
3679   static const char * const names[] = {
3680     "color"
3681   };
3682   static const flatbuffers::TypeTable tt = {
3683     flatbuffers::ST_TABLE, 1, type_codes, type_refs, nullptr, nullptr, names
3684   };
3685   return &tt;
3686 }
3687 
3688 inline const flatbuffers::TypeTable *Vec3TypeTable() {
3689   static const flatbuffers::TypeCode type_codes[] = {
3690     { flatbuffers::ET_FLOAT, 0, -1 },
3691     { flatbuffers::ET_FLOAT, 0, -1 },
3692     { flatbuffers::ET_FLOAT, 0, -1 },
3693     { flatbuffers::ET_DOUBLE, 0, -1 },
3694     { flatbuffers::ET_UCHAR, 0, 0 },
3695     { flatbuffers::ET_SEQUENCE, 0, 1 }
3696   };
3697   static const flatbuffers::TypeFunction type_refs[] = {
3698     MyGame::Example::ColorTypeTable,
3699     MyGame::Example::TestTypeTable
3700   };
3701   static const int64_t values[] = { 0, 4, 8, 16, 24, 26, 32 };
3702   static const char * const names[] = {
3703     "x",
3704     "y",
3705     "z",
3706     "test1",
3707     "test2",
3708     "test3"
3709   };
3710   static const flatbuffers::TypeTable tt = {
3711     flatbuffers::ST_STRUCT, 6, type_codes, type_refs, nullptr, values, names
3712   };
3713   return &tt;
3714 }
3715 
3716 inline const flatbuffers::TypeTable *AbilityTypeTable() {
3717   static const flatbuffers::TypeCode type_codes[] = {
3718     { flatbuffers::ET_UINT, 0, -1 },
3719     { flatbuffers::ET_UINT, 0, -1 }
3720   };
3721   static const int64_t values[] = { 0, 4, 8 };
3722   static const char * const names[] = {
3723     "id",
3724     "distance"
3725   };
3726   static const flatbuffers::TypeTable tt = {
3727     flatbuffers::ST_STRUCT, 2, type_codes, nullptr, nullptr, values, names
3728   };
3729   return &tt;
3730 }
3731 
3732 inline const flatbuffers::TypeTable *StructOfStructsTypeTable() {
3733   static const flatbuffers::TypeCode type_codes[] = {
3734     { flatbuffers::ET_SEQUENCE, 0, 0 },
3735     { flatbuffers::ET_SEQUENCE, 0, 1 },
3736     { flatbuffers::ET_SEQUENCE, 0, 0 }
3737   };
3738   static const flatbuffers::TypeFunction type_refs[] = {
3739     MyGame::Example::AbilityTypeTable,
3740     MyGame::Example::TestTypeTable
3741   };
3742   static const int64_t values[] = { 0, 8, 12, 20 };
3743   static const char * const names[] = {
3744     "a",
3745     "b",
3746     "c"
3747   };
3748   static const flatbuffers::TypeTable tt = {
3749     flatbuffers::ST_STRUCT, 3, type_codes, type_refs, nullptr, values, names
3750   };
3751   return &tt;
3752 }
3753 
3754 inline const flatbuffers::TypeTable *StructOfStructsOfStructsTypeTable() {
3755   static const flatbuffers::TypeCode type_codes[] = {
3756     { flatbuffers::ET_SEQUENCE, 0, 0 }
3757   };
3758   static const flatbuffers::TypeFunction type_refs[] = {
3759     MyGame::Example::StructOfStructsTypeTable
3760   };
3761   static const int64_t values[] = { 0, 20 };
3762   static const char * const names[] = {
3763     "a"
3764   };
3765   static const flatbuffers::TypeTable tt = {
3766     flatbuffers::ST_STRUCT, 1, type_codes, type_refs, nullptr, values, names
3767   };
3768   return &tt;
3769 }
3770 
3771 inline const flatbuffers::TypeTable *StatTypeTable() {
3772   static const flatbuffers::TypeCode type_codes[] = {
3773     { flatbuffers::ET_STRING, 0, -1 },
3774     { flatbuffers::ET_LONG, 0, -1 },
3775     { flatbuffers::ET_USHORT, 0, -1 }
3776   };
3777   static const char * const names[] = {
3778     "id",
3779     "val",
3780     "count"
3781   };
3782   static const flatbuffers::TypeTable tt = {
3783     flatbuffers::ST_TABLE, 3, type_codes, nullptr, nullptr, nullptr, names
3784   };
3785   return &tt;
3786 }
3787 
3788 inline const flatbuffers::TypeTable *ReferrableTypeTable() {
3789   static const flatbuffers::TypeCode type_codes[] = {
3790     { flatbuffers::ET_ULONG, 0, -1 }
3791   };
3792   static const char * const names[] = {
3793     "id"
3794   };
3795   static const flatbuffers::TypeTable tt = {
3796     flatbuffers::ST_TABLE, 1, type_codes, nullptr, nullptr, nullptr, names
3797   };
3798   return &tt;
3799 }
3800 
3801 inline const flatbuffers::TypeTable *MonsterTypeTable() {
3802   static const flatbuffers::TypeCode type_codes[] = {
3803     { flatbuffers::ET_SEQUENCE, 0, 0 },
3804     { flatbuffers::ET_SHORT, 0, -1 },
3805     { flatbuffers::ET_SHORT, 0, -1 },
3806     { flatbuffers::ET_STRING, 0, -1 },
3807     { flatbuffers::ET_BOOL, 0, -1 },
3808     { flatbuffers::ET_UCHAR, 1, -1 },
3809     { flatbuffers::ET_UCHAR, 0, 1 },
3810     { flatbuffers::ET_UTYPE, 0, 2 },
3811     { flatbuffers::ET_SEQUENCE, 0, 2 },
3812     { flatbuffers::ET_SEQUENCE, 1, 3 },
3813     { flatbuffers::ET_STRING, 1, -1 },
3814     { flatbuffers::ET_SEQUENCE, 1, 4 },
3815     { flatbuffers::ET_SEQUENCE, 0, 4 },
3816     { flatbuffers::ET_UCHAR, 1, -1 },
3817     { flatbuffers::ET_SEQUENCE, 0, 5 },
3818     { flatbuffers::ET_BOOL, 0, -1 },
3819     { flatbuffers::ET_INT, 0, -1 },
3820     { flatbuffers::ET_UINT, 0, -1 },
3821     { flatbuffers::ET_LONG, 0, -1 },
3822     { flatbuffers::ET_ULONG, 0, -1 },
3823     { flatbuffers::ET_INT, 0, -1 },
3824     { flatbuffers::ET_UINT, 0, -1 },
3825     { flatbuffers::ET_LONG, 0, -1 },
3826     { flatbuffers::ET_ULONG, 0, -1 },
3827     { flatbuffers::ET_BOOL, 1, -1 },
3828     { flatbuffers::ET_FLOAT, 0, -1 },
3829     { flatbuffers::ET_FLOAT, 0, -1 },
3830     { flatbuffers::ET_FLOAT, 0, -1 },
3831     { flatbuffers::ET_STRING, 1, -1 },
3832     { flatbuffers::ET_SEQUENCE, 1, 6 },
3833     { flatbuffers::ET_UCHAR, 1, -1 },
3834     { flatbuffers::ET_SEQUENCE, 1, 3 },
3835     { flatbuffers::ET_LONG, 1, -1 },
3836     { flatbuffers::ET_DOUBLE, 1, -1 },
3837     { flatbuffers::ET_SEQUENCE, 0, 7 },
3838     { flatbuffers::ET_SEQUENCE, 1, 8 },
3839     { flatbuffers::ET_ULONG, 0, -1 },
3840     { flatbuffers::ET_ULONG, 1, -1 },
3841     { flatbuffers::ET_SEQUENCE, 1, 8 },
3842     { flatbuffers::ET_ULONG, 0, -1 },
3843     { flatbuffers::ET_ULONG, 1, -1 },
3844     { flatbuffers::ET_ULONG, 0, -1 },
3845     { flatbuffers::ET_ULONG, 1, -1 },
3846     { flatbuffers::ET_UTYPE, 0, 9 },
3847     { flatbuffers::ET_SEQUENCE, 0, 9 },
3848     { flatbuffers::ET_UTYPE, 0, 10 },
3849     { flatbuffers::ET_SEQUENCE, 0, 10 },
3850     { flatbuffers::ET_UCHAR, 1, 1 },
3851     { flatbuffers::ET_CHAR, 0, 11 },
3852     { flatbuffers::ET_UCHAR, 1, -1 },
3853     { flatbuffers::ET_SEQUENCE, 1, 5 },
3854     { flatbuffers::ET_SEQUENCE, 0, 3 },
3855     { flatbuffers::ET_ULONG, 0, 12 },
3856     { flatbuffers::ET_ULONG, 0, 12 }
3857   };
3858   static const flatbuffers::TypeFunction type_refs[] = {
3859     MyGame::Example::Vec3TypeTable,
3860     MyGame::Example::ColorTypeTable,
3861     MyGame::Example::AnyTypeTable,
3862     MyGame::Example::TestTypeTable,
3863     MyGame::Example::MonsterTypeTable,
3864     MyGame::Example::StatTypeTable,
3865     MyGame::Example::AbilityTypeTable,
3866     MyGame::InParentNamespaceTypeTable,
3867     MyGame::Example::ReferrableTypeTable,
3868     MyGame::Example::AnyUniqueAliasesTypeTable,
3869     MyGame::Example::AnyAmbiguousAliasesTypeTable,
3870     MyGame::Example::RaceTypeTable,
3871     MyGame::Example::LongEnumTypeTable
3872   };
3873   static const char * const names[] = {
3874     "pos",
3875     "mana",
3876     "hp",
3877     "name",
3878     "friendly",
3879     "inventory",
3880     "color",
3881     "test_type",
3882     "test",
3883     "test4",
3884     "testarrayofstring",
3885     "testarrayoftables",
3886     "enemy",
3887     "testnestedflatbuffer",
3888     "testempty",
3889     "testbool",
3890     "testhashs32_fnv1",
3891     "testhashu32_fnv1",
3892     "testhashs64_fnv1",
3893     "testhashu64_fnv1",
3894     "testhashs32_fnv1a",
3895     "testhashu32_fnv1a",
3896     "testhashs64_fnv1a",
3897     "testhashu64_fnv1a",
3898     "testarrayofbools",
3899     "testf",
3900     "testf2",
3901     "testf3",
3902     "testarrayofstring2",
3903     "testarrayofsortedstruct",
3904     "flex",
3905     "test5",
3906     "vector_of_longs",
3907     "vector_of_doubles",
3908     "parent_namespace_test",
3909     "vector_of_referrables",
3910     "single_weak_reference",
3911     "vector_of_weak_references",
3912     "vector_of_strong_referrables",
3913     "co_owning_reference",
3914     "vector_of_co_owning_references",
3915     "non_owning_reference",
3916     "vector_of_non_owning_references",
3917     "any_unique_type",
3918     "any_unique",
3919     "any_ambiguous_type",
3920     "any_ambiguous",
3921     "vector_of_enums",
3922     "signed_enum",
3923     "testrequirednestedflatbuffer",
3924     "scalar_key_sorted_tables",
3925     "native_inline",
3926     "long_enum_non_enum_default",
3927     "long_enum_normal_default"
3928   };
3929   static const flatbuffers::TypeTable tt = {
3930     flatbuffers::ST_TABLE, 54, type_codes, type_refs, nullptr, nullptr, names
3931   };
3932   return &tt;
3933 }
3934 
3935 inline const flatbuffers::TypeTable *TypeAliasesTypeTable() {
3936   static const flatbuffers::TypeCode type_codes[] = {
3937     { flatbuffers::ET_CHAR, 0, -1 },
3938     { flatbuffers::ET_UCHAR, 0, -1 },
3939     { flatbuffers::ET_SHORT, 0, -1 },
3940     { flatbuffers::ET_USHORT, 0, -1 },
3941     { flatbuffers::ET_INT, 0, -1 },
3942     { flatbuffers::ET_UINT, 0, -1 },
3943     { flatbuffers::ET_LONG, 0, -1 },
3944     { flatbuffers::ET_ULONG, 0, -1 },
3945     { flatbuffers::ET_FLOAT, 0, -1 },
3946     { flatbuffers::ET_DOUBLE, 0, -1 },
3947     { flatbuffers::ET_CHAR, 1, -1 },
3948     { flatbuffers::ET_DOUBLE, 1, -1 }
3949   };
3950   static const char * const names[] = {
3951     "i8",
3952     "u8",
3953     "i16",
3954     "u16",
3955     "i32",
3956     "u32",
3957     "i64",
3958     "u64",
3959     "f32",
3960     "f64",
3961     "v8",
3962     "vf64"
3963   };
3964   static const flatbuffers::TypeTable tt = {
3965     flatbuffers::ST_TABLE, 12, type_codes, nullptr, nullptr, nullptr, names
3966   };
3967   return &tt;
3968 }
3969 
3970 inline const MyGame::Example::Monster *GetMonster(const void *buf) {
3971   return flatbuffers::GetRoot<MyGame::Example::Monster>(buf);
3972 }
3973 
3974 inline const MyGame::Example::Monster *GetSizePrefixedMonster(const void *buf) {
3975   return flatbuffers::GetSizePrefixedRoot<MyGame::Example::Monster>(buf);
3976 }
3977 
3978 inline Monster *GetMutableMonster(void *buf) {
3979   return flatbuffers::GetMutableRoot<Monster>(buf);
3980 }
3981 
3982 inline MyGame::Example::Monster *GetMutableSizePrefixedMonster(void *buf) {
3983   return flatbuffers::GetMutableSizePrefixedRoot<MyGame::Example::Monster>(buf);
3984 }
3985 
3986 inline const char *MonsterIdentifier() {
3987   return "MONS";
3988 }
3989 
3990 inline bool MonsterBufferHasIdentifier(const void *buf) {
3991   return flatbuffers::BufferHasIdentifier(
3992       buf, MonsterIdentifier());
3993 }
3994 
3995 inline bool SizePrefixedMonsterBufferHasIdentifier(const void *buf) {
3996   return flatbuffers::BufferHasIdentifier(
3997       buf, MonsterIdentifier(), true);
3998 }
3999 
4000 inline bool VerifyMonsterBuffer(
4001     flatbuffers::Verifier &verifier) {
4002   return verifier.VerifyBuffer<MyGame::Example::Monster>(MonsterIdentifier());
4003 }
4004 
4005 inline bool VerifySizePrefixedMonsterBuffer(
4006     flatbuffers::Verifier &verifier) {
4007   return verifier.VerifySizePrefixedBuffer<MyGame::Example::Monster>(MonsterIdentifier());
4008 }
4009 
4010 inline const char *MonsterExtension() {
4011   return "mon";
4012 }
4013 
4014 inline void FinishMonsterBuffer(
4015     flatbuffers::FlatBufferBuilder &fbb,
4016     flatbuffers::Offset<MyGame::Example::Monster> root) {
4017   fbb.Finish(root, MonsterIdentifier());
4018 }
4019 
4020 inline void FinishSizePrefixedMonsterBuffer(
4021     flatbuffers::FlatBufferBuilder &fbb,
4022     flatbuffers::Offset<MyGame::Example::Monster> root) {
4023   fbb.FinishSizePrefixed(root, MonsterIdentifier());
4024 }
4025 
4026 inline flatbuffers::unique_ptr<MyGame::Example::MonsterT> UnPackMonster(
4027     const void *buf,
4028     const flatbuffers::resolver_function_t *res = nullptr) {
4029   return flatbuffers::unique_ptr<MyGame::Example::MonsterT>(GetMonster(buf)->UnPack(res));
4030 }
4031 
4032 inline flatbuffers::unique_ptr<MyGame::Example::MonsterT> UnPackSizePrefixedMonster(
4033     const void *buf,
4034     const flatbuffers::resolver_function_t *res = nullptr) {
4035   return flatbuffers::unique_ptr<MyGame::Example::MonsterT>(GetSizePrefixedMonster(buf)->UnPack(res));
4036 }
4037 
4038 }  // namespace Example
4039 }  // namespace MyGame
4040 
4041 #endif  // FLATBUFFERS_GENERATED_MONSTERTEST_MYGAME_EXAMPLE_H_
4042