MCPcopy Create free account
hub / github.com/catboost/catboost / Deserialize

Method Deserialize

contrib/libs/flatbuffers/src/idl_parser.cpp:3994–4034  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3992}
3993
3994bool StructDef::Deserialize(Parser &parser, const reflection::Object *object) {
3995 if (!DeserializeAttributes(parser, object->attributes())) return false;
3996 DeserializeDoc(doc_comment, object->documentation());
3997 name = parser.UnqualifiedName(object->name()->str());
3998 predecl = false;
3999 sortbysize = attributes.Lookup("original_order") == nullptr && !fixed;
4000 const auto &of = *(object->fields());
4001 auto indexes = std::vector<uoffset_t>(of.size());
4002 for (uoffset_t i = 0; i < of.size(); i++) indexes[of.Get(i)->id()] = i;
4003 size_t tmp_struct_size = 0;
4004 for (size_t i = 0; i < indexes.size(); i++) {
4005 auto field = of.Get(indexes[i]);
4006 auto field_def = new FieldDef();
4007 if (!field_def->Deserialize(parser, field) ||
4008 fields.Add(field_def->name, field_def)) {
4009 delete field_def;
4010 return false;
4011 }
4012 if (field_def->key) {
4013 if (has_key) {
4014 // only one field may be set as key
4015 delete field_def;
4016 return false;
4017 }
4018 has_key = true;
4019 }
4020 if (fixed) {
4021 // Recompute padding since that's currently not serialized.
4022 auto size = InlineSize(field_def->value.type);
4023 auto next_field =
4024 i + 1 < indexes.size() ? of.Get(indexes[i + 1]) : nullptr;
4025 tmp_struct_size += size;
4026 field_def->padding =
4027 next_field ? (next_field->offset() - field_def->value.offset) - size
4028 : PaddingBytes(tmp_struct_size, minalign);
4029 tmp_struct_size += field_def->padding;
4030 }
4031 }
4032 FLATBUFFERS_ASSERT(static_cast<int>(tmp_struct_size) == object->bytesize());
4033 return true;
4034}
4035
4036Offset<reflection::Field> FieldDef::Serialize(FlatBufferBuilder *builder,
4037 uint16_t id,

Callers 1

LoadBinarySchemaMethod · 0.45

Calls 15

DeserializeDocFunction · 0.85
InlineSizeFunction · 0.85
PaddingBytesFunction · 0.85
NumToStringFunction · 0.85
SchemaIdentifierFunction · 0.85
GetSizePrefixedSchemaFunction · 0.85
DeserializeFunction · 0.85
GetNamespaceFunction · 0.85
attributesMethod · 0.80
UnqualifiedNameMethod · 0.80
idMethod · 0.80

Tested by

no test coverage detected