MCPcopy Create free account
hub / github.com/bytedance/Fastbot_Android / VerifyObject

Function VerifyObject

native/thirdpart/flatbuffers/reflection.cpp:628–704  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

626}
627
628bool VerifyObject(flatbuffers::Verifier &v, const reflection::Schema &schema,
629 const reflection::Object &obj,
630 const flatbuffers::Table *table, bool required) {
631 if (!table) return !required;
632 if (!table->VerifyTableStart(v)) return false;
633 for (uoffset_t i = 0; i < obj.fields()->size(); i++) {
634 auto field_def = obj.fields()->Get(i);
635 switch (field_def->type()->base_type()) {
636 case reflection::None: FLATBUFFERS_ASSERT(false); break;
637 case reflection::UType:
638 if (!table->VerifyField<uint8_t>(v, field_def->offset())) return false;
639 break;
640 case reflection::Bool:
641 case reflection::Byte:
642 case reflection::UByte:
643 if (!table->VerifyField<int8_t>(v, field_def->offset())) return false;
644 break;
645 case reflection::Short:
646 case reflection::UShort:
647 if (!table->VerifyField<int16_t>(v, field_def->offset())) return false;
648 break;
649 case reflection::Int:
650 case reflection::UInt:
651 if (!table->VerifyField<int32_t>(v, field_def->offset())) return false;
652 break;
653 case reflection::Long:
654 case reflection::ULong:
655 if (!table->VerifyField<int64_t>(v, field_def->offset())) return false;
656 break;
657 case reflection::Float:
658 if (!table->VerifyField<float>(v, field_def->offset())) return false;
659 break;
660 case reflection::Double:
661 if (!table->VerifyField<double>(v, field_def->offset())) return false;
662 break;
663 case reflection::String:
664 if (!table->VerifyField<uoffset_t>(v, field_def->offset()) ||
665 !v.VerifyString(flatbuffers::GetFieldS(*table, *field_def))) {
666 return false;
667 }
668 break;
669 case reflection::Vector:
670 if (!VerifyVector(v, schema, *table, *field_def)) return false;
671 break;
672 case reflection::Obj: {
673 auto child_obj = schema.objects()->Get(field_def->type()->index());
674 if (child_obj->is_struct()) {
675 if (!VerifyStruct(v, *table, field_def->offset(), *child_obj,
676 field_def->required())) {
677 return false;
678 }
679 } else {
680 if (!VerifyObject(v, schema, *child_obj,
681 flatbuffers::GetFieldT(*table, *field_def),
682 field_def->required())) {
683 return false;
684 }
685 }

Callers 3

VerifyUnionFunction · 0.85
VerifyVectorFunction · 0.85
VerifyFunction · 0.85

Calls 8

GetFieldSFunction · 0.85
VerifyStructFunction · 0.85
GetFieldTFunction · 0.85
VerifyUnionFunction · 0.85
VerifyTableStartMethod · 0.80
VerifyVectorFunction · 0.70
sizeMethod · 0.45
GetMethod · 0.45

Tested by

no test coverage detected