Add pointer reference to sibling union field on FieldDef (#7755)

To make it simple to map between a union field and its union type
field we are adding a pointer to FieldDef to point to each other. For
all other types the pointer will be nullptr.

Co-authored-by: Derek Bailey <derekbailey@google.com>
This commit is contained in:
Paulo Pinheiro
2023-01-05 23:21:23 +01:00
committed by GitHub
parent af9ceabeef
commit a809a2d3f7
2 changed files with 16 additions and 1 deletions

View File

@@ -297,7 +297,8 @@ struct FieldDef : public Definition {
flexbuffer(false),
presence(kDefault),
nested_flatbuffer(nullptr),
padding(0) {}
padding(0),
sibling_union_field(nullptr){}
Offset<reflection::Field> Serialize(FlatBufferBuilder *builder, uint16_t id,
const Parser &parser) const;
@@ -342,6 +343,12 @@ struct FieldDef : public Definition {
StructDef *nested_flatbuffer; // This field contains nested FlatBuffer data.
size_t padding; // Bytes to always pad after this field.
// sibling_union_field is always set to nullptr. The only exception is
// when FieldDef is a union field or an union type field. Therefore,
// sibling_union_field on a union field points to the union type field
// and vice-versa.
FieldDef *sibling_union_field;
};
struct StructDef : public Definition {