1 // automatically generated by the FlatBuffers compiler, do not modify 2 3 4 #ifndef FLATBUFFERS_GENERATED_MONSTER_MYGAME_SAMPLE_H_ 5 #define FLATBUFFERS_GENERATED_MONSTER_MYGAME_SAMPLE_H_ 6 7 #include "flatbuffers/flatbuffers.h" 8 9 namespace MyGame { 10 namespace Sample { 11 12 struct Vec3; 13 14 struct Monster; 15 struct MonsterT; 16 17 struct Weapon; 18 struct WeaponT; 19 20 enum Color { 21 Color_Red = 0, 22 Color_Green = 1, 23 Color_Blue = 2, 24 Color_MIN = Color_Red, 25 Color_MAX = Color_Blue 26 }; 27 28 inline Color (&EnumValuesColor())[3] { 29 static Color values[] = { 30 Color_Red, 31 Color_Green, 32 Color_Blue 33 }; 34 return values; 35 } 36 37 inline const char **EnumNamesColor() { 38 static const char *names[] = { 39 "Red", 40 "Green", 41 "Blue", 42 nullptr 43 }; 44 return names; 45 } 46 47 inline const char *EnumNameColor(Color e) { 48 const size_t index = static_cast<int>(e); 49 return EnumNamesColor()[index]; 50 } 51 52 enum Equipment { 53 Equipment_NONE = 0, 54 Equipment_Weapon = 1, 55 Equipment_MIN = Equipment_NONE, 56 Equipment_MAX = Equipment_Weapon 57 }; 58 59 inline Equipment (&EnumValuesEquipment())[2] { 60 static Equipment values[] = { 61 Equipment_NONE, 62 Equipment_Weapon 63 }; 64 return values; 65 } 66 67 inline const char **EnumNamesEquipment() { 68 static const char *names[] = { 69 "NONE", 70 "Weapon", 71 nullptr 72 }; 73 return names; 74 } 75 76 inline const char *EnumNameEquipment(Equipment e) { 77 const size_t index = static_cast<int>(e); 78 return EnumNamesEquipment()[index]; 79 } 80 81 template<typename T> struct EquipmentTraits { 82 static const Equipment enum_value = Equipment_NONE; 83 }; 84 85 template<> struct EquipmentTraits<Weapon> { 86 static const Equipment enum_value = Equipment_Weapon; 87 }; 88 89 struct EquipmentUnion { 90 Equipment type; 91 void *value; 92 93 EquipmentUnion() : type(Equipment_NONE), value(nullptr) {} 94 EquipmentUnion(EquipmentUnion&& u) FLATBUFFERS_NOEXCEPT : 95 type(Equipment_NONE), value(nullptr) 96 { std::swap(type, u.type); std::swap(value, u.value); } 97 EquipmentUnion(const EquipmentUnion &) FLATBUFFERS_NOEXCEPT; 98 EquipmentUnion &operator=(const EquipmentUnion &u) FLATBUFFERS_NOEXCEPT 99 { EquipmentUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; } 100 EquipmentUnion &operator=(EquipmentUnion &&u) FLATBUFFERS_NOEXCEPT 101 { std::swap(type, u.type); std::swap(value, u.value); return *this; } 102 ~EquipmentUnion() { Reset(); } 103 104 void Reset(); 105 106 #ifndef FLATBUFFERS_CPP98_STL 107 template <typename T> 108 void Set(T&& val) { 109 Reset(); 110 type = EquipmentTraits<typename T::TableType>::enum_value; 111 if (type != Equipment_NONE) { 112 value = new T(std::forward<T>(val)); 113 } 114 } 115 #endif // FLATBUFFERS_CPP98_STL 116 117 static void *UnPack(const void *obj, Equipment type, const flatbuffers::resolver_function_t *resolver); 118 flatbuffers::Offset<void> Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const; 119 120 WeaponT *AsWeapon() { 121 return type == Equipment_Weapon ? 122 reinterpret_cast<WeaponT *>(value) : nullptr; 123 } 124 const WeaponT *AsWeapon() const { 125 return type == Equipment_Weapon ? 126 reinterpret_cast<const WeaponT *>(value) : nullptr; 127 } 128 }; 129 130 bool VerifyEquipment(flatbuffers::Verifier &verifier, const void *obj, Equipment type); 131 bool VerifyEquipmentVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types); 132 133 MANUALLY_ALIGNED_STRUCT(4) Vec3 FLATBUFFERS_FINAL_CLASS { 134 private: 135 float x_; 136 float y_; 137 float z_; 138 139 public: 140 Vec3() { 141 memset(this, 0, sizeof(Vec3)); 142 } 143 Vec3(float _x, float _y, float _z) 144 : x_(flatbuffers::EndianScalar(_x)), 145 y_(flatbuffers::EndianScalar(_y)), 146 z_(flatbuffers::EndianScalar(_z)) { 147 } 148 float x() const { 149 return flatbuffers::EndianScalar(x_); 150 } 151 void mutate_x(float _x) { 152 flatbuffers::WriteScalar(&x_, _x); 153 } 154 float y() const { 155 return flatbuffers::EndianScalar(y_); 156 } 157 void mutate_y(float _y) { 158 flatbuffers::WriteScalar(&y_, _y); 159 } 160 float z() const { 161 return flatbuffers::EndianScalar(z_); 162 } 163 void mutate_z(float _z) { 164 flatbuffers::WriteScalar(&z_, _z); 165 } 166 }; 167 STRUCT_END(Vec3, 12); 168 169 struct MonsterT : public flatbuffers::NativeTable { 170 typedef Monster TableType; 171 flatbuffers::unique_ptr<Vec3> pos; 172 int16_t mana; 173 int16_t hp; 174 std::string name; 175 std::vector<uint8_t> inventory; 176 Color color; 177 std::vector<flatbuffers::unique_ptr<WeaponT>> weapons; 178 EquipmentUnion equipped; 179 MonsterT() 180 : mana(150), 181 hp(100), 182 color(Color_Blue) { 183 } 184 }; 185 186 struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { 187 typedef MonsterT NativeTableType; 188 enum { 189 VT_POS = 4, 190 VT_MANA = 6, 191 VT_HP = 8, 192 VT_NAME = 10, 193 VT_INVENTORY = 14, 194 VT_COLOR = 16, 195 VT_WEAPONS = 18, 196 VT_EQUIPPED_TYPE = 20, 197 VT_EQUIPPED = 22 198 }; 199 const Vec3 *pos() const { 200 return GetStruct<const Vec3 *>(VT_POS); 201 } 202 Vec3 *mutable_pos() { 203 return GetStruct<Vec3 *>(VT_POS); 204 } 205 int16_t mana() const { 206 return GetField<int16_t>(VT_MANA, 150); 207 } 208 bool mutate_mana(int16_t _mana) { 209 return SetField<int16_t>(VT_MANA, _mana, 150); 210 } 211 int16_t hp() const { 212 return GetField<int16_t>(VT_HP, 100); 213 } 214 bool mutate_hp(int16_t _hp) { 215 return SetField<int16_t>(VT_HP, _hp, 100); 216 } 217 const flatbuffers::String *name() const { 218 return GetPointer<const flatbuffers::String *>(VT_NAME); 219 } 220 flatbuffers::String *mutable_name() { 221 return GetPointer<flatbuffers::String *>(VT_NAME); 222 } 223 const flatbuffers::Vector<uint8_t> *inventory() const { 224 return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_INVENTORY); 225 } 226 flatbuffers::Vector<uint8_t> *mutable_inventory() { 227 return GetPointer<flatbuffers::Vector<uint8_t> *>(VT_INVENTORY); 228 } 229 Color color() const { 230 return static_cast<Color>(GetField<int8_t>(VT_COLOR, 2)); 231 } 232 bool mutate_color(Color _color) { 233 return SetField<int8_t>(VT_COLOR, static_cast<int8_t>(_color), 2); 234 } 235 const flatbuffers::Vector<flatbuffers::Offset<Weapon>> *weapons() const { 236 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Weapon>> *>(VT_WEAPONS); 237 } 238 flatbuffers::Vector<flatbuffers::Offset<Weapon>> *mutable_weapons() { 239 return GetPointer<flatbuffers::Vector<flatbuffers::Offset<Weapon>> *>(VT_WEAPONS); 240 } 241 Equipment equipped_type() const { 242 return static_cast<Equipment>(GetField<uint8_t>(VT_EQUIPPED_TYPE, 0)); 243 } 244 bool mutate_equipped_type(Equipment _equipped_type) { 245 return SetField<uint8_t>(VT_EQUIPPED_TYPE, static_cast<uint8_t>(_equipped_type), 0); 246 } 247 const void *equipped() const { 248 return GetPointer<const void *>(VT_EQUIPPED); 249 } 250 template<typename T> const T *equipped_as() const; 251 const Weapon *equipped_as_Weapon() const { 252 return equipped_type() == Equipment_Weapon ? static_cast<const Weapon *>(equipped()) : nullptr; 253 } 254 void *mutable_equipped() { 255 return GetPointer<void *>(VT_EQUIPPED); 256 } 257 bool Verify(flatbuffers::Verifier &verifier) const { 258 return VerifyTableStart(verifier) && 259 VerifyField<Vec3>(verifier, VT_POS) && 260 VerifyField<int16_t>(verifier, VT_MANA) && 261 VerifyField<int16_t>(verifier, VT_HP) && 262 VerifyOffset(verifier, VT_NAME) && 263 verifier.Verify(name()) && 264 VerifyOffset(verifier, VT_INVENTORY) && 265 verifier.Verify(inventory()) && 266 VerifyField<int8_t>(verifier, VT_COLOR) && 267 VerifyOffset(verifier, VT_WEAPONS) && 268 verifier.Verify(weapons()) && 269 verifier.VerifyVectorOfTables(weapons()) && 270 VerifyField<uint8_t>(verifier, VT_EQUIPPED_TYPE) && 271 VerifyOffset(verifier, VT_EQUIPPED) && 272 VerifyEquipment(verifier, equipped(), equipped_type()) && 273 verifier.EndTable(); 274 } 275 MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; 276 void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; 277 static flatbuffers::Offset<Monster> Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); 278 }; 279 280 template<> inline const Weapon *Monster::equipped_as<Weapon>() const { 281 return equipped_as_Weapon(); 282 } 283 284 struct MonsterBuilder { 285 flatbuffers::FlatBufferBuilder &fbb_; 286 flatbuffers::uoffset_t start_; 287 void add_pos(const Vec3 *pos) { 288 fbb_.AddStruct(Monster::VT_POS, pos); 289 } 290 void add_mana(int16_t mana) { 291 fbb_.AddElement<int16_t>(Monster::VT_MANA, mana, 150); 292 } 293 void add_hp(int16_t hp) { 294 fbb_.AddElement<int16_t>(Monster::VT_HP, hp, 100); 295 } 296 void add_name(flatbuffers::Offset<flatbuffers::String> name) { 297 fbb_.AddOffset(Monster::VT_NAME, name); 298 } 299 void add_inventory(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> inventory) { 300 fbb_.AddOffset(Monster::VT_INVENTORY, inventory); 301 } 302 void add_color(Color color) { 303 fbb_.AddElement<int8_t>(Monster::VT_COLOR, static_cast<int8_t>(color), 2); 304 } 305 void add_weapons(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Weapon>>> weapons) { 306 fbb_.AddOffset(Monster::VT_WEAPONS, weapons); 307 } 308 void add_equipped_type(Equipment equipped_type) { 309 fbb_.AddElement<uint8_t>(Monster::VT_EQUIPPED_TYPE, static_cast<uint8_t>(equipped_type), 0); 310 } 311 void add_equipped(flatbuffers::Offset<void> equipped) { 312 fbb_.AddOffset(Monster::VT_EQUIPPED, equipped); 313 } 314 explicit MonsterBuilder(flatbuffers::FlatBufferBuilder &_fbb) 315 : fbb_(_fbb) { 316 start_ = fbb_.StartTable(); 317 } 318 MonsterBuilder &operator=(const MonsterBuilder &); 319 flatbuffers::Offset<Monster> Finish() { 320 const auto end = fbb_.EndTable(start_); 321 auto o = flatbuffers::Offset<Monster>(end); 322 return o; 323 } 324 }; 325 326 inline flatbuffers::Offset<Monster> CreateMonster( 327 flatbuffers::FlatBufferBuilder &_fbb, 328 const Vec3 *pos = 0, 329 int16_t mana = 150, 330 int16_t hp = 100, 331 flatbuffers::Offset<flatbuffers::String> name = 0, 332 flatbuffers::Offset<flatbuffers::Vector<uint8_t>> inventory = 0, 333 Color color = Color_Blue, 334 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Weapon>>> weapons = 0, 335 Equipment equipped_type = Equipment_NONE, 336 flatbuffers::Offset<void> equipped = 0) { 337 MonsterBuilder builder_(_fbb); 338 builder_.add_equipped(equipped); 339 builder_.add_weapons(weapons); 340 builder_.add_inventory(inventory); 341 builder_.add_name(name); 342 builder_.add_pos(pos); 343 builder_.add_hp(hp); 344 builder_.add_mana(mana); 345 builder_.add_equipped_type(equipped_type); 346 builder_.add_color(color); 347 return builder_.Finish(); 348 } 349 350 inline flatbuffers::Offset<Monster> CreateMonsterDirect( 351 flatbuffers::FlatBufferBuilder &_fbb, 352 const Vec3 *pos = 0, 353 int16_t mana = 150, 354 int16_t hp = 100, 355 const char *name = nullptr, 356 const std::vector<uint8_t> *inventory = nullptr, 357 Color color = Color_Blue, 358 const std::vector<flatbuffers::Offset<Weapon>> *weapons = nullptr, 359 Equipment equipped_type = Equipment_NONE, 360 flatbuffers::Offset<void> equipped = 0) { 361 return MyGame::Sample::CreateMonster( 362 _fbb, 363 pos, 364 mana, 365 hp, 366 name ? _fbb.CreateString(name) : 0, 367 inventory ? _fbb.CreateVector<uint8_t>(*inventory) : 0, 368 color, 369 weapons ? _fbb.CreateVector<flatbuffers::Offset<Weapon>>(*weapons) : 0, 370 equipped_type, 371 equipped); 372 } 373 374 flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); 375 376 struct WeaponT : public flatbuffers::NativeTable { 377 typedef Weapon TableType; 378 std::string name; 379 int16_t damage; 380 WeaponT() 381 : damage(0) { 382 } 383 }; 384 385 struct Weapon FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { 386 typedef WeaponT NativeTableType; 387 enum { 388 VT_NAME = 4, 389 VT_DAMAGE = 6 390 }; 391 const flatbuffers::String *name() const { 392 return GetPointer<const flatbuffers::String *>(VT_NAME); 393 } 394 flatbuffers::String *mutable_name() { 395 return GetPointer<flatbuffers::String *>(VT_NAME); 396 } 397 int16_t damage() const { 398 return GetField<int16_t>(VT_DAMAGE, 0); 399 } 400 bool mutate_damage(int16_t _damage) { 401 return SetField<int16_t>(VT_DAMAGE, _damage, 0); 402 } 403 bool Verify(flatbuffers::Verifier &verifier) const { 404 return VerifyTableStart(verifier) && 405 VerifyOffset(verifier, VT_NAME) && 406 verifier.Verify(name()) && 407 VerifyField<int16_t>(verifier, VT_DAMAGE) && 408 verifier.EndTable(); 409 } 410 WeaponT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; 411 void UnPackTo(WeaponT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; 412 static flatbuffers::Offset<Weapon> Pack(flatbuffers::FlatBufferBuilder &_fbb, const WeaponT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); 413 }; 414 415 struct WeaponBuilder { 416 flatbuffers::FlatBufferBuilder &fbb_; 417 flatbuffers::uoffset_t start_; 418 void add_name(flatbuffers::Offset<flatbuffers::String> name) { 419 fbb_.AddOffset(Weapon::VT_NAME, name); 420 } 421 void add_damage(int16_t damage) { 422 fbb_.AddElement<int16_t>(Weapon::VT_DAMAGE, damage, 0); 423 } 424 explicit WeaponBuilder(flatbuffers::FlatBufferBuilder &_fbb) 425 : fbb_(_fbb) { 426 start_ = fbb_.StartTable(); 427 } 428 WeaponBuilder &operator=(const WeaponBuilder &); 429 flatbuffers::Offset<Weapon> Finish() { 430 const auto end = fbb_.EndTable(start_); 431 auto o = flatbuffers::Offset<Weapon>(end); 432 return o; 433 } 434 }; 435 436 inline flatbuffers::Offset<Weapon> CreateWeapon( 437 flatbuffers::FlatBufferBuilder &_fbb, 438 flatbuffers::Offset<flatbuffers::String> name = 0, 439 int16_t damage = 0) { 440 WeaponBuilder builder_(_fbb); 441 builder_.add_name(name); 442 builder_.add_damage(damage); 443 return builder_.Finish(); 444 } 445 446 inline flatbuffers::Offset<Weapon> CreateWeaponDirect( 447 flatbuffers::FlatBufferBuilder &_fbb, 448 const char *name = nullptr, 449 int16_t damage = 0) { 450 return MyGame::Sample::CreateWeapon( 451 _fbb, 452 name ? _fbb.CreateString(name) : 0, 453 damage); 454 } 455 456 flatbuffers::Offset<Weapon> CreateWeapon(flatbuffers::FlatBufferBuilder &_fbb, const WeaponT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); 457 458 inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolver) const { 459 auto _o = new MonsterT(); 460 UnPackTo(_o, _resolver); 461 return _o; 462 } 463 464 inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const { 465 (void)_o; 466 (void)_resolver; 467 { auto _e = pos(); if (_e) _o->pos = flatbuffers::unique_ptr<Vec3>(new Vec3(*_e)); }; 468 { auto _e = mana(); _o->mana = _e; }; 469 { auto _e = hp(); _o->hp = _e; }; 470 { auto _e = name(); if (_e) _o->name = _e->str(); }; 471 { auto _e = inventory(); if (_e) { _o->inventory.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->inventory[_i] = _e->Get(_i); } } }; 472 { auto _e = color(); _o->color = _e; }; 473 { auto _e = weapons(); if (_e) { _o->weapons.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->weapons[_i] = flatbuffers::unique_ptr<WeaponT>(_e->Get(_i)->UnPack(_resolver)); } } }; 474 { auto _e = equipped_type(); _o->equipped.type = _e; }; 475 { auto _e = equipped(); if (_e) _o->equipped.value = EquipmentUnion::UnPack(_e, equipped_type(), _resolver); }; 476 } 477 478 inline flatbuffers::Offset<Monster> Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) { 479 return CreateMonster(_fbb, _o, _rehasher); 480 } 481 482 inline flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher) { 483 (void)_rehasher; 484 (void)_o; 485 struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MonsterT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; 486 auto _pos = _o->pos ? _o->pos.get() : 0; 487 auto _mana = _o->mana; 488 auto _hp = _o->hp; 489 auto _name = _o->name.empty() ? 0 : _fbb.CreateString(_o->name); 490 auto _inventory = _o->inventory.size() ? _fbb.CreateVector(_o->inventory) : 0; 491 auto _color = _o->color; 492 auto _weapons = _o->weapons.size() ? _fbb.CreateVector<flatbuffers::Offset<Weapon>> (_o->weapons.size(), [](size_t i, _VectorArgs *__va) { return CreateWeapon(*__va->__fbb, __va->__o->weapons[i].get(), __va->__rehasher); }, &_va ) : 0; 493 auto _equipped_type = _o->equipped.type; 494 auto _equipped = _o->equipped.Pack(_fbb); 495 return MyGame::Sample::CreateMonster( 496 _fbb, 497 _pos, 498 _mana, 499 _hp, 500 _name, 501 _inventory, 502 _color, 503 _weapons, 504 _equipped_type, 505 _equipped); 506 } 507 508 inline WeaponT *Weapon::UnPack(const flatbuffers::resolver_function_t *_resolver) const { 509 auto _o = new WeaponT(); 510 UnPackTo(_o, _resolver); 511 return _o; 512 } 513 514 inline void Weapon::UnPackTo(WeaponT *_o, const flatbuffers::resolver_function_t *_resolver) const { 515 (void)_o; 516 (void)_resolver; 517 { auto _e = name(); if (_e) _o->name = _e->str(); }; 518 { auto _e = damage(); _o->damage = _e; }; 519 } 520 521 inline flatbuffers::Offset<Weapon> Weapon::Pack(flatbuffers::FlatBufferBuilder &_fbb, const WeaponT* _o, const flatbuffers::rehasher_function_t *_rehasher) { 522 return CreateWeapon(_fbb, _o, _rehasher); 523 } 524 525 inline flatbuffers::Offset<Weapon> CreateWeapon(flatbuffers::FlatBufferBuilder &_fbb, const WeaponT *_o, const flatbuffers::rehasher_function_t *_rehasher) { 526 (void)_rehasher; 527 (void)_o; 528 struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const WeaponT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; 529 auto _name = _o->name.empty() ? 0 : _fbb.CreateString(_o->name); 530 auto _damage = _o->damage; 531 return MyGame::Sample::CreateWeapon( 532 _fbb, 533 _name, 534 _damage); 535 } 536 537 inline bool VerifyEquipment(flatbuffers::Verifier &verifier, const void *obj, Equipment type) { 538 switch (type) { 539 case Equipment_NONE: { 540 return true; 541 } 542 case Equipment_Weapon: { 543 auto ptr = reinterpret_cast<const Weapon *>(obj); 544 return verifier.VerifyTable(ptr); 545 } 546 default: return false; 547 } 548 } 549 550 inline bool VerifyEquipmentVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) { 551 if (values->size() != types->size()) return false; 552 for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { 553 if (!VerifyEquipment( 554 verifier, values->Get(i), types->GetEnum<Equipment>(i))) { 555 return false; 556 } 557 } 558 return true; 559 } 560 561 inline void *EquipmentUnion::UnPack(const void *obj, Equipment type, const flatbuffers::resolver_function_t *resolver) { 562 switch (type) { 563 case Equipment_Weapon: { 564 auto ptr = reinterpret_cast<const Weapon *>(obj); 565 return ptr->UnPack(resolver); 566 } 567 default: return nullptr; 568 } 569 } 570 571 inline flatbuffers::Offset<void> EquipmentUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const { 572 switch (type) { 573 case Equipment_Weapon: { 574 auto ptr = reinterpret_cast<const WeaponT *>(value); 575 return CreateWeapon(_fbb, ptr, _rehasher).Union(); 576 } 577 default: return 0; 578 } 579 } 580 581 inline EquipmentUnion::EquipmentUnion(const EquipmentUnion &u) FLATBUFFERS_NOEXCEPT : type(u.type), value(nullptr) { 582 switch (type) { 583 case Equipment_Weapon: { 584 value = new WeaponT(*reinterpret_cast<WeaponT *>(u.value)); 585 break; 586 } 587 default: 588 break; 589 } 590 } 591 592 inline void EquipmentUnion::Reset() { 593 switch (type) { 594 case Equipment_Weapon: { 595 auto ptr = reinterpret_cast<WeaponT *>(value); 596 delete ptr; 597 break; 598 } 599 default: break; 600 } 601 value = nullptr; 602 type = Equipment_NONE; 603 } 604 605 inline flatbuffers::TypeTable *Vec3TypeTable(); 606 607 inline flatbuffers::TypeTable *MonsterTypeTable(); 608 609 inline flatbuffers::TypeTable *WeaponTypeTable(); 610 611 inline flatbuffers::TypeTable *ColorTypeTable() { 612 static flatbuffers::TypeCode type_codes[] = { 613 { flatbuffers::ET_CHAR, 0, 0 }, 614 { flatbuffers::ET_CHAR, 0, 0 }, 615 { flatbuffers::ET_CHAR, 0, 0 } 616 }; 617 static flatbuffers::TypeFunction type_refs[] = { 618 ColorTypeTable 619 }; 620 static const char *names[] = { 621 "Red", 622 "Green", 623 "Blue" 624 }; 625 static flatbuffers::TypeTable tt = { 626 flatbuffers::ST_ENUM, 3, type_codes, type_refs, nullptr, names 627 }; 628 return &tt; 629 } 630 631 inline flatbuffers::TypeTable *EquipmentTypeTable() { 632 static flatbuffers::TypeCode type_codes[] = { 633 { flatbuffers::ET_SEQUENCE, 0, -1 }, 634 { flatbuffers::ET_SEQUENCE, 0, 0 } 635 }; 636 static flatbuffers::TypeFunction type_refs[] = { 637 WeaponTypeTable 638 }; 639 static const char *names[] = { 640 "NONE", 641 "Weapon" 642 }; 643 static flatbuffers::TypeTable tt = { 644 flatbuffers::ST_UNION, 2, type_codes, type_refs, nullptr, names 645 }; 646 return &tt; 647 } 648 649 inline flatbuffers::TypeTable *Vec3TypeTable() { 650 static flatbuffers::TypeCode type_codes[] = { 651 { flatbuffers::ET_FLOAT, 0, -1 }, 652 { flatbuffers::ET_FLOAT, 0, -1 }, 653 { flatbuffers::ET_FLOAT, 0, -1 } 654 }; 655 static const int32_t values[] = { 0, 4, 8, 12 }; 656 static const char *names[] = { 657 "x", 658 "y", 659 "z" 660 }; 661 static flatbuffers::TypeTable tt = { 662 flatbuffers::ST_STRUCT, 3, type_codes, nullptr, values, names 663 }; 664 return &tt; 665 } 666 667 inline flatbuffers::TypeTable *MonsterTypeTable() { 668 static flatbuffers::TypeCode type_codes[] = { 669 { flatbuffers::ET_SEQUENCE, 0, 0 }, 670 { flatbuffers::ET_SHORT, 0, -1 }, 671 { flatbuffers::ET_SHORT, 0, -1 }, 672 { flatbuffers::ET_STRING, 0, -1 }, 673 { flatbuffers::ET_BOOL, 0, -1 }, 674 { flatbuffers::ET_UCHAR, 1, -1 }, 675 { flatbuffers::ET_CHAR, 0, 1 }, 676 { flatbuffers::ET_SEQUENCE, 1, 2 }, 677 { flatbuffers::ET_UTYPE, 0, 3 }, 678 { flatbuffers::ET_SEQUENCE, 0, 3 } 679 }; 680 static flatbuffers::TypeFunction type_refs[] = { 681 Vec3TypeTable, 682 ColorTypeTable, 683 WeaponTypeTable, 684 EquipmentTypeTable 685 }; 686 static const char *names[] = { 687 "pos", 688 "mana", 689 "hp", 690 "name", 691 "friendly", 692 "inventory", 693 "color", 694 "weapons", 695 "equipped_type", 696 "equipped" 697 }; 698 static flatbuffers::TypeTable tt = { 699 flatbuffers::ST_TABLE, 10, type_codes, type_refs, nullptr, names 700 }; 701 return &tt; 702 } 703 704 inline flatbuffers::TypeTable *WeaponTypeTable() { 705 static flatbuffers::TypeCode type_codes[] = { 706 { flatbuffers::ET_STRING, 0, -1 }, 707 { flatbuffers::ET_SHORT, 0, -1 } 708 }; 709 static const char *names[] = { 710 "name", 711 "damage" 712 }; 713 static flatbuffers::TypeTable tt = { 714 flatbuffers::ST_TABLE, 2, type_codes, nullptr, nullptr, names 715 }; 716 return &tt; 717 } 718 719 inline const MyGame::Sample::Monster *GetMonster(const void *buf) { 720 return flatbuffers::GetRoot<MyGame::Sample::Monster>(buf); 721 } 722 723 inline Monster *GetMutableMonster(void *buf) { 724 return flatbuffers::GetMutableRoot<Monster>(buf); 725 } 726 727 inline bool VerifyMonsterBuffer( 728 flatbuffers::Verifier &verifier) { 729 return verifier.VerifyBuffer<MyGame::Sample::Monster>(nullptr); 730 } 731 732 inline void FinishMonsterBuffer( 733 flatbuffers::FlatBufferBuilder &fbb, 734 flatbuffers::Offset<MyGame::Sample::Monster> root) { 735 fbb.Finish(root); 736 } 737 738 inline flatbuffers::unique_ptr<MonsterT> UnPackMonster( 739 const void *buf, 740 const flatbuffers::resolver_function_t *res = nullptr) { 741 return flatbuffers::unique_ptr<MonsterT>(GetMonster(buf)->UnPack(res)); 742 } 743 744 } // namespace Sample 745 } // namespace MyGame 746 747 #endif // FLATBUFFERS_GENERATED_MONSTER_MYGAME_SAMPLE_H_ 748