mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-02 12:05:50 +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());
|
||||
if (!subobjectdef.is_struct()) {
|
||||
offset =
|
||||
CopyTable(fbb, schema, subobjectdef, *GetFieldT(table, fielddef))
|
||||
.o;
|
||||
CopyTable(fbb, schema, subobjectdef,
|
||||
*GetFieldT(table, fielddef), use_string_pooling).o;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case reflection::Union: {
|
||||
auto &subobjectdef = GetUnionType(schema, objectdef, fielddef, table);
|
||||
offset =
|
||||
CopyTable(fbb, schema, subobjectdef, *GetFieldT(table, fielddef)).o;
|
||||
CopyTable(fbb, schema, subobjectdef, *GetFieldT(table, fielddef),
|
||||
use_string_pooling).o;
|
||||
break;
|
||||
}
|
||||
case reflection::Vector: {
|
||||
@@ -433,7 +434,8 @@ Offset<const Table *> CopyTable(FlatBufferBuilder &fbb,
|
||||
std::vector<Offset<const Table *>> elements(vec->size());
|
||||
for (uoffset_t i = 0; i < vec->size(); 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;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user