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

Function VerifyVector

native/thirdpart/flatbuffers/reflection.cpp:551–626  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

549}
550
551bool VerifyVector(flatbuffers::Verifier &v, const reflection::Schema &schema,
552 const flatbuffers::Table &table,
553 const reflection::Field &vec_field) {
554 FLATBUFFERS_ASSERT(vec_field.type()->base_type() == reflection::Vector);
555 if (!table.VerifyField<uoffset_t>(v, vec_field.offset())) return false;
556
557 switch (vec_field.type()->element()) {
558 case reflection::UType:
559 return v.VerifyVector(flatbuffers::GetFieldV<uint8_t>(table, vec_field));
560 case reflection::Bool:
561 case reflection::Byte:
562 case reflection::UByte:
563 return v.VerifyVector(flatbuffers::GetFieldV<int8_t>(table, vec_field));
564 case reflection::Short:
565 case reflection::UShort:
566 return v.VerifyVector(flatbuffers::GetFieldV<int16_t>(table, vec_field));
567 case reflection::Int:
568 case reflection::UInt:
569 return v.VerifyVector(flatbuffers::GetFieldV<int32_t>(table, vec_field));
570 case reflection::Long:
571 case reflection::ULong:
572 return v.VerifyVector(flatbuffers::GetFieldV<int64_t>(table, vec_field));
573 case reflection::Float:
574 return v.VerifyVector(flatbuffers::GetFieldV<float>(table, vec_field));
575 case reflection::Double:
576 return v.VerifyVector(flatbuffers::GetFieldV<double>(table, vec_field));
577 case reflection::String: {
578 auto vec_string =
579 flatbuffers::GetFieldV<flatbuffers::Offset<flatbuffers::String>>(
580 table, vec_field);
581 if (v.VerifyVector(vec_string) && v.VerifyVectorOfStrings(vec_string)) {
582 return true;
583 } else {
584 return false;
585 }
586 }
587 case reflection::Obj: {
588 auto obj = schema.objects()->Get(vec_field.type()->index());
589 if (obj->is_struct()) {
590 return VerifyVectorOfStructs(v, table, vec_field.offset(), *obj,
591 vec_field.required());
592 } else {
593 auto vec =
594 flatbuffers::GetFieldV<flatbuffers::Offset<flatbuffers::Table>>(
595 table, vec_field);
596 if (!v.VerifyVector(vec)) return false;
597 if (!vec) return true;
598 for (uoffset_t j = 0; j < vec->size(); j++) {
599 if (!VerifyObject(v, schema, *obj, vec->Get(j), true)) {
600 return false;
601 }
602 }
603 return true;
604 }
605 }
606 case reflection::Union: {
607 auto vec = flatbuffers::GetFieldV<flatbuffers::Offset<uint8_t>>(
608 table, vec_field);

Callers 1

VerifyObjectFunction · 0.70

Calls 5

VerifyVectorOfStructsFunction · 0.85
VerifyObjectFunction · 0.85
VerifyUnionFunction · 0.85
GetMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected