mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-27 10:42:18 +00:00
Propagate use_string_pooling in CopyTable (#5879)
This allows using CopyTable for deduplicating strings.
This commit is contained in:
@@ -397,15 +397,16 @@ Offset<const Table *> CopyTable(FlatBufferBuilder &fbb,
|
|||||||
auto &subobjectdef = *schema.objects()->Get(fielddef.type()->index());
|
auto &subobjectdef = *schema.objects()->Get(fielddef.type()->index());
|
||||||
if (!subobjectdef.is_struct()) {
|
if (!subobjectdef.is_struct()) {
|
||||||
offset =
|
offset =
|
||||||
CopyTable(fbb, schema, subobjectdef, *GetFieldT(table, fielddef))
|
CopyTable(fbb, schema, subobjectdef,
|
||||||
.o;
|
*GetFieldT(table, fielddef), use_string_pooling).o;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case reflection::Union: {
|
case reflection::Union: {
|
||||||
auto &subobjectdef = GetUnionType(schema, objectdef, fielddef, table);
|
auto &subobjectdef = GetUnionType(schema, objectdef, fielddef, table);
|
||||||
offset =
|
offset =
|
||||||
CopyTable(fbb, schema, subobjectdef, *GetFieldT(table, fielddef)).o;
|
CopyTable(fbb, schema, subobjectdef, *GetFieldT(table, fielddef),
|
||||||
|
use_string_pooling).o;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case reflection::Vector: {
|
case reflection::Vector: {
|
||||||
@@ -433,7 +434,8 @@ Offset<const Table *> CopyTable(FlatBufferBuilder &fbb,
|
|||||||
std::vector<Offset<const Table *>> elements(vec->size());
|
std::vector<Offset<const Table *>> elements(vec->size());
|
||||||
for (uoffset_t i = 0; i < vec->size(); i++) {
|
for (uoffset_t i = 0; i < vec->size(); i++) {
|
||||||
elements[i] =
|
elements[i] =
|
||||||
CopyTable(fbb, schema, *elemobjectdef, *vec->Get(i));
|
CopyTable(fbb, schema, *elemobjectdef, *vec->Get(i),
|
||||||
|
use_string_pooling);
|
||||||
}
|
}
|
||||||
offset = fbb.CreateVector(elements).o;
|
offset = fbb.CreateVector(elements).o;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user