168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li// automatically generated by the FlatBuffers compiler, do not modify
268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
468bbe983e9819bcbcd214cf84d73a440863ed6caBei Li#ifndef FLATBUFFERS_GENERATED_UNIONVECTOR_H_
568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li#define FLATBUFFERS_GENERATED_UNIONVECTOR_H_
668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li#include "flatbuffers/flatbuffers.h"
868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
9b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssenstruct Attacker;
10b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssenstruct AttackerT;
1168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
1268bbe983e9819bcbcd214cf84d73a440863ed6caBei Listruct Rapunzel;
1368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
14b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssenstruct BookReader;
1568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
1668bbe983e9819bcbcd214cf84d73a440863ed6caBei Listruct Movie;
17b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssenstruct MovieT;
1868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
1968bbe983e9819bcbcd214cf84d73a440863ed6caBei Lienum Character {
2068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  Character_NONE = 0,
2168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  Character_MuLan = 1,
2268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  Character_Rapunzel = 2,
2368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  Character_Belle = 3,
24b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  Character_BookFan = 4,
25b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  Character_Other = 5,
26b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  Character_Unused = 6,
2768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  Character_MIN = Character_NONE,
28b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  Character_MAX = Character_Unused
2968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li};
3068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
31dadd1a926ee75cad9d9ef792edcbc902b1f1744arufeoooinline Character (&EnumValuesCharacter())[7] {
32dadd1a926ee75cad9d9ef792edcbc902b1f1744arufeooo  static Character values[] = {
33dadd1a926ee75cad9d9ef792edcbc902b1f1744arufeooo    Character_NONE,
34dadd1a926ee75cad9d9ef792edcbc902b1f1744arufeooo    Character_MuLan,
35dadd1a926ee75cad9d9ef792edcbc902b1f1744arufeooo    Character_Rapunzel,
36dadd1a926ee75cad9d9ef792edcbc902b1f1744arufeooo    Character_Belle,
37dadd1a926ee75cad9d9ef792edcbc902b1f1744arufeooo    Character_BookFan,
38dadd1a926ee75cad9d9ef792edcbc902b1f1744arufeooo    Character_Other,
39dadd1a926ee75cad9d9ef792edcbc902b1f1744arufeooo    Character_Unused
40dadd1a926ee75cad9d9ef792edcbc902b1f1744arufeooo  };
41dadd1a926ee75cad9d9ef792edcbc902b1f1744arufeooo  return values;
42dadd1a926ee75cad9d9ef792edcbc902b1f1744arufeooo}
43dadd1a926ee75cad9d9ef792edcbc902b1f1744arufeooo
4468bbe983e9819bcbcd214cf84d73a440863ed6caBei Liinline const char **EnumNamesCharacter() {
4568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  static const char *names[] = {
4668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    "NONE",
4768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    "MuLan",
4868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    "Rapunzel",
4968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    "Belle",
50b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    "BookFan",
51b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    "Other",
52b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    "Unused",
5368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    nullptr
5468bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  };
5568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  return names;
5668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li}
5768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
5868bbe983e9819bcbcd214cf84d73a440863ed6caBei Liinline const char *EnumNameCharacter(Character e) {
5968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  const size_t index = static_cast<int>(e);
6068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  return EnumNamesCharacter()[index];
6168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li}
6268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
63b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssenstruct CharacterUnion {
64b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  Character type;
65b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  void *value;
6668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
67b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  CharacterUnion() : type(Character_NONE), value(nullptr) {}
68b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  CharacterUnion(CharacterUnion&& u) FLATBUFFERS_NOEXCEPT :
69b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    type(Character_NONE), value(nullptr)
70b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    { std::swap(type, u.type); std::swap(value, u.value); }
71e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen  CharacterUnion(const CharacterUnion &) FLATBUFFERS_NOEXCEPT;
72523f3833eb2ddd41e891c3ef8f3c5d4f154916b6Wouter van Oortmerssen  CharacterUnion &operator=(const CharacterUnion &u) FLATBUFFERS_NOEXCEPT
73523f3833eb2ddd41e891c3ef8f3c5d4f154916b6Wouter van Oortmerssen    { CharacterUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; }
74b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  CharacterUnion &operator=(CharacterUnion &&u) FLATBUFFERS_NOEXCEPT
75b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    { std::swap(type, u.type); std::swap(value, u.value); return *this; }
76b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  ~CharacterUnion() { Reset(); }
7768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
78b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  void Reset();
7968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
80b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  static void *UnPack(const void *obj, Character type, const flatbuffers::resolver_function_t *resolver);
81b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const;
82b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
83b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  AttackerT *AsMuLan() {
84b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return type == Character_MuLan ?
85b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      reinterpret_cast<AttackerT *>(value) : nullptr;
86b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
8721a81219820f4acc1e50569ff280b24b1af29a36endorph-soft  const AttackerT *AsMuLan() const {
8821a81219820f4acc1e50569ff280b24b1af29a36endorph-soft    return type == Character_MuLan ?
8921a81219820f4acc1e50569ff280b24b1af29a36endorph-soft      reinterpret_cast<const AttackerT *>(value) : nullptr;
9021a81219820f4acc1e50569ff280b24b1af29a36endorph-soft  }
91b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  Rapunzel *AsRapunzel() {
92b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return type == Character_Rapunzel ?
93b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      reinterpret_cast<Rapunzel *>(value) : nullptr;
94b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
9521a81219820f4acc1e50569ff280b24b1af29a36endorph-soft  const Rapunzel *AsRapunzel() const {
9621a81219820f4acc1e50569ff280b24b1af29a36endorph-soft    return type == Character_Rapunzel ?
9721a81219820f4acc1e50569ff280b24b1af29a36endorph-soft      reinterpret_cast<const Rapunzel *>(value) : nullptr;
9821a81219820f4acc1e50569ff280b24b1af29a36endorph-soft  }
99b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  BookReader *AsBelle() {
100b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return type == Character_Belle ?
101b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      reinterpret_cast<BookReader *>(value) : nullptr;
102b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
10321a81219820f4acc1e50569ff280b24b1af29a36endorph-soft  const BookReader *AsBelle() const {
10421a81219820f4acc1e50569ff280b24b1af29a36endorph-soft    return type == Character_Belle ?
10521a81219820f4acc1e50569ff280b24b1af29a36endorph-soft      reinterpret_cast<const BookReader *>(value) : nullptr;
10621a81219820f4acc1e50569ff280b24b1af29a36endorph-soft  }
107b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  BookReader *AsBookFan() {
108b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return type == Character_BookFan ?
109b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      reinterpret_cast<BookReader *>(value) : nullptr;
110b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
11121a81219820f4acc1e50569ff280b24b1af29a36endorph-soft  const BookReader *AsBookFan() const {
11221a81219820f4acc1e50569ff280b24b1af29a36endorph-soft    return type == Character_BookFan ?
11321a81219820f4acc1e50569ff280b24b1af29a36endorph-soft      reinterpret_cast<const BookReader *>(value) : nullptr;
11421a81219820f4acc1e50569ff280b24b1af29a36endorph-soft  }
115b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  std::string *AsOther() {
116b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return type == Character_Other ?
117b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      reinterpret_cast<std::string *>(value) : nullptr;
118b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
11921a81219820f4acc1e50569ff280b24b1af29a36endorph-soft  const std::string *AsOther() const {
12021a81219820f4acc1e50569ff280b24b1af29a36endorph-soft    return type == Character_Other ?
12121a81219820f4acc1e50569ff280b24b1af29a36endorph-soft      reinterpret_cast<const std::string *>(value) : nullptr;
12221a81219820f4acc1e50569ff280b24b1af29a36endorph-soft  }
123b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  std::string *AsUnused() {
124b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return type == Character_Unused ?
125b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      reinterpret_cast<std::string *>(value) : nullptr;
126b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
12721a81219820f4acc1e50569ff280b24b1af29a36endorph-soft  const std::string *AsUnused() const {
12821a81219820f4acc1e50569ff280b24b1af29a36endorph-soft    return type == Character_Unused ?
12921a81219820f4acc1e50569ff280b24b1af29a36endorph-soft      reinterpret_cast<const std::string *>(value) : nullptr;
13021a81219820f4acc1e50569ff280b24b1af29a36endorph-soft  }
13168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li};
13268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
13368bbe983e9819bcbcd214cf84d73a440863ed6caBei Libool VerifyCharacter(flatbuffers::Verifier &verifier, const void *obj, Character type);
13468bbe983e9819bcbcd214cf84d73a440863ed6caBei Libool VerifyCharacterVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types);
13568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
136b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van OortmerssenMANUALLY_ALIGNED_STRUCT(4) Rapunzel FLATBUFFERS_FINAL_CLASS {
137b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen private:
138b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  int32_t hair_length_;
139b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
140b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen public:
141b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  Rapunzel() {
142b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    memset(this, 0, sizeof(Rapunzel));
14368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
144b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  Rapunzel(int32_t _hair_length)
145b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      : hair_length_(flatbuffers::EndianScalar(_hair_length)) {
14668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
147b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  int32_t hair_length() const {
148b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return flatbuffers::EndianScalar(hair_length_);
14968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
150b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  void mutate_hair_length(int32_t _hair_length) {
151b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    flatbuffers::WriteScalar(&hair_length_, _hair_length);
15268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
15368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li};
154b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van OortmerssenSTRUCT_END(Rapunzel, 4);
15568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
156b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van OortmerssenMANUALLY_ALIGNED_STRUCT(4) BookReader FLATBUFFERS_FINAL_CLASS {
157b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen private:
158b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  int32_t books_read_;
15968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
160b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen public:
161b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  BookReader() {
162b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    memset(this, 0, sizeof(BookReader));
16368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
164b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  BookReader(int32_t _books_read)
165b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      : books_read_(flatbuffers::EndianScalar(_books_read)) {
16668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
167b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  int32_t books_read() const {
168b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return flatbuffers::EndianScalar(books_read_);
16968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
170b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  void mutate_books_read(int32_t _books_read) {
171b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    flatbuffers::WriteScalar(&books_read_, _books_read);
17268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
17368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li};
174b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van OortmerssenSTRUCT_END(BookReader, 4);
17568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
176b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssenstruct AttackerT : public flatbuffers::NativeTable {
177b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  typedef Attacker TableType;
178b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  int32_t sword_attack_damage;
179b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  AttackerT()
180b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      : sword_attack_damage(0) {
181b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
182b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen};
18368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
184b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssenstruct Attacker FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
185b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  typedef AttackerT NativeTableType;
18668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  enum {
187b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    VT_SWORD_ATTACK_DAMAGE = 4
18868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  };
189b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  int32_t sword_attack_damage() const {
190b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return GetField<int32_t>(VT_SWORD_ATTACK_DAMAGE, 0);
191b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
192b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  bool mutate_sword_attack_damage(int32_t _sword_attack_damage) {
193b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return SetField<int32_t>(VT_SWORD_ATTACK_DAMAGE, _sword_attack_damage, 0);
19468bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
19568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  bool Verify(flatbuffers::Verifier &verifier) const {
19668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    return VerifyTableStart(verifier) &&
197b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen           VerifyField<int32_t>(verifier, VT_SWORD_ATTACK_DAMAGE) &&
19868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li           verifier.EndTable();
19968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
200b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  AttackerT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
201b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  void UnPackTo(AttackerT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
202b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  static flatbuffers::Offset<Attacker> Pack(flatbuffers::FlatBufferBuilder &_fbb, const AttackerT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
20368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li};
20468bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
205b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssenstruct AttackerBuilder {
20668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  flatbuffers::FlatBufferBuilder &fbb_;
20768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  flatbuffers::uoffset_t start_;
208b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  void add_sword_attack_damage(int32_t sword_attack_damage) {
209b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    fbb_.AddElement<int32_t>(Attacker::VT_SWORD_ATTACK_DAMAGE, sword_attack_damage, 0);
21068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
2115b4acf809ecadf408a966555e91c37f32b119d10Aaron  explicit AttackerBuilder(flatbuffers::FlatBufferBuilder &_fbb)
21268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li        : fbb_(_fbb) {
21368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    start_ = fbb_.StartTable();
21468bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
215b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  AttackerBuilder &operator=(const AttackerBuilder &);
216b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  flatbuffers::Offset<Attacker> Finish() {
217ac1015e3c417ecb18d8f449a4e6aaaff3c4f53b9Wouter van Oortmerssen    const auto end = fbb_.EndTable(start_);
218b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    auto o = flatbuffers::Offset<Attacker>(end);
21968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    return o;
22068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
22168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li};
22268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
223b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmersseninline flatbuffers::Offset<Attacker> CreateAttacker(
22468bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    flatbuffers::FlatBufferBuilder &_fbb,
225b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    int32_t sword_attack_damage = 0) {
226b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  AttackerBuilder builder_(_fbb);
227b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  builder_.add_sword_attack_damage(sword_attack_damage);
22868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  return builder_.Finish();
22968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li}
23068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
231b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssenflatbuffers::Offset<Attacker> CreateAttacker(flatbuffers::FlatBufferBuilder &_fbb, const AttackerT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
232b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
233b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssenstruct MovieT : public flatbuffers::NativeTable {
234b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  typedef Movie TableType;
235b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  CharacterUnion main_character;
236b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  std::vector<CharacterUnion> characters;
237b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  MovieT() {
238b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
239b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen};
240b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
24168bbe983e9819bcbcd214cf84d73a440863ed6caBei Listruct Movie FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
242b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  typedef MovieT NativeTableType;
24368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  enum {
244b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    VT_MAIN_CHARACTER_TYPE = 4,
245b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    VT_MAIN_CHARACTER = 6,
246b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    VT_CHARACTERS_TYPE = 8,
247b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    VT_CHARACTERS = 10
24868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  };
249b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  Character main_character_type() const {
250b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return static_cast<Character>(GetField<uint8_t>(VT_MAIN_CHARACTER_TYPE, 0));
251b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
252b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  bool mutate_main_character_type(Character _main_character_type) {
253b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return SetField<uint8_t>(VT_MAIN_CHARACTER_TYPE, static_cast<uint8_t>(_main_character_type), 0);
254b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
255b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  const void *main_character() const {
256b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return GetPointer<const void *>(VT_MAIN_CHARACTER);
257b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
258b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  template<typename T> const T *main_character_as() const;
259b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  const Attacker *main_character_as_MuLan() const {
260b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return main_character_type() == Character_MuLan ? static_cast<const Attacker *>(main_character()) : nullptr;
261b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
262b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  const Rapunzel *main_character_as_Rapunzel() const {
263b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return main_character_type() == Character_Rapunzel ? static_cast<const Rapunzel *>(main_character()) : nullptr;
264b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
265b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  const BookReader *main_character_as_Belle() const {
266b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return main_character_type() == Character_Belle ? static_cast<const BookReader *>(main_character()) : nullptr;
267b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
268b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  const BookReader *main_character_as_BookFan() const {
269b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return main_character_type() == Character_BookFan ? static_cast<const BookReader *>(main_character()) : nullptr;
270b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
271b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  const flatbuffers::String *main_character_as_Other() const {
272b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return main_character_type() == Character_Other ? static_cast<const flatbuffers::String *>(main_character()) : nullptr;
273b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
274b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  const flatbuffers::String *main_character_as_Unused() const {
275b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return main_character_type() == Character_Unused ? static_cast<const flatbuffers::String *>(main_character()) : nullptr;
276b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
277b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  void *mutable_main_character() {
278b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return GetPointer<void *>(VT_MAIN_CHARACTER);
279b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
28068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  const flatbuffers::Vector<uint8_t> *characters_type() const {
28168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_CHARACTERS_TYPE);
28268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
283b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  flatbuffers::Vector<uint8_t> *mutable_characters_type() {
284b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_CHARACTERS_TYPE);
285b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
28668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  const flatbuffers::Vector<flatbuffers::Offset<void>> *characters() const {
28768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<void>> *>(VT_CHARACTERS);
28868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
289b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  flatbuffers::Vector<flatbuffers::Offset<void>> *mutable_characters() {
290b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    return GetPointer<flatbuffers::Vector<flatbuffers::Offset<void>> *>(VT_CHARACTERS);
291b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
29268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  bool Verify(flatbuffers::Verifier &verifier) const {
29368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    return VerifyTableStart(verifier) &&
294b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen           VerifyField<uint8_t>(verifier, VT_MAIN_CHARACTER_TYPE) &&
2958b92122f33c2e2aa07e335341503ce19b4989abbWouter van Oortmerssen           VerifyOffset(verifier, VT_MAIN_CHARACTER) &&
296b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen           VerifyCharacter(verifier, main_character(), main_character_type()) &&
2978b92122f33c2e2aa07e335341503ce19b4989abbWouter van Oortmerssen           VerifyOffset(verifier, VT_CHARACTERS_TYPE) &&
29868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li           verifier.Verify(characters_type()) &&
2998b92122f33c2e2aa07e335341503ce19b4989abbWouter van Oortmerssen           VerifyOffset(verifier, VT_CHARACTERS) &&
30068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li           verifier.Verify(characters()) &&
30168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li           VerifyCharacterVector(verifier, characters(), characters_type()) &&
30268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li           verifier.EndTable();
30368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
304b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  MovieT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
305b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  void UnPackTo(MovieT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
306b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  static flatbuffers::Offset<Movie> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MovieT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
30768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li};
30868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
30968bbe983e9819bcbcd214cf84d73a440863ed6caBei Listruct MovieBuilder {
31068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  flatbuffers::FlatBufferBuilder &fbb_;
31168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  flatbuffers::uoffset_t start_;
312b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  void add_main_character_type(Character main_character_type) {
313b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    fbb_.AddElement<uint8_t>(Movie::VT_MAIN_CHARACTER_TYPE, static_cast<uint8_t>(main_character_type), 0);
314b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
315b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  void add_main_character(flatbuffers::Offset<void> main_character) {
316b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    fbb_.AddOffset(Movie::VT_MAIN_CHARACTER, main_character);
317b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
31868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  void add_characters_type(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> characters_type) {
31968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    fbb_.AddOffset(Movie::VT_CHARACTERS_TYPE, characters_type);
32068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
32168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  void add_characters(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<void>>> characters) {
32268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    fbb_.AddOffset(Movie::VT_CHARACTERS, characters);
32368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
3245b4acf809ecadf408a966555e91c37f32b119d10Aaron  explicit MovieBuilder(flatbuffers::FlatBufferBuilder &_fbb)
32568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li        : fbb_(_fbb) {
32668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    start_ = fbb_.StartTable();
32768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
32868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  MovieBuilder &operator=(const MovieBuilder &);
32968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  flatbuffers::Offset<Movie> Finish() {
330ac1015e3c417ecb18d8f449a4e6aaaff3c4f53b9Wouter van Oortmerssen    const auto end = fbb_.EndTable(start_);
33168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    auto o = flatbuffers::Offset<Movie>(end);
33268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    return o;
33368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
33468bbe983e9819bcbcd214cf84d73a440863ed6caBei Li};
33568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
33668bbe983e9819bcbcd214cf84d73a440863ed6caBei Liinline flatbuffers::Offset<Movie> CreateMovie(
33768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    flatbuffers::FlatBufferBuilder &_fbb,
338b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    Character main_character_type = Character_NONE,
339b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    flatbuffers::Offset<void> main_character = 0,
34068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    flatbuffers::Offset<flatbuffers::Vector<uint8_t>> characters_type = 0,
34168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<void>>> characters = 0) {
34268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  MovieBuilder builder_(_fbb);
34368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  builder_.add_characters(characters);
34468bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  builder_.add_characters_type(characters_type);
345b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  builder_.add_main_character(main_character);
346b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  builder_.add_main_character_type(main_character_type);
34768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  return builder_.Finish();
34868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li}
34968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
35068bbe983e9819bcbcd214cf84d73a440863ed6caBei Liinline flatbuffers::Offset<Movie> CreateMovieDirect(
35168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    flatbuffers::FlatBufferBuilder &_fbb,
352b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    Character main_character_type = Character_NONE,
353b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    flatbuffers::Offset<void> main_character = 0,
35468bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    const std::vector<uint8_t> *characters_type = nullptr,
35568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    const std::vector<flatbuffers::Offset<void>> *characters = nullptr) {
35668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  return CreateMovie(
35768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li      _fbb,
358b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      main_character_type,
359b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      main_character,
36068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li      characters_type ? _fbb.CreateVector<uint8_t>(*characters_type) : 0,
36168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li      characters ? _fbb.CreateVector<flatbuffers::Offset<void>>(*characters) : 0);
36268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li}
36368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
364b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssenflatbuffers::Offset<Movie> CreateMovie(flatbuffers::FlatBufferBuilder &_fbb, const MovieT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
365b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
366b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmersseninline AttackerT *Attacker::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
367b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  auto _o = new AttackerT();
368b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  UnPackTo(_o, _resolver);
369b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  return _o;
370b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen}
371b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
372b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmersseninline void Attacker::UnPackTo(AttackerT *_o, const flatbuffers::resolver_function_t *_resolver) const {
373b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  (void)_o;
374b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  (void)_resolver;
375b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  { auto _e = sword_attack_damage(); _o->sword_attack_damage = _e; };
376b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen}
377b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
378b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmersseninline flatbuffers::Offset<Attacker> Attacker::Pack(flatbuffers::FlatBufferBuilder &_fbb, const AttackerT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
379b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  return CreateAttacker(_fbb, _o, _rehasher);
380b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen}
381b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
382b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmersseninline flatbuffers::Offset<Attacker> CreateAttacker(flatbuffers::FlatBufferBuilder &_fbb, const AttackerT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
383b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  (void)_rehasher;
384b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  (void)_o;
385a8923222033763f1a74f836c656af19d9f620378Stewart Miles  struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const AttackerT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
386b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  auto _sword_attack_damage = _o->sword_attack_damage;
387b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  return CreateAttacker(
388b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      _fbb,
389b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      _sword_attack_damage);
390b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen}
391b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
392b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmersseninline MovieT *Movie::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
393b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  auto _o = new MovieT();
394b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  UnPackTo(_o, _resolver);
395b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  return _o;
396b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen}
397b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
398b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmersseninline void Movie::UnPackTo(MovieT *_o, const flatbuffers::resolver_function_t *_resolver) const {
399b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  (void)_o;
400b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  (void)_resolver;
401b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  { auto _e = main_character_type(); _o->main_character.type = _e; };
402b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  { auto _e = main_character(); if (_e) _o->main_character.value = CharacterUnion::UnPack(_e, main_character_type(), _resolver); };
403b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  { auto _e = characters_type(); if (_e) { _o->characters.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->characters[_i].type = (Character)_e->Get(_i); } } };
404b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  { auto _e = characters(); if (_e) { _o->characters.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->characters[_i].value = CharacterUnion::UnPack(_e->Get(_i), characters_type()->GetEnum<Character>(_i), _resolver); } } };
405b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen}
406b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
407b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmersseninline flatbuffers::Offset<Movie> Movie::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MovieT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
408b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  return CreateMovie(_fbb, _o, _rehasher);
409b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen}
410b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
411b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmersseninline flatbuffers::Offset<Movie> CreateMovie(flatbuffers::FlatBufferBuilder &_fbb, const MovieT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
412b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  (void)_rehasher;
413b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  (void)_o;
414a8923222033763f1a74f836c656af19d9f620378Stewart Miles  struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MovieT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
415b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  auto _main_character_type = _o->main_character.type;
416b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  auto _main_character = _o->main_character.Pack(_fbb);
417a8923222033763f1a74f836c656af19d9f620378Stewart Miles  auto _characters_type = _o->characters.size() ? _fbb.CreateVector<uint8_t>(_o->characters.size(), [](size_t i, _VectorArgs *__va) { return static_cast<uint8_t>(__va->__o->characters[i].type); }, &_va) : 0;
418a8923222033763f1a74f836c656af19d9f620378Stewart Miles  auto _characters = _o->characters.size() ? _fbb.CreateVector<flatbuffers::Offset<void>>(_o->characters.size(), [](size_t i, _VectorArgs *__va) { return __va->__o->characters[i].Pack(*__va->__fbb, __va->__rehasher); }, &_va) : 0;
419b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  return CreateMovie(
420b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      _fbb,
421b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      _main_character_type,
422b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      _main_character,
423b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      _characters_type,
424b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      _characters);
425b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen}
426b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
42768bbe983e9819bcbcd214cf84d73a440863ed6caBei Liinline bool VerifyCharacter(flatbuffers::Verifier &verifier, const void *obj, Character type) {
42868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  switch (type) {
42968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    case Character_NONE: {
43068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li      return true;
43168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    }
43268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    case Character_MuLan: {
433b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const Attacker *>(obj);
43468bbe983e9819bcbcd214cf84d73a440863ed6caBei Li      return verifier.VerifyTable(ptr);
43568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    }
43668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    case Character_Rapunzel: {
437b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return true;
43868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    }
43968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    case Character_Belle: {
440b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return true;
441b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
442b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_BookFan: {
443b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return true;
444b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
445b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_Other: {
446b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const flatbuffers::String *>(obj);
447b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return verifier.Verify(ptr);
448b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
449b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_Unused: {
450b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const flatbuffers::String *>(obj);
451b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return verifier.Verify(ptr);
45268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    }
45368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    default: return false;
45468bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
45568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li}
45668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
45768bbe983e9819bcbcd214cf84d73a440863ed6caBei Liinline bool VerifyCharacterVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
45868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  if (values->size() != types->size()) return false;
45968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
46068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    if (!VerifyCharacter(
4619b3d8b318a3bc9d71d08b50d723996f556557c86Wouter van Oortmerssen        verifier,  values->Get(i), types->GetEnum<Character>(i))) {
4629b3d8b318a3bc9d71d08b50d723996f556557c86Wouter van Oortmerssen      return false;
46368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    }
46468bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  }
46568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  return true;
46668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li}
46768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
468b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmersseninline void *CharacterUnion::UnPack(const void *obj, Character type, const flatbuffers::resolver_function_t *resolver) {
469b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  switch (type) {
470b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_MuLan: {
471b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const Attacker *>(obj);
472b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return ptr->UnPack(resolver);
473b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
474b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_Rapunzel: {
475b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const Rapunzel *>(obj);
476b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return new Rapunzel(*ptr);
477b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
478b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_Belle: {
479b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const BookReader *>(obj);
480b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return new BookReader(*ptr);
481b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
482b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_BookFan: {
483b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const BookReader *>(obj);
484b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return new BookReader(*ptr);
485b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
486b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_Other: {
487b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const flatbuffers::String *>(obj);
488b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return new std::string(ptr->c_str(), ptr->size());
489b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
490b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_Unused: {
491b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const flatbuffers::String *>(obj);
492b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return new std::string(ptr->c_str(), ptr->size());
493b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
494b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    default: return nullptr;
495b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
496b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen}
497b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
498b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmersseninline flatbuffers::Offset<void> CharacterUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const {
499b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  switch (type) {
500b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_MuLan: {
501b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const AttackerT *>(value);
502b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return CreateAttacker(_fbb, ptr, _rehasher).Union();
503b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
504b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_Rapunzel: {
505b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const Rapunzel *>(value);
506b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return _fbb.CreateStruct(*ptr).Union();
507b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
508b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_Belle: {
509b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const BookReader *>(value);
510b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return _fbb.CreateStruct(*ptr).Union();
511b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
512b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_BookFan: {
513b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const BookReader *>(value);
514b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return _fbb.CreateStruct(*ptr).Union();
515b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
516b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_Other: {
517b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const std::string *>(value);
518b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return _fbb.CreateString(*ptr).Union();
519b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
520b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_Unused: {
521b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<const std::string *>(value);
522b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      return _fbb.CreateString(*ptr).Union();
523b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
524b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    default: return 0;
525b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
526b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen}
527b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
528e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmersseninline CharacterUnion::CharacterUnion(const CharacterUnion &u) FLATBUFFERS_NOEXCEPT : type(u.type), value(nullptr) {
529e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen  switch (type) {
530e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen    case Character_MuLan: {
531e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen      value = new AttackerT(*reinterpret_cast<AttackerT *>(u.value));
532e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen      break;
533e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen    }
534e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen    case Character_Rapunzel: {
535e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen      value = new Rapunzel(*reinterpret_cast<Rapunzel *>(u.value));
536e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen      break;
537e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen    }
538e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen    case Character_Belle: {
539e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen      value = new BookReader(*reinterpret_cast<BookReader *>(u.value));
540e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen      break;
541e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen    }
542e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen    case Character_BookFan: {
543e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen      value = new BookReader(*reinterpret_cast<BookReader *>(u.value));
544e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen      break;
545e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen    }
546e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen    case Character_Other: {
547e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen      value = new std::string(*reinterpret_cast<std::string *>(u.value));
548e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen      break;
549e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen    }
550e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen    case Character_Unused: {
551e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen      value = new std::string(*reinterpret_cast<std::string *>(u.value));
552e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen      break;
553e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen    }
554e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen    default:
555e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen      break;
556e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen  }
557e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen}
558e093f72d0087aff3d1edd193a20a879782323c01Wouter van Oortmerssen
559b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmersseninline void CharacterUnion::Reset() {
560b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  switch (type) {
561b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_MuLan: {
562b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<AttackerT *>(value);
563b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      delete ptr;
564b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      break;
565b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
566b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_Rapunzel: {
567b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<Rapunzel *>(value);
568b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      delete ptr;
569b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      break;
570b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
571b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_Belle: {
572b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<BookReader *>(value);
573b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      delete ptr;
574b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      break;
575b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
576b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_BookFan: {
577b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<BookReader *>(value);
578b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      delete ptr;
579b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      break;
580b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
581b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_Other: {
582b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<std::string *>(value);
583b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      delete ptr;
584b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      break;
585b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
586b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    case Character_Unused: {
587b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      auto ptr = reinterpret_cast<std::string *>(value);
588b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      delete ptr;
589b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen      break;
590b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    }
591b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    default: break;
592b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  }
593b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  value = nullptr;
594b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  type = Character_NONE;
595b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen}
596b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
5977a6b2bf521e95097a92ec848001531b2dcf0f3faWouter van Oortmersseninline flatbuffers::TypeTable *AttackerTypeTable();
59872a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen
5997a6b2bf521e95097a92ec848001531b2dcf0f3faWouter van Oortmersseninline flatbuffers::TypeTable *RapunzelTypeTable();
60072a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen
6017a6b2bf521e95097a92ec848001531b2dcf0f3faWouter van Oortmersseninline flatbuffers::TypeTable *BookReaderTypeTable();
60272a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen
6037a6b2bf521e95097a92ec848001531b2dcf0f3faWouter van Oortmersseninline flatbuffers::TypeTable *MovieTypeTable();
60472a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen
6057a6b2bf521e95097a92ec848001531b2dcf0f3faWouter van Oortmersseninline flatbuffers::TypeTable *CharacterTypeTable() {
60672a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static flatbuffers::TypeCode type_codes[] = {
60772a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    { flatbuffers::ET_SEQUENCE, 0, -1 },
60872a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    { flatbuffers::ET_SEQUENCE, 0, 0 },
60972a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    { flatbuffers::ET_SEQUENCE, 0, 1 },
61072a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    { flatbuffers::ET_SEQUENCE, 0, 2 },
61172a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    { flatbuffers::ET_SEQUENCE, 0, 2 },
61272a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    { flatbuffers::ET_STRING, 0, -1 },
61372a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    { flatbuffers::ET_STRING, 0, -1 }
61472a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
61572a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static flatbuffers::TypeFunction type_refs[] = {
61672a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    AttackerTypeTable,
61772a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    RapunzelTypeTable,
61872a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    BookReaderTypeTable
61972a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
62072a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static const char *names[] = {
62172a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    "NONE",
62272a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    "MuLan",
62372a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    "Rapunzel",
62472a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    "Belle",
62572a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    "BookFan",
62672a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    "Other",
62772a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    "Unused"
62872a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
62972a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static flatbuffers::TypeTable tt = {
63072a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    flatbuffers::ST_UNION, 7, type_codes, type_refs, nullptr, names
63172a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
63272a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  return &tt;
63372a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen}
63472a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen
6357a6b2bf521e95097a92ec848001531b2dcf0f3faWouter van Oortmersseninline flatbuffers::TypeTable *AttackerTypeTable() {
63672a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static flatbuffers::TypeCode type_codes[] = {
63772a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    { flatbuffers::ET_INT, 0, -1 }
63872a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
63972a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static const char *names[] = {
64072a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    "sword_attack_damage"
64172a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
64272a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static flatbuffers::TypeTable tt = {
64372a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    flatbuffers::ST_TABLE, 1, type_codes, nullptr, nullptr, names
64472a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
64572a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  return &tt;
64672a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen}
64772a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen
6487a6b2bf521e95097a92ec848001531b2dcf0f3faWouter van Oortmersseninline flatbuffers::TypeTable *RapunzelTypeTable() {
64972a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static flatbuffers::TypeCode type_codes[] = {
65072a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    { flatbuffers::ET_INT, 0, -1 }
65172a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
65272a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static const int32_t values[] = { 0, 4 };
65372a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static const char *names[] = {
65472a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    "hair_length"
65572a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
65672a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static flatbuffers::TypeTable tt = {
65772a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    flatbuffers::ST_STRUCT, 1, type_codes, nullptr, values, names
65872a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
65972a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  return &tt;
66072a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen}
66172a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen
6627a6b2bf521e95097a92ec848001531b2dcf0f3faWouter van Oortmersseninline flatbuffers::TypeTable *BookReaderTypeTable() {
66372a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static flatbuffers::TypeCode type_codes[] = {
66472a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    { flatbuffers::ET_INT, 0, -1 }
66572a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
66672a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static const int32_t values[] = { 0, 4 };
66772a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static const char *names[] = {
66872a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    "books_read"
66972a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
67072a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static flatbuffers::TypeTable tt = {
67172a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    flatbuffers::ST_STRUCT, 1, type_codes, nullptr, values, names
67272a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
67372a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  return &tt;
67472a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen}
67572a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen
6767a6b2bf521e95097a92ec848001531b2dcf0f3faWouter van Oortmersseninline flatbuffers::TypeTable *MovieTypeTable() {
67772a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static flatbuffers::TypeCode type_codes[] = {
67872a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    { flatbuffers::ET_UTYPE, 0, 0 },
67972a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    { flatbuffers::ET_SEQUENCE, 0, 0 },
68072a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    { flatbuffers::ET_UTYPE, 1, 0 },
68172a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    { flatbuffers::ET_SEQUENCE, 1, 0 }
68272a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
68372a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static flatbuffers::TypeFunction type_refs[] = {
68472a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    CharacterTypeTable
68572a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
68672a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static const char *names[] = {
68772a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    "main_character_type",
68872a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    "main_character",
68972a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    "characters_type",
69072a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    "characters"
69172a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
69272a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  static flatbuffers::TypeTable tt = {
69372a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen    flatbuffers::ST_TABLE, 4, type_codes, type_refs, nullptr, names
69472a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  };
69572a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen  return &tt;
69672a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen}
69772a99abfb7db64dc49720b28b41f382b5ec7cde0Wouter van Oortmerssen
69868bbe983e9819bcbcd214cf84d73a440863ed6caBei Liinline const Movie *GetMovie(const void *buf) {
69968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  return flatbuffers::GetRoot<Movie>(buf);
70068bbe983e9819bcbcd214cf84d73a440863ed6caBei Li}
70168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
702b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmersseninline Movie *GetMutableMovie(void *buf) {
703b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen  return flatbuffers::GetMutableRoot<Movie>(buf);
704b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen}
705b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
70668bbe983e9819bcbcd214cf84d73a440863ed6caBei Liinline const char *MovieIdentifier() {
70768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  return "MOVI";
70868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li}
70968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
71068bbe983e9819bcbcd214cf84d73a440863ed6caBei Liinline bool MovieBufferHasIdentifier(const void *buf) {
71168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  return flatbuffers::BufferHasIdentifier(
71268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li      buf, MovieIdentifier());
71368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li}
71468bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
71568bbe983e9819bcbcd214cf84d73a440863ed6caBei Liinline bool VerifyMovieBuffer(
71668bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    flatbuffers::Verifier &verifier) {
71768bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  return verifier.VerifyBuffer<Movie>(MovieIdentifier());
71868bbe983e9819bcbcd214cf84d73a440863ed6caBei Li}
71968bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
72068bbe983e9819bcbcd214cf84d73a440863ed6caBei Liinline void FinishMovieBuffer(
72168bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    flatbuffers::FlatBufferBuilder &fbb,
72268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li    flatbuffers::Offset<Movie> root) {
72368bbe983e9819bcbcd214cf84d73a440863ed6caBei Li  fbb.Finish(root, MovieIdentifier());
72468bbe983e9819bcbcd214cf84d73a440863ed6caBei Li}
72568bbe983e9819bcbcd214cf84d73a440863ed6caBei Li
726a8923222033763f1a74f836c656af19d9f620378Stewart Milesinline flatbuffers::unique_ptr<MovieT> UnPackMovie(
727b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    const void *buf,
728b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen    const flatbuffers::resolver_function_t *res = nullptr) {
729a8923222033763f1a74f836c656af19d9f620378Stewart Miles  return flatbuffers::unique_ptr<MovieT>(GetMovie(buf)->UnPack(res));
730b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen}
731b0752e179bdbae516125cccacd7aebcfd83033a9Wouter van Oortmerssen
73268bbe983e9819bcbcd214cf84d73a440863ed6caBei Li#endif  // FLATBUFFERS_GENERATED_UNIONVECTOR_H_
733