• Home
  • Raw
  • Download

Lines Matching +full:object +full:- +full:schema

8  *     http://www.apache.org/licenses/LICENSE-2.0
37 voffset_t field_offset, const reflection::Object &obj, in VerifyStruct()
50 const reflection::Object &obj, in VerifyVectorOfStructs()
60 const reflection::Schema &schema,
61 const reflection::Object &obj,
65 const reflection::Schema &schema, uint8_t utype, in VerifyUnion() argument
69 auto fb_enum = schema.enums()->Get(union_field.type()->index()); in VerifyUnion()
70 if (utype >= fb_enum->values()->size()) return false; in VerifyUnion()
71 auto elem_type = fb_enum->values()->Get(utype)->union_type(); in VerifyUnion()
72 switch (elem_type->base_type()) { in VerifyUnion()
74 auto elem_obj = schema.objects()->Get(elem_type->index()); in VerifyUnion()
75 if (elem_obj->is_struct()) { in VerifyUnion()
76 return v.VerifyFromPointer(elem, elem_obj->bytesize()); in VerifyUnion()
78 return VerifyObject(v, schema, *elem_obj, in VerifyUnion()
91 const reflection::Schema &schema, in VerifyVector() argument
94 FLATBUFFERS_ASSERT(vec_field.type()->base_type() == reflection::Vector); in VerifyVector()
98 switch (vec_field.type()->element()) { in VerifyVector()
129 auto obj = schema.objects()->Get(vec_field.type()->index()); in VerifyVector()
130 if (obj->is_struct()) { in VerifyVector()
139 for (uoffset_t j = 0; j < vec->size(); j++) { in VerifyVector()
140 if (!VerifyObject(v, schema, *obj, vec->Get(j), true)) { in VerifyVector()
152 auto type_vec = table.GetPointer<Vector<uint8_t> *>(vec_field.offset() - in VerifyVector()
155 for (uoffset_t j = 0; j < vec->size(); j++) { in VerifyVector()
157 auto utype = type_vec->Get(j); in VerifyVector()
158 auto elem = vec->Get(j); in VerifyVector()
159 if (!VerifyUnion(v, schema, utype, elem, vec_field)) return false; in VerifyVector()
170 const reflection::Schema &schema, in VerifyObject() argument
171 const reflection::Object &obj, in VerifyObject()
174 if (!table->VerifyTableStart(v)) return false; in VerifyObject()
175 for (uoffset_t i = 0; i < obj.fields()->size(); i++) { in VerifyObject()
176 auto field_def = obj.fields()->Get(i); in VerifyObject()
177 switch (field_def->type()->base_type()) { in VerifyObject()
180 if (!table->VerifyField<uint8_t>(v, field_def->offset(), in VerifyObject()
187 if (!table->VerifyField<int8_t>(v, field_def->offset(), sizeof(int8_t))) in VerifyObject()
192 if (!table->VerifyField<int16_t>(v, field_def->offset(), in VerifyObject()
198 if (!table->VerifyField<int32_t>(v, field_def->offset(), in VerifyObject()
204 if (!table->VerifyField<int64_t>(v, field_def->offset(), in VerifyObject()
209 if (!table->VerifyField<float>(v, field_def->offset(), sizeof(float))) in VerifyObject()
213 if (!table->VerifyField<double>(v, field_def->offset(), sizeof(double))) in VerifyObject()
217 if (!table->VerifyField<uoffset_t>(v, field_def->offset(), in VerifyObject()
224 if (!VerifyVector(v, schema, *table, *field_def)) return false; in VerifyObject()
227 auto child_obj = schema.objects()->Get(field_def->type()->index()); in VerifyObject()
228 if (child_obj->is_struct()) { in VerifyObject()
229 if (!VerifyStruct(v, *table, field_def->offset(), *child_obj, in VerifyObject()
230 field_def->required())) { in VerifyObject()
234 if (!VerifyObject(v, schema, *child_obj, in VerifyObject()
236 field_def->required())) { in VerifyObject()
244 voffset_t utype_offset = field_def->offset() - sizeof(voffset_t); in VerifyObject()
245 auto utype = table->GetField<uint8_t>(utype_offset, 0); in VerifyObject()
248 if (!VerifyUnion(v, schema, utype, uval, *field_def)) { return false; } in VerifyObject()
263 // clang-format off in GetAnyValueI()
281 return s ? StringToInt(s->c_str()) : 0; in GetAnyValueI()
286 // clang-format on in GetAnyValueI()
298 StringToNumber(s->c_str(), &d); in GetAnyValueF()
309 const reflection::Schema *schema, int type_index) { in GetAnyValueS() argument
316 return s ? s->c_str() : ""; in GetAnyValueS()
319 if (schema) { in GetAnyValueS()
323 auto &objectdef = *schema->objects()->Get(type_index); in GetAnyValueS()
324 auto s = objectdef.name()->str(); in GetAnyValueS()
332 for (auto it = fielddefs->begin(); it != fielddefs->end(); ++it) { in GetAnyValueS()
334 if (!table_field->CheckField(fielddef.offset())) continue; in GetAnyValueS()
335 auto val = GetAnyFieldS(*table_field, fielddef, schema); in GetAnyValueS()
336 if (fielddef.type()->base_type() == reflection::String) { in GetAnyValueS()
342 s += fielddef.name()->str(); in GetAnyValueS()
360 void ForAllFields(const reflection::Object *object, bool reverse, in ForAllFields() argument
363 field_to_id_map.resize(object->fields()->size()); in ForAllFields()
366 for (uint32_t i = 0; i < object->fields()->size(); ++i) { in ForAllFields()
367 auto field = object->fields()->Get(i); in ForAllFields()
368 field_to_id_map[field->id()] = i; in ForAllFields()
372 func(object->fields()->Get( in ForAllFields()
373 field_to_id_map[reverse ? field_to_id_map.size() - i + 1 : i])); in ForAllFields()
378 // clang-format off in SetAnyValueI()
397 // clang-format on in SetAnyValueI()
423 // Resize a FlatBuffer in-place by iterating through all offsets in the buffer
429 // If your FlatBuffer's root table is not the schema's root table, you should
433 ResizeContext(const reflection::Schema &schema, uoffset_t start, int delta, in ResizeContext() argument
435 const reflection::Object *root_table = nullptr) in ResizeContext()
436 : schema_(schema), in ResizeContext()
437 startptr_(flatbuf->data() + start), in ResizeContext()
440 dag_check_(flatbuf->size() / sizeof(uoffset_t), false) { in ResizeContext()
441 auto mask = static_cast<int>(sizeof(largest_scalar_t) - 1); in ResizeContext()
447 ResizeTable(root_table ? *root_table : *schema.root_table(), root); in ResizeContext()
473 auto dag_idx = reinterpret_cast<const uoffset_t *>(offsetloc) - in DagCheck()
478 void ResizeTable(const reflection::Object &objectdef, Table *table) { in ResizeTable()
480 auto vtable = table->GetVTable(); in ResizeTable()
488 Straddle<soffset_t, -1>(vtable, table, table); in ResizeTable()
492 for (auto it = fielddefs->begin(); it != fielddefs->end(); ++it) { in ResizeTable()
494 auto base_type = fielddef.type()->base_type(); in ResizeTable()
498 auto offset = table->GetOptionalFieldOffset(fielddef.offset()); in ResizeTable()
503 ? schema_.objects()->Get(fielddef.type()->index()) in ResizeTable()
505 if (subobjectdef && subobjectdef->is_struct()) continue; in ResizeTable()
520 auto elem_type = fielddef.type()->element(); in ResizeTable()
526 ? schema_.objects()->Get(fielddef.type()->index()) in ResizeTable()
528 if (elemobjectdef && elemobjectdef->is_struct()) break; in ResizeTable()
529 for (uoffset_t i = 0; i < vec->size(); i++) { in ResizeTable()
530 auto loc = vec->Data() + i * sizeof(uoffset_t); in ResizeTable()
532 auto dest = loc + vec->Get(i); in ResizeTable()
551 Straddle<soffset_t, -1>(table, vtable, table); in ResizeTable()
556 const reflection::Schema &schema_;
563 void SetString(const reflection::Schema &schema, const std::string &val, in SetString() argument
565 const reflection::Object *root_table) { in SetString()
566 auto delta = static_cast<int>(val.size()) - static_cast<int>(str->size()); in SetString()
568 reinterpret_cast<const uint8_t *>(str) - flatbuf->data()); in SetString()
572 memset(flatbuf->data() + start, 0, str->size()); in SetString()
574 ResizeContext ctx(schema, start, delta, flatbuf, root_table); in SetString()
576 WriteScalar(flatbuf->data() + str_start, in SetString()
580 memcpy(flatbuf->data() + start, val.c_str(), val.size() + 1); in SetString()
583 uint8_t *ResizeAnyVector(const reflection::Schema &schema, uoffset_t newsize, in ResizeAnyVector() argument
586 const reflection::Object *root_table) { in ResizeAnyVector()
587 auto delta_elem = static_cast<int>(newsize) - static_cast<int>(num_elems); in ResizeAnyVector()
589 auto vec_start = reinterpret_cast<const uint8_t *>(vec) - flatbuf->data(); in ResizeAnyVector()
597 auto size_clear = -delta_elem * elem_size; in ResizeAnyVector()
598 memset(flatbuf->data() + start - size_clear, 0, size_clear); in ResizeAnyVector()
600 ResizeContext ctx(schema, start, delta_bytes, flatbuf, root_table); in ResizeAnyVector()
601 WriteScalar(flatbuf->data() + vec_start, newsize); // Length field. in ResizeAnyVector()
604 memset(flatbuf->data() + start, 0, in ResizeAnyVector()
608 return flatbuf->data() + start; in ResizeAnyVector()
615 while ((flatbuf.size() & (sizeof(uoffset_t) - 1)) || in AddFlatBuffer()
616 !(flatbuf.size() & (sizeof(largest_scalar_t) - 1))) { in AddFlatBuffer()
622 auto root_offset = ReadScalar<uoffset_t>(newbuf) - sizeof(uoffset_t); in AddFlatBuffer()
627 const reflection::Schema &schema, in CopyTable() argument
628 const reflection::Object &objectdef, in CopyTable()
634 for (auto it = fielddefs->begin(); it != fielddefs->end(); ++it) { in CopyTable()
639 switch (fielddef.type()->base_type()) { in CopyTable()
647 auto &subobjectdef = *schema.objects()->Get(fielddef.type()->index()); in CopyTable()
649 offset = CopyTable(fbb, schema, subobjectdef, in CopyTable()
656 auto &subobjectdef = GetUnionType(schema, objectdef, fielddef, table); in CopyTable()
657 offset = CopyTable(fbb, schema, subobjectdef, in CopyTable()
665 auto element_base_type = fielddef.type()->element(); in CopyTable()
668 ? schema.objects()->Get(fielddef.type()->index()) in CopyTable()
672 std::vector<Offset<const String *>> elements(vec->size()); in CopyTable()
674 for (uoffset_t i = 0; i < vec_s->size(); i++) { in CopyTable()
676 ? fbb.CreateSharedString(vec_s->Get(i)).o in CopyTable()
677 : fbb.CreateString(vec_s->Get(i)).o; in CopyTable()
683 if (!elemobjectdef->is_struct()) { in CopyTable()
684 std::vector<Offset<const Table *>> elements(vec->size()); in CopyTable()
685 for (uoffset_t i = 0; i < vec->size(); i++) { in CopyTable()
686 elements[i] = CopyTable(fbb, schema, *elemobjectdef, in CopyTable()
687 *vec->Get(i), use_string_pooling); in CopyTable()
697 if (elemobjectdef && elemobjectdef->is_struct()) in CopyTable()
698 element_size = elemobjectdef->bytesize(); in CopyTable()
699 fbb.StartVector(vec->size(), element_size, element_alignment); in CopyTable()
700 fbb.PushBytes(vec->Data(), element_size * vec->size()); in CopyTable()
701 offset = fbb.EndVector(vec->size()); in CopyTable()
716 for (auto it = fielddefs->begin(); it != fielddefs->end(); ++it) { in CopyTable()
719 auto base_type = fielddef.type()->base_type(); in CopyTable()
722 auto &subobjectdef = *schema.objects()->Get(fielddef.type()->index()); in CopyTable()
751 bool Verify(const reflection::Schema &schema, const reflection::Object &root, in Verify() argument
755 return VerifyObject(v, schema, root, flatbuffers::GetAnyRoot(buf), in Verify()
759 bool VerifySizePrefixed(const reflection::Schema &schema, in VerifySizePrefixed() argument
760 const reflection::Object &root, in VerifySizePrefixed()
764 return VerifyObject(v, schema, root, flatbuffers::GetAnySizePrefixedRoot(buf), in VerifySizePrefixed()