1 // automatically generated by the FlatBuffers compiler, do not modify 2 3 4 #ifndef FLATBUFFERS_GENERATED_REFLECTION_REFLECTION_H_ 5 #define FLATBUFFERS_GENERATED_REFLECTION_REFLECTION_H_ 6 7 #include "flatbuffers/flatbuffers.h" 8 9 namespace reflection { 10 11 struct Type; 12 13 struct KeyValue; 14 15 struct EnumVal; 16 17 struct Enum; 18 19 struct Field; 20 21 struct Object; 22 23 struct Schema; 24 25 enum BaseType { 26 None = 0, 27 UType = 1, 28 Bool = 2, 29 Byte = 3, 30 UByte = 4, 31 Short = 5, 32 UShort = 6, 33 Int = 7, 34 UInt = 8, 35 Long = 9, 36 ULong = 10, 37 Float = 11, 38 Double = 12, 39 String = 13, 40 Vector = 14, 41 Obj = 15, 42 Union = 16 43 }; 44 45 inline BaseType (&EnumValuesBaseType())[17] { 46 static BaseType values[] = { 47 None, 48 UType, 49 Bool, 50 Byte, 51 UByte, 52 Short, 53 UShort, 54 Int, 55 UInt, 56 Long, 57 ULong, 58 Float, 59 Double, 60 String, 61 Vector, 62 Obj, 63 Union 64 }; 65 return values; 66 } 67 68 inline const char **EnumNamesBaseType() { 69 static const char *names[] = { 70 "None", 71 "UType", 72 "Bool", 73 "Byte", 74 "UByte", 75 "Short", 76 "UShort", 77 "Int", 78 "UInt", 79 "Long", 80 "ULong", 81 "Float", 82 "Double", 83 "String", 84 "Vector", 85 "Obj", 86 "Union", 87 nullptr 88 }; 89 return names; 90 } 91 92 inline const char *EnumNameBaseType(BaseType e) { 93 const size_t index = static_cast<int>(e); 94 return EnumNamesBaseType()[index]; 95 } 96 97 struct Type FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { 98 enum { 99 VT_BASE_TYPE = 4, 100 VT_ELEMENT = 6, 101 VT_INDEX = 8 102 }; 103 BaseType base_type() const { 104 return static_cast<BaseType>(GetField<int8_t>(VT_BASE_TYPE, 0)); 105 } 106 BaseType element() const { 107 return static_cast<BaseType>(GetField<int8_t>(VT_ELEMENT, 0)); 108 } 109 int32_t index() const { 110 return GetField<int32_t>(VT_INDEX, -1); 111 } 112 bool Verify(flatbuffers::Verifier &verifier) const { 113 return VerifyTableStart(verifier) && 114 VerifyField<int8_t>(verifier, VT_BASE_TYPE) && 115 VerifyField<int8_t>(verifier, VT_ELEMENT) && 116 VerifyField<int32_t>(verifier, VT_INDEX) && 117 verifier.EndTable(); 118 } 119 }; 120 121 struct TypeBuilder { 122 flatbuffers::FlatBufferBuilder &fbb_; 123 flatbuffers::uoffset_t start_; 124 void add_base_type(BaseType base_type) { 125 fbb_.AddElement<int8_t>(Type::VT_BASE_TYPE, static_cast<int8_t>(base_type), 0); 126 } 127 void add_element(BaseType element) { 128 fbb_.AddElement<int8_t>(Type::VT_ELEMENT, static_cast<int8_t>(element), 0); 129 } 130 void add_index(int32_t index) { 131 fbb_.AddElement<int32_t>(Type::VT_INDEX, index, -1); 132 } 133 TypeBuilder(flatbuffers::FlatBufferBuilder &_fbb) 134 : fbb_(_fbb) { 135 start_ = fbb_.StartTable(); 136 } 137 TypeBuilder &operator=(const TypeBuilder &); 138 flatbuffers::Offset<Type> Finish() { 139 const auto end = fbb_.EndTable(start_); 140 auto o = flatbuffers::Offset<Type>(end); 141 return o; 142 } 143 }; 144 145 inline flatbuffers::Offset<Type> CreateType( 146 flatbuffers::FlatBufferBuilder &_fbb, 147 BaseType base_type = None, 148 BaseType element = None, 149 int32_t index = -1) { 150 TypeBuilder builder_(_fbb); 151 builder_.add_index(index); 152 builder_.add_element(element); 153 builder_.add_base_type(base_type); 154 return builder_.Finish(); 155 } 156 157 struct KeyValue FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { 158 enum { 159 VT_KEY = 4, 160 VT_VALUE = 6 161 }; 162 const flatbuffers::String *key() const { 163 return GetPointer<const flatbuffers::String *>(VT_KEY); 164 } 165 bool KeyCompareLessThan(const KeyValue *o) const { 166 return *key() < *o->key(); 167 } 168 int KeyCompareWithValue(const char *val) const { 169 return strcmp(key()->c_str(), val); 170 } 171 const flatbuffers::String *value() const { 172 return GetPointer<const flatbuffers::String *>(VT_VALUE); 173 } 174 bool Verify(flatbuffers::Verifier &verifier) const { 175 return VerifyTableStart(verifier) && 176 VerifyOffsetRequired(verifier, VT_KEY) && 177 verifier.Verify(key()) && 178 VerifyOffset(verifier, VT_VALUE) && 179 verifier.Verify(value()) && 180 verifier.EndTable(); 181 } 182 }; 183 184 struct KeyValueBuilder { 185 flatbuffers::FlatBufferBuilder &fbb_; 186 flatbuffers::uoffset_t start_; 187 void add_key(flatbuffers::Offset<flatbuffers::String> key) { 188 fbb_.AddOffset(KeyValue::VT_KEY, key); 189 } 190 void add_value(flatbuffers::Offset<flatbuffers::String> value) { 191 fbb_.AddOffset(KeyValue::VT_VALUE, value); 192 } 193 KeyValueBuilder(flatbuffers::FlatBufferBuilder &_fbb) 194 : fbb_(_fbb) { 195 start_ = fbb_.StartTable(); 196 } 197 KeyValueBuilder &operator=(const KeyValueBuilder &); 198 flatbuffers::Offset<KeyValue> Finish() { 199 const auto end = fbb_.EndTable(start_); 200 auto o = flatbuffers::Offset<KeyValue>(end); 201 fbb_.Required(o, KeyValue::VT_KEY); 202 return o; 203 } 204 }; 205 206 inline flatbuffers::Offset<KeyValue> CreateKeyValue( 207 flatbuffers::FlatBufferBuilder &_fbb, 208 flatbuffers::Offset<flatbuffers::String> key = 0, 209 flatbuffers::Offset<flatbuffers::String> value = 0) { 210 KeyValueBuilder builder_(_fbb); 211 builder_.add_value(value); 212 builder_.add_key(key); 213 return builder_.Finish(); 214 } 215 216 inline flatbuffers::Offset<KeyValue> CreateKeyValueDirect( 217 flatbuffers::FlatBufferBuilder &_fbb, 218 const char *key = nullptr, 219 const char *value = nullptr) { 220 return reflection::CreateKeyValue( 221 _fbb, 222 key ? _fbb.CreateString(key) : 0, 223 value ? _fbb.CreateString(value) : 0); 224 } 225 226 struct EnumVal FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { 227 enum { 228 VT_NAME = 4, 229 VT_VALUE = 6, 230 VT_OBJECT = 8, 231 VT_UNION_TYPE = 10 232 }; 233 const flatbuffers::String *name() const { 234 return GetPointer<const flatbuffers::String *>(VT_NAME); 235 } 236 int64_t value() const { 237 return GetField<int64_t>(VT_VALUE, 0); 238 } 239 bool KeyCompareLessThan(const EnumVal *o) const { 240 return value() < o->value(); 241 } 242 int KeyCompareWithValue(int64_t val) const { 243 const auto key = value(); 244 if (key < val) { 245 return -1; 246 } else if (key > val) { 247 return 1; 248 } else { 249 return 0; 250 } 251 } 252 const Object *object() const { 253 return GetPointer<const Object *>(VT_OBJECT); 254 } 255 const Type *union_type() const { 256 return GetPointer<const Type *>(VT_UNION_TYPE); 257 } 258 bool Verify(flatbuffers::Verifier &verifier) const { 259 return VerifyTableStart(verifier) && 260 VerifyOffsetRequired(verifier, VT_NAME) && 261 verifier.Verify(name()) && 262 VerifyField<int64_t>(verifier, VT_VALUE) && 263 VerifyOffset(verifier, VT_OBJECT) && 264 verifier.VerifyTable(object()) && 265 VerifyOffset(verifier, VT_UNION_TYPE) && 266 verifier.VerifyTable(union_type()) && 267 verifier.EndTable(); 268 } 269 }; 270 271 struct EnumValBuilder { 272 flatbuffers::FlatBufferBuilder &fbb_; 273 flatbuffers::uoffset_t start_; 274 void add_name(flatbuffers::Offset<flatbuffers::String> name) { 275 fbb_.AddOffset(EnumVal::VT_NAME, name); 276 } 277 void add_value(int64_t value) { 278 fbb_.AddElement<int64_t>(EnumVal::VT_VALUE, value, 0); 279 } 280 void add_object(flatbuffers::Offset<Object> object) { 281 fbb_.AddOffset(EnumVal::VT_OBJECT, object); 282 } 283 void add_union_type(flatbuffers::Offset<Type> union_type) { 284 fbb_.AddOffset(EnumVal::VT_UNION_TYPE, union_type); 285 } 286 EnumValBuilder(flatbuffers::FlatBufferBuilder &_fbb) 287 : fbb_(_fbb) { 288 start_ = fbb_.StartTable(); 289 } 290 EnumValBuilder &operator=(const EnumValBuilder &); 291 flatbuffers::Offset<EnumVal> Finish() { 292 const auto end = fbb_.EndTable(start_); 293 auto o = flatbuffers::Offset<EnumVal>(end); 294 fbb_.Required(o, EnumVal::VT_NAME); 295 return o; 296 } 297 }; 298 299 inline flatbuffers::Offset<EnumVal> CreateEnumVal( 300 flatbuffers::FlatBufferBuilder &_fbb, 301 flatbuffers::Offset<flatbuffers::String> name = 0, 302 int64_t value = 0, 303 flatbuffers::Offset<Object> object = 0, 304 flatbuffers::Offset<Type> union_type = 0) { 305 EnumValBuilder builder_(_fbb); 306 builder_.add_value(value); 307 builder_.add_union_type(union_type); 308 builder_.add_object(object); 309 builder_.add_name(name); 310 return builder_.Finish(); 311 } 312 313 inline flatbuffers::Offset<EnumVal> CreateEnumValDirect( 314 flatbuffers::FlatBufferBuilder &_fbb, 315 const char *name = nullptr, 316 int64_t value = 0, 317 flatbuffers::Offset<Object> object = 0, 318 flatbuffers::Offset<Type> union_type = 0) { 319 return reflection::CreateEnumVal( 320 _fbb, 321 name ? _fbb.CreateString(name) : 0, 322 value, 323 object, 324 union_type); 325 } 326 327 struct Enum FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { 328 enum { 329 VT_NAME = 4, 330 VT_VALUES = 6, 331 VT_IS_UNION = 8, 332 VT_UNDERLYING_TYPE = 10, 333 VT_ATTRIBUTES = 12, 334 VT_DOCUMENTATION = 14 335 }; 336 const flatbuffers::String *name() const { 337 return GetPointer<const flatbuffers::String *>(VT_NAME); 338 } 339 bool KeyCompareLessThan(const Enum *o) const { 340 return *name() < *o->name(); 341 } 342 int KeyCompareWithValue(const char *val) const { 343 return strcmp(name()->c_str(), val); 344 } 345 const flatbuffers::Vector<flatbuffers::Offset<EnumVal>> *values() const { 346 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<EnumVal>> *>(VT_VALUES); 347 } 348 bool is_union() const { 349 return GetField<uint8_t>(VT_IS_UNION, 0) != 0; 350 } 351 const Type *underlying_type() const { 352 return GetPointer<const Type *>(VT_UNDERLYING_TYPE); 353 } 354 const flatbuffers::Vector<flatbuffers::Offset<KeyValue>> *attributes() const { 355 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<KeyValue>> *>(VT_ATTRIBUTES); 356 } 357 const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *documentation() const { 358 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_DOCUMENTATION); 359 } 360 bool Verify(flatbuffers::Verifier &verifier) const { 361 return VerifyTableStart(verifier) && 362 VerifyOffsetRequired(verifier, VT_NAME) && 363 verifier.Verify(name()) && 364 VerifyOffsetRequired(verifier, VT_VALUES) && 365 verifier.Verify(values()) && 366 verifier.VerifyVectorOfTables(values()) && 367 VerifyField<uint8_t>(verifier, VT_IS_UNION) && 368 VerifyOffsetRequired(verifier, VT_UNDERLYING_TYPE) && 369 verifier.VerifyTable(underlying_type()) && 370 VerifyOffset(verifier, VT_ATTRIBUTES) && 371 verifier.Verify(attributes()) && 372 verifier.VerifyVectorOfTables(attributes()) && 373 VerifyOffset(verifier, VT_DOCUMENTATION) && 374 verifier.Verify(documentation()) && 375 verifier.VerifyVectorOfStrings(documentation()) && 376 verifier.EndTable(); 377 } 378 }; 379 380 struct EnumBuilder { 381 flatbuffers::FlatBufferBuilder &fbb_; 382 flatbuffers::uoffset_t start_; 383 void add_name(flatbuffers::Offset<flatbuffers::String> name) { 384 fbb_.AddOffset(Enum::VT_NAME, name); 385 } 386 void add_values(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<EnumVal>>> values) { 387 fbb_.AddOffset(Enum::VT_VALUES, values); 388 } 389 void add_is_union(bool is_union) { 390 fbb_.AddElement<uint8_t>(Enum::VT_IS_UNION, static_cast<uint8_t>(is_union), 0); 391 } 392 void add_underlying_type(flatbuffers::Offset<Type> underlying_type) { 393 fbb_.AddOffset(Enum::VT_UNDERLYING_TYPE, underlying_type); 394 } 395 void add_attributes(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<KeyValue>>> attributes) { 396 fbb_.AddOffset(Enum::VT_ATTRIBUTES, attributes); 397 } 398 void add_documentation(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> documentation) { 399 fbb_.AddOffset(Enum::VT_DOCUMENTATION, documentation); 400 } 401 EnumBuilder(flatbuffers::FlatBufferBuilder &_fbb) 402 : fbb_(_fbb) { 403 start_ = fbb_.StartTable(); 404 } 405 EnumBuilder &operator=(const EnumBuilder &); 406 flatbuffers::Offset<Enum> Finish() { 407 const auto end = fbb_.EndTable(start_); 408 auto o = flatbuffers::Offset<Enum>(end); 409 fbb_.Required(o, Enum::VT_NAME); 410 fbb_.Required(o, Enum::VT_VALUES); 411 fbb_.Required(o, Enum::VT_UNDERLYING_TYPE); 412 return o; 413 } 414 }; 415 416 inline flatbuffers::Offset<Enum> CreateEnum( 417 flatbuffers::FlatBufferBuilder &_fbb, 418 flatbuffers::Offset<flatbuffers::String> name = 0, 419 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<EnumVal>>> values = 0, 420 bool is_union = false, 421 flatbuffers::Offset<Type> underlying_type = 0, 422 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<KeyValue>>> attributes = 0, 423 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> documentation = 0) { 424 EnumBuilder builder_(_fbb); 425 builder_.add_documentation(documentation); 426 builder_.add_attributes(attributes); 427 builder_.add_underlying_type(underlying_type); 428 builder_.add_values(values); 429 builder_.add_name(name); 430 builder_.add_is_union(is_union); 431 return builder_.Finish(); 432 } 433 434 inline flatbuffers::Offset<Enum> CreateEnumDirect( 435 flatbuffers::FlatBufferBuilder &_fbb, 436 const char *name = nullptr, 437 const std::vector<flatbuffers::Offset<EnumVal>> *values = nullptr, 438 bool is_union = false, 439 flatbuffers::Offset<Type> underlying_type = 0, 440 const std::vector<flatbuffers::Offset<KeyValue>> *attributes = nullptr, 441 const std::vector<flatbuffers::Offset<flatbuffers::String>> *documentation = nullptr) { 442 return reflection::CreateEnum( 443 _fbb, 444 name ? _fbb.CreateString(name) : 0, 445 values ? _fbb.CreateVector<flatbuffers::Offset<EnumVal>>(*values) : 0, 446 is_union, 447 underlying_type, 448 attributes ? _fbb.CreateVector<flatbuffers::Offset<KeyValue>>(*attributes) : 0, 449 documentation ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*documentation) : 0); 450 } 451 452 struct Field FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { 453 enum { 454 VT_NAME = 4, 455 VT_TYPE = 6, 456 VT_ID = 8, 457 VT_OFFSET = 10, 458 VT_DEFAULT_INTEGER = 12, 459 VT_DEFAULT_REAL = 14, 460 VT_DEPRECATED = 16, 461 VT_REQUIRED = 18, 462 VT_KEY = 20, 463 VT_ATTRIBUTES = 22, 464 VT_DOCUMENTATION = 24 465 }; 466 const flatbuffers::String *name() const { 467 return GetPointer<const flatbuffers::String *>(VT_NAME); 468 } 469 bool KeyCompareLessThan(const Field *o) const { 470 return *name() < *o->name(); 471 } 472 int KeyCompareWithValue(const char *val) const { 473 return strcmp(name()->c_str(), val); 474 } 475 const Type *type() const { 476 return GetPointer<const Type *>(VT_TYPE); 477 } 478 uint16_t id() const { 479 return GetField<uint16_t>(VT_ID, 0); 480 } 481 uint16_t offset() const { 482 return GetField<uint16_t>(VT_OFFSET, 0); 483 } 484 int64_t default_integer() const { 485 return GetField<int64_t>(VT_DEFAULT_INTEGER, 0); 486 } 487 double default_real() const { 488 return GetField<double>(VT_DEFAULT_REAL, 0.0); 489 } 490 bool deprecated() const { 491 return GetField<uint8_t>(VT_DEPRECATED, 0) != 0; 492 } 493 bool required() const { 494 return GetField<uint8_t>(VT_REQUIRED, 0) != 0; 495 } 496 bool key() const { 497 return GetField<uint8_t>(VT_KEY, 0) != 0; 498 } 499 const flatbuffers::Vector<flatbuffers::Offset<KeyValue>> *attributes() const { 500 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<KeyValue>> *>(VT_ATTRIBUTES); 501 } 502 const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *documentation() const { 503 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_DOCUMENTATION); 504 } 505 bool Verify(flatbuffers::Verifier &verifier) const { 506 return VerifyTableStart(verifier) && 507 VerifyOffsetRequired(verifier, VT_NAME) && 508 verifier.Verify(name()) && 509 VerifyOffsetRequired(verifier, VT_TYPE) && 510 verifier.VerifyTable(type()) && 511 VerifyField<uint16_t>(verifier, VT_ID) && 512 VerifyField<uint16_t>(verifier, VT_OFFSET) && 513 VerifyField<int64_t>(verifier, VT_DEFAULT_INTEGER) && 514 VerifyField<double>(verifier, VT_DEFAULT_REAL) && 515 VerifyField<uint8_t>(verifier, VT_DEPRECATED) && 516 VerifyField<uint8_t>(verifier, VT_REQUIRED) && 517 VerifyField<uint8_t>(verifier, VT_KEY) && 518 VerifyOffset(verifier, VT_ATTRIBUTES) && 519 verifier.Verify(attributes()) && 520 verifier.VerifyVectorOfTables(attributes()) && 521 VerifyOffset(verifier, VT_DOCUMENTATION) && 522 verifier.Verify(documentation()) && 523 verifier.VerifyVectorOfStrings(documentation()) && 524 verifier.EndTable(); 525 } 526 }; 527 528 struct FieldBuilder { 529 flatbuffers::FlatBufferBuilder &fbb_; 530 flatbuffers::uoffset_t start_; 531 void add_name(flatbuffers::Offset<flatbuffers::String> name) { 532 fbb_.AddOffset(Field::VT_NAME, name); 533 } 534 void add_type(flatbuffers::Offset<Type> type) { 535 fbb_.AddOffset(Field::VT_TYPE, type); 536 } 537 void add_id(uint16_t id) { 538 fbb_.AddElement<uint16_t>(Field::VT_ID, id, 0); 539 } 540 void add_offset(uint16_t offset) { 541 fbb_.AddElement<uint16_t>(Field::VT_OFFSET, offset, 0); 542 } 543 void add_default_integer(int64_t default_integer) { 544 fbb_.AddElement<int64_t>(Field::VT_DEFAULT_INTEGER, default_integer, 0); 545 } 546 void add_default_real(double default_real) { 547 fbb_.AddElement<double>(Field::VT_DEFAULT_REAL, default_real, 0.0); 548 } 549 void add_deprecated(bool deprecated) { 550 fbb_.AddElement<uint8_t>(Field::VT_DEPRECATED, static_cast<uint8_t>(deprecated), 0); 551 } 552 void add_required(bool required) { 553 fbb_.AddElement<uint8_t>(Field::VT_REQUIRED, static_cast<uint8_t>(required), 0); 554 } 555 void add_key(bool key) { 556 fbb_.AddElement<uint8_t>(Field::VT_KEY, static_cast<uint8_t>(key), 0); 557 } 558 void add_attributes(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<KeyValue>>> attributes) { 559 fbb_.AddOffset(Field::VT_ATTRIBUTES, attributes); 560 } 561 void add_documentation(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> documentation) { 562 fbb_.AddOffset(Field::VT_DOCUMENTATION, documentation); 563 } 564 FieldBuilder(flatbuffers::FlatBufferBuilder &_fbb) 565 : fbb_(_fbb) { 566 start_ = fbb_.StartTable(); 567 } 568 FieldBuilder &operator=(const FieldBuilder &); 569 flatbuffers::Offset<Field> Finish() { 570 const auto end = fbb_.EndTable(start_); 571 auto o = flatbuffers::Offset<Field>(end); 572 fbb_.Required(o, Field::VT_NAME); 573 fbb_.Required(o, Field::VT_TYPE); 574 return o; 575 } 576 }; 577 578 inline flatbuffers::Offset<Field> CreateField( 579 flatbuffers::FlatBufferBuilder &_fbb, 580 flatbuffers::Offset<flatbuffers::String> name = 0, 581 flatbuffers::Offset<Type> type = 0, 582 uint16_t id = 0, 583 uint16_t offset = 0, 584 int64_t default_integer = 0, 585 double default_real = 0.0, 586 bool deprecated = false, 587 bool required = false, 588 bool key = false, 589 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<KeyValue>>> attributes = 0, 590 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> documentation = 0) { 591 FieldBuilder builder_(_fbb); 592 builder_.add_default_real(default_real); 593 builder_.add_default_integer(default_integer); 594 builder_.add_documentation(documentation); 595 builder_.add_attributes(attributes); 596 builder_.add_type(type); 597 builder_.add_name(name); 598 builder_.add_offset(offset); 599 builder_.add_id(id); 600 builder_.add_key(key); 601 builder_.add_required(required); 602 builder_.add_deprecated(deprecated); 603 return builder_.Finish(); 604 } 605 606 inline flatbuffers::Offset<Field> CreateFieldDirect( 607 flatbuffers::FlatBufferBuilder &_fbb, 608 const char *name = nullptr, 609 flatbuffers::Offset<Type> type = 0, 610 uint16_t id = 0, 611 uint16_t offset = 0, 612 int64_t default_integer = 0, 613 double default_real = 0.0, 614 bool deprecated = false, 615 bool required = false, 616 bool key = false, 617 const std::vector<flatbuffers::Offset<KeyValue>> *attributes = nullptr, 618 const std::vector<flatbuffers::Offset<flatbuffers::String>> *documentation = nullptr) { 619 return reflection::CreateField( 620 _fbb, 621 name ? _fbb.CreateString(name) : 0, 622 type, 623 id, 624 offset, 625 default_integer, 626 default_real, 627 deprecated, 628 required, 629 key, 630 attributes ? _fbb.CreateVector<flatbuffers::Offset<KeyValue>>(*attributes) : 0, 631 documentation ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*documentation) : 0); 632 } 633 634 struct Object FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { 635 enum { 636 VT_NAME = 4, 637 VT_FIELDS = 6, 638 VT_IS_STRUCT = 8, 639 VT_MINALIGN = 10, 640 VT_BYTESIZE = 12, 641 VT_ATTRIBUTES = 14, 642 VT_DOCUMENTATION = 16 643 }; 644 const flatbuffers::String *name() const { 645 return GetPointer<const flatbuffers::String *>(VT_NAME); 646 } 647 bool KeyCompareLessThan(const Object *o) const { 648 return *name() < *o->name(); 649 } 650 int KeyCompareWithValue(const char *val) const { 651 return strcmp(name()->c_str(), val); 652 } 653 const flatbuffers::Vector<flatbuffers::Offset<Field>> *fields() const { 654 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Field>> *>(VT_FIELDS); 655 } 656 bool is_struct() const { 657 return GetField<uint8_t>(VT_IS_STRUCT, 0) != 0; 658 } 659 int32_t minalign() const { 660 return GetField<int32_t>(VT_MINALIGN, 0); 661 } 662 int32_t bytesize() const { 663 return GetField<int32_t>(VT_BYTESIZE, 0); 664 } 665 const flatbuffers::Vector<flatbuffers::Offset<KeyValue>> *attributes() const { 666 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<KeyValue>> *>(VT_ATTRIBUTES); 667 } 668 const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *documentation() const { 669 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>> *>(VT_DOCUMENTATION); 670 } 671 bool Verify(flatbuffers::Verifier &verifier) const { 672 return VerifyTableStart(verifier) && 673 VerifyOffsetRequired(verifier, VT_NAME) && 674 verifier.Verify(name()) && 675 VerifyOffsetRequired(verifier, VT_FIELDS) && 676 verifier.Verify(fields()) && 677 verifier.VerifyVectorOfTables(fields()) && 678 VerifyField<uint8_t>(verifier, VT_IS_STRUCT) && 679 VerifyField<int32_t>(verifier, VT_MINALIGN) && 680 VerifyField<int32_t>(verifier, VT_BYTESIZE) && 681 VerifyOffset(verifier, VT_ATTRIBUTES) && 682 verifier.Verify(attributes()) && 683 verifier.VerifyVectorOfTables(attributes()) && 684 VerifyOffset(verifier, VT_DOCUMENTATION) && 685 verifier.Verify(documentation()) && 686 verifier.VerifyVectorOfStrings(documentation()) && 687 verifier.EndTable(); 688 } 689 }; 690 691 struct ObjectBuilder { 692 flatbuffers::FlatBufferBuilder &fbb_; 693 flatbuffers::uoffset_t start_; 694 void add_name(flatbuffers::Offset<flatbuffers::String> name) { 695 fbb_.AddOffset(Object::VT_NAME, name); 696 } 697 void add_fields(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Field>>> fields) { 698 fbb_.AddOffset(Object::VT_FIELDS, fields); 699 } 700 void add_is_struct(bool is_struct) { 701 fbb_.AddElement<uint8_t>(Object::VT_IS_STRUCT, static_cast<uint8_t>(is_struct), 0); 702 } 703 void add_minalign(int32_t minalign) { 704 fbb_.AddElement<int32_t>(Object::VT_MINALIGN, minalign, 0); 705 } 706 void add_bytesize(int32_t bytesize) { 707 fbb_.AddElement<int32_t>(Object::VT_BYTESIZE, bytesize, 0); 708 } 709 void add_attributes(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<KeyValue>>> attributes) { 710 fbb_.AddOffset(Object::VT_ATTRIBUTES, attributes); 711 } 712 void add_documentation(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> documentation) { 713 fbb_.AddOffset(Object::VT_DOCUMENTATION, documentation); 714 } 715 ObjectBuilder(flatbuffers::FlatBufferBuilder &_fbb) 716 : fbb_(_fbb) { 717 start_ = fbb_.StartTable(); 718 } 719 ObjectBuilder &operator=(const ObjectBuilder &); 720 flatbuffers::Offset<Object> Finish() { 721 const auto end = fbb_.EndTable(start_); 722 auto o = flatbuffers::Offset<Object>(end); 723 fbb_.Required(o, Object::VT_NAME); 724 fbb_.Required(o, Object::VT_FIELDS); 725 return o; 726 } 727 }; 728 729 inline flatbuffers::Offset<Object> CreateObject( 730 flatbuffers::FlatBufferBuilder &_fbb, 731 flatbuffers::Offset<flatbuffers::String> name = 0, 732 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Field>>> fields = 0, 733 bool is_struct = false, 734 int32_t minalign = 0, 735 int32_t bytesize = 0, 736 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<KeyValue>>> attributes = 0, 737 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> documentation = 0) { 738 ObjectBuilder builder_(_fbb); 739 builder_.add_documentation(documentation); 740 builder_.add_attributes(attributes); 741 builder_.add_bytesize(bytesize); 742 builder_.add_minalign(minalign); 743 builder_.add_fields(fields); 744 builder_.add_name(name); 745 builder_.add_is_struct(is_struct); 746 return builder_.Finish(); 747 } 748 749 inline flatbuffers::Offset<Object> CreateObjectDirect( 750 flatbuffers::FlatBufferBuilder &_fbb, 751 const char *name = nullptr, 752 const std::vector<flatbuffers::Offset<Field>> *fields = nullptr, 753 bool is_struct = false, 754 int32_t minalign = 0, 755 int32_t bytesize = 0, 756 const std::vector<flatbuffers::Offset<KeyValue>> *attributes = nullptr, 757 const std::vector<flatbuffers::Offset<flatbuffers::String>> *documentation = nullptr) { 758 return reflection::CreateObject( 759 _fbb, 760 name ? _fbb.CreateString(name) : 0, 761 fields ? _fbb.CreateVector<flatbuffers::Offset<Field>>(*fields) : 0, 762 is_struct, 763 minalign, 764 bytesize, 765 attributes ? _fbb.CreateVector<flatbuffers::Offset<KeyValue>>(*attributes) : 0, 766 documentation ? _fbb.CreateVector<flatbuffers::Offset<flatbuffers::String>>(*documentation) : 0); 767 } 768 769 struct Schema FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { 770 enum { 771 VT_OBJECTS = 4, 772 VT_ENUMS = 6, 773 VT_FILE_IDENT = 8, 774 VT_FILE_EXT = 10, 775 VT_ROOT_TABLE = 12 776 }; 777 const flatbuffers::Vector<flatbuffers::Offset<Object>> *objects() const { 778 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Object>> *>(VT_OBJECTS); 779 } 780 const flatbuffers::Vector<flatbuffers::Offset<Enum>> *enums() const { 781 return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<Enum>> *>(VT_ENUMS); 782 } 783 const flatbuffers::String *file_ident() const { 784 return GetPointer<const flatbuffers::String *>(VT_FILE_IDENT); 785 } 786 const flatbuffers::String *file_ext() const { 787 return GetPointer<const flatbuffers::String *>(VT_FILE_EXT); 788 } 789 const Object *root_table() const { 790 return GetPointer<const Object *>(VT_ROOT_TABLE); 791 } 792 bool Verify(flatbuffers::Verifier &verifier) const { 793 return VerifyTableStart(verifier) && 794 VerifyOffsetRequired(verifier, VT_OBJECTS) && 795 verifier.Verify(objects()) && 796 verifier.VerifyVectorOfTables(objects()) && 797 VerifyOffsetRequired(verifier, VT_ENUMS) && 798 verifier.Verify(enums()) && 799 verifier.VerifyVectorOfTables(enums()) && 800 VerifyOffset(verifier, VT_FILE_IDENT) && 801 verifier.Verify(file_ident()) && 802 VerifyOffset(verifier, VT_FILE_EXT) && 803 verifier.Verify(file_ext()) && 804 VerifyOffset(verifier, VT_ROOT_TABLE) && 805 verifier.VerifyTable(root_table()) && 806 verifier.EndTable(); 807 } 808 }; 809 810 struct SchemaBuilder { 811 flatbuffers::FlatBufferBuilder &fbb_; 812 flatbuffers::uoffset_t start_; 813 void add_objects(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Object>>> objects) { 814 fbb_.AddOffset(Schema::VT_OBJECTS, objects); 815 } 816 void add_enums(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Enum>>> enums) { 817 fbb_.AddOffset(Schema::VT_ENUMS, enums); 818 } 819 void add_file_ident(flatbuffers::Offset<flatbuffers::String> file_ident) { 820 fbb_.AddOffset(Schema::VT_FILE_IDENT, file_ident); 821 } 822 void add_file_ext(flatbuffers::Offset<flatbuffers::String> file_ext) { 823 fbb_.AddOffset(Schema::VT_FILE_EXT, file_ext); 824 } 825 void add_root_table(flatbuffers::Offset<Object> root_table) { 826 fbb_.AddOffset(Schema::VT_ROOT_TABLE, root_table); 827 } 828 SchemaBuilder(flatbuffers::FlatBufferBuilder &_fbb) 829 : fbb_(_fbb) { 830 start_ = fbb_.StartTable(); 831 } 832 SchemaBuilder &operator=(const SchemaBuilder &); 833 flatbuffers::Offset<Schema> Finish() { 834 const auto end = fbb_.EndTable(start_); 835 auto o = flatbuffers::Offset<Schema>(end); 836 fbb_.Required(o, Schema::VT_OBJECTS); 837 fbb_.Required(o, Schema::VT_ENUMS); 838 return o; 839 } 840 }; 841 842 inline flatbuffers::Offset<Schema> CreateSchema( 843 flatbuffers::FlatBufferBuilder &_fbb, 844 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Object>>> objects = 0, 845 flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<Enum>>> enums = 0, 846 flatbuffers::Offset<flatbuffers::String> file_ident = 0, 847 flatbuffers::Offset<flatbuffers::String> file_ext = 0, 848 flatbuffers::Offset<Object> root_table = 0) { 849 SchemaBuilder builder_(_fbb); 850 builder_.add_root_table(root_table); 851 builder_.add_file_ext(file_ext); 852 builder_.add_file_ident(file_ident); 853 builder_.add_enums(enums); 854 builder_.add_objects(objects); 855 return builder_.Finish(); 856 } 857 858 inline flatbuffers::Offset<Schema> CreateSchemaDirect( 859 flatbuffers::FlatBufferBuilder &_fbb, 860 const std::vector<flatbuffers::Offset<Object>> *objects = nullptr, 861 const std::vector<flatbuffers::Offset<Enum>> *enums = nullptr, 862 const char *file_ident = nullptr, 863 const char *file_ext = nullptr, 864 flatbuffers::Offset<Object> root_table = 0) { 865 return reflection::CreateSchema( 866 _fbb, 867 objects ? _fbb.CreateVector<flatbuffers::Offset<Object>>(*objects) : 0, 868 enums ? _fbb.CreateVector<flatbuffers::Offset<Enum>>(*enums) : 0, 869 file_ident ? _fbb.CreateString(file_ident) : 0, 870 file_ext ? _fbb.CreateString(file_ext) : 0, 871 root_table); 872 } 873 874 inline const reflection::Schema *GetSchema(const void *buf) { 875 return flatbuffers::GetRoot<reflection::Schema>(buf); 876 } 877 878 inline const char *SchemaIdentifier() { 879 return "BFBS"; 880 } 881 882 inline bool SchemaBufferHasIdentifier(const void *buf) { 883 return flatbuffers::BufferHasIdentifier( 884 buf, SchemaIdentifier()); 885 } 886 887 inline bool VerifySchemaBuffer( 888 flatbuffers::Verifier &verifier) { 889 return verifier.VerifyBuffer<reflection::Schema>(SchemaIdentifier()); 890 } 891 892 inline const char *SchemaExtension() { 893 return "bfbs"; 894 } 895 896 inline void FinishSchemaBuffer( 897 flatbuffers::FlatBufferBuilder &fbb, 898 flatbuffers::Offset<reflection::Schema> root) { 899 fbb.Finish(root, SchemaIdentifier()); 900 } 901 902 } // namespace reflection 903 904 #endif // FLATBUFFERS_GENERATED_REFLECTION_REFLECTION_H_ 905