mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-19 17:05:44 +00:00
Improves performance for the swift library by using structs + a storage class (#5835)
This commit is contained in:
@@ -271,7 +271,7 @@ class SwiftGenerator : public BaseGenerator {
|
||||
if (parser_.file_identifier_.length()) {
|
||||
code_.SetValue("FILENAME", parser_.file_identifier_);
|
||||
code_ +=
|
||||
"\tpublic static func finish(_ fbb: FlatBufferBuilder, end: "
|
||||
"\tpublic static func finish(_ fbb: inout FlatBufferBuilder, end: "
|
||||
"Offset<UOffset>, prefix: Bool = false) { fbb.finish(offset: end, "
|
||||
"fileId: "
|
||||
"\"{{FILENAME}}\", addPrefix: prefix) }";
|
||||
@@ -316,7 +316,7 @@ class SwiftGenerator : public BaseGenerator {
|
||||
|
||||
code_.SetValue("NUMBEROFFIELDS", NumToString(struct_def.fields.vec.size()));
|
||||
code_ +=
|
||||
"\tpublic static func start{{STRUCTNAME}}(_ fbb: FlatBufferBuilder) -> "
|
||||
"\tpublic static func start{{STRUCTNAME}}(_ fbb: inout FlatBufferBuilder) -> "
|
||||
"UOffset { fbb.startTable(with: {{NUMBEROFFIELDS}}) }";
|
||||
|
||||
for (auto it = struct_def.fields.vec.begin();
|
||||
@@ -332,7 +332,7 @@ class SwiftGenerator : public BaseGenerator {
|
||||
static_cast<int>(it - struct_def.fields.vec.begin()));
|
||||
}
|
||||
code_ +=
|
||||
"\tpublic static func end{{STRUCTNAME}}(_ fbb: FlatBufferBuilder, "
|
||||
"\tpublic static func end{{STRUCTNAME}}(_ fbb: inout FlatBufferBuilder, "
|
||||
"start: "
|
||||
"UOffset) -> Offset<UOffset> { let end = Offset<UOffset>(offset: "
|
||||
"fbb.endTable(at: start))\\";
|
||||
@@ -346,16 +346,16 @@ class SwiftGenerator : public BaseGenerator {
|
||||
code_ += "; return end }";
|
||||
|
||||
code_ +=
|
||||
"\tpublic static func create{{STRUCTNAME}}(_ fbb: FlatBufferBuilder\\";
|
||||
"\tpublic static func create{{STRUCTNAME}}(_ fbb: inout FlatBufferBuilder\\";
|
||||
if (should_generate_create)
|
||||
code_ += ",\n" +
|
||||
create_func_header.substr(0, create_func_header.size() - 2) +
|
||||
"\\";
|
||||
code_ += ") -> Offset<UOffset> {";
|
||||
code_ += "\t\tlet __start = {{STRUCTNAME}}.start{{STRUCTNAME}}(fbb)";
|
||||
code_ += "\t\tlet __start = {{STRUCTNAME}}.start{{STRUCTNAME}}(&fbb)";
|
||||
if (should_generate_create)
|
||||
code_ += create_func_body.substr(0, create_func_body.size() - 1);
|
||||
code_ += "\t\treturn {{STRUCTNAME}}.end{{STRUCTNAME}}(fbb, start: __start)";
|
||||
code_ += "\t\treturn {{STRUCTNAME}}.end{{STRUCTNAME}}(&fbb, start: __start)";
|
||||
code_ += "\t}";
|
||||
|
||||
std::string spacing = "\t\t";
|
||||
@@ -367,7 +367,7 @@ class SwiftGenerator : public BaseGenerator {
|
||||
code_ +=
|
||||
"\tpublic static func "
|
||||
"sortVectorOf{{VALUENAME}}(offsets:[Offset<UOffset>], "
|
||||
"_ fbb: FlatBufferBuilder) -> Offset<UOffset> {";
|
||||
"_ fbb: inout FlatBufferBuilder) -> Offset<UOffset> {";
|
||||
code_ += spacing + "var off = offsets";
|
||||
code_ +=
|
||||
spacing +
|
||||
@@ -382,7 +382,7 @@ class SwiftGenerator : public BaseGenerator {
|
||||
|
||||
void GenTableWriterFields(const FieldDef &field, std::string *create_body,
|
||||
std::string *create_header, const int position) {
|
||||
std::string builder_string = ", _ fbb: FlatBufferBuilder) { fbb.add(";
|
||||
std::string builder_string = ", _ fbb: inout FlatBufferBuilder) { fbb.add(";
|
||||
auto &create_func_body = *create_body;
|
||||
auto &create_func_header = *create_header;
|
||||
auto name = Name(field);
|
||||
@@ -399,7 +399,7 @@ class SwiftGenerator : public BaseGenerator {
|
||||
std::string body = "add" + check_if_vector + name + ": ";
|
||||
code_ += "\tpublic static func " + body + "\\";
|
||||
|
||||
create_func_body += "\t\t{{STRUCTNAME}}." + body + name + ", fbb)\n";
|
||||
create_func_body += "\t\t{{STRUCTNAME}}." + body + name + ", &fbb)\n";
|
||||
|
||||
if (IsScalar(field.value.type.base_type) &&
|
||||
!IsBool(field.value.type.base_type)) {
|
||||
|
||||
Reference in New Issue
Block a user