Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 20 additions & 28 deletions dart/test/keyword_test_keyword_test_generated.dart
Original file line number Diff line number Diff line change
Expand Up @@ -214,30 +214,25 @@ class KeywordsInTableBuilder {
}

class KeywordsInTableObjectBuilder extends fb.ObjectBuilder {
final Abc? _$is;
final Public? _private;
final int? _type;
final bool? _$default;
final Abc? $is;
final Public? private;
final int? type;
final bool? $default;

KeywordsInTableObjectBuilder({
Abc? $is,
Public? private,
int? type,
bool? $default,
})
: _$is = $is,
_private = private,
_type = type,
_$default = $default;

this.$is,
this.private,
this.type,
this.$default,
});
/// Finish building, and store into the [fbBuilder].
@override
int finish(fb.Builder fbBuilder) {
fbBuilder.startTable(4);
fbBuilder.addInt32(0, _$is?.value);
fbBuilder.addInt32(1, _private?.value);
fbBuilder.addInt32(2, _type);
fbBuilder.addBool(3, _$default);
fbBuilder.addInt32(0, $is?.value);
fbBuilder.addInt32(1, private?.value);
fbBuilder.addInt32(2, type);
fbBuilder.addBool(3, $default);
return fbBuilder.endTable();
}

Expand Down Expand Up @@ -340,22 +335,19 @@ class Table2Builder {
}

class Table2ObjectBuilder extends fb.ObjectBuilder {
final KeywordsInUnionTypeId? _typeType;
final dynamic _type;
final KeywordsInUnionTypeId? typeType;
final dynamic type;

Table2ObjectBuilder({
KeywordsInUnionTypeId? typeType,
dynamic type,
})
: _typeType = typeType,
_type = type;

this.typeType,
this.type,
});
/// Finish building, and store into the [fbBuilder].
@override
int finish(fb.Builder fbBuilder) {
final int? typeOffset = _type?.getOrCreateOffset(fbBuilder);
final int? typeOffset = type?.getOrCreateOffset(fbBuilder);
fbBuilder.startTable(2);
fbBuilder.addUint8(0, _typeType?.value);
fbBuilder.addUint8(0, typeType?.value);
fbBuilder.addOffset(1, typeOffset);
return fbBuilder.endTable();
}
Expand Down
50 changes: 13 additions & 37 deletions src/idl_gen_dart.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -645,8 +645,8 @@ class DartGenerator : public BaseGenerator {

code += " @override\n";
code += " int pack(fb.Builder fbBuilder) {\n";
code += GenObjectBuilderImplementation(struct_def, non_deprecated_fields,
false, true);
code +=
GenObjectBuilderImplementation(struct_def, non_deprecated_fields, true);
code += " }\n";
return code;
}
Expand Down Expand Up @@ -954,7 +954,7 @@ class DartGenerator : public BaseGenerator {
code += " final " +
GenDartTypeName(field.value.type, struct_def.defined_namespace,
field, !struct_def.fixed, "ObjectBuilder") +
" _" + namer_.Variable(field) + ";\n";
" " + namer_.Variable(field) + ";\n";
}
code += "\n";
code += " " + builder_name + "(";
Expand All @@ -966,24 +966,10 @@ class DartGenerator : public BaseGenerator {
const FieldDef& field = *it->second;

code += " ";
code += (struct_def.fixed ? "required " : "") +
GenDartTypeName(field.value.type, struct_def.defined_namespace,
field, !struct_def.fixed, "ObjectBuilder") +
" " + namer_.Variable(field) + ",\n";
}
code += " })\n";
code += " : ";
for (auto it = non_deprecated_fields.begin();
it != non_deprecated_fields.end(); ++it) {
const FieldDef& field = *it->second;

code += "_" + namer_.Variable(field) + " = " + namer_.Variable(field);
if (it == non_deprecated_fields.end() - 1) {
code += ";\n\n";
} else {
code += ",\n ";
}
code += (struct_def.fixed ? "required " : "") + std::string(" this.") +
namer_.Variable(field) + ",\n";
}
code += " });\n";
} else {
code += ");\n\n";
}
Expand All @@ -1008,7 +994,7 @@ class DartGenerator : public BaseGenerator {
std::string GenObjectBuilderImplementation(
const StructDef& struct_def,
const std::vector<std::pair<int, FieldDef*>>& non_deprecated_fields,
bool prependUnderscore = true, bool pack = false) {
bool pack = false) {
std::string code;
for (auto it = non_deprecated_fields.begin();
it != non_deprecated_fields.end(); ++it) {
Expand All @@ -1018,8 +1004,7 @@ class DartGenerator : public BaseGenerator {
continue;

std::string offset_name = namer_.Variable(field) + "Offset";
std::string field_name =
(prependUnderscore ? "_" : "") + namer_.Variable(field);
std::string field_name = namer_.Variable(field);
// custom handling for fixed-sized struct in pack()
if (pack && IsVector(field.value.type) &&
field.value.type.VectorType().base_type == BASE_TYPE_STRUCT &&
Expand Down Expand Up @@ -1071,18 +1056,16 @@ class DartGenerator : public BaseGenerator {
}

if (struct_def.fixed) {
code += StructObjectBuilderBody(non_deprecated_fields, prependUnderscore,
pack);
code += StructObjectBuilderBody(non_deprecated_fields, pack);
} else {
code += TableObjectBuilderBody(struct_def, non_deprecated_fields,
prependUnderscore, pack);
code += TableObjectBuilderBody(struct_def, non_deprecated_fields, pack);
}
return code;
}

std::string StructObjectBuilderBody(
const std::vector<std::pair<int, FieldDef*>>& non_deprecated_fields,
bool prependUnderscore = true, bool pack = false) {
bool pack = false) {
std::string code;

for (auto it = non_deprecated_fields.rbegin();
Expand All @@ -1096,15 +1079,9 @@ class DartGenerator : public BaseGenerator {

if (IsStruct(field.value.type)) {
code += " ";
if (prependUnderscore) {
code += "_";
}
code += field_name + (pack ? ".pack" : ".finish") + "(fbBuilder);\n";
} else {
code += " fbBuilder.put" + GenType(field.value.type) + "(";
if (prependUnderscore) {
code += "_";
}
code += field_name;
if (field.value.type.enum_def) {
code += ".value";
Expand All @@ -1120,7 +1097,7 @@ class DartGenerator : public BaseGenerator {
std::string TableObjectBuilderBody(
const StructDef& struct_def,
const std::vector<std::pair<int, FieldDef*>>& non_deprecated_fields,
bool prependUnderscore = true, bool pack = false) {
bool pack = false) {
std::string code;
code += " fbBuilder.startTable(" +
NumToString(struct_def.fields.vec.size()) + ");\n";
Expand All @@ -1130,8 +1107,7 @@ class DartGenerator : public BaseGenerator {
const FieldDef& field = *it->second;
auto offset = it->first;

std::string field_var =
(prependUnderscore ? "_" : "") + namer_.Variable(field);
std::string field_var = namer_.Variable(field);

if (IsScalar(field.value.type.base_type)) {
code += " fbBuilder.add" + GenType(field.value.type) + "(" +
Expand Down
10 changes: 4 additions & 6 deletions tests/include_test1_generated.dart
Original file line number Diff line number Diff line change
Expand Up @@ -83,17 +83,15 @@ class TableABuilder {
}

class TableAObjectBuilder extends fb.ObjectBuilder {
final my_game_other_name_space.TableBObjectBuilder? _b;
final my_game_other_name_space.TableBObjectBuilder? b;

TableAObjectBuilder({
my_game_other_name_space.TableBObjectBuilder? b,
})
: _b = b;

this.b,
});
/// Finish building, and store into the [fbBuilder].
@override
int finish(fb.Builder fbBuilder) {
final int? bOffset = _b?.getOrCreateOffset(fbBuilder);
final int? bOffset = b?.getOrCreateOffset(fbBuilder);
fbBuilder.startTable(1);
fbBuilder.addOffset(0, bOffset);
return fbBuilder.endTable();
Expand Down
20 changes: 8 additions & 12 deletions tests/include_test2_my_game.other_name_space_generated.dart
Original file line number Diff line number Diff line change
Expand Up @@ -107,17 +107,15 @@ class UnusedBuilder {
}

class UnusedObjectBuilder extends fb.ObjectBuilder {
final int _a;
final int a;

UnusedObjectBuilder({
required int a,
})
: _a = a;

required this.a,
});
/// Finish building, and store into the [fbBuilder].
@override
int finish(fb.Builder fbBuilder) {
fbBuilder.putInt32(_a);
fbBuilder.putInt32(a);
return fbBuilder.offset;
}

Expand Down Expand Up @@ -205,17 +203,15 @@ class TableBBuilder {
}

class TableBObjectBuilder extends fb.ObjectBuilder {
final TableAObjectBuilder? _a;
final TableAObjectBuilder? a;

TableBObjectBuilder({
TableAObjectBuilder? a,
})
: _a = a;

this.a,
});
/// Finish building, and store into the [fbBuilder].
@override
int finish(fb.Builder fbBuilder) {
final int? aOffset = _a?.getOrCreateOffset(fbBuilder);
final int? aOffset = a?.getOrCreateOffset(fbBuilder);
fbBuilder.startTable(1);
fbBuilder.addOffset(0, aOffset);
return fbBuilder.endTable();
Expand Down
77 changes: 33 additions & 44 deletions tests/monster_extra_my_game_generated.dart
Original file line number Diff line number Diff line change
Expand Up @@ -168,56 +168,45 @@ class MonsterExtraBuilder {
}

class MonsterExtraObjectBuilder extends fb.ObjectBuilder {
final double? _d0;
final double? _d1;
final double? _d2;
final double? _d3;
final double? _f0;
final double? _f1;
final double? _f2;
final double? _f3;
final List<double>? _dvec;
final List<double>? _fvec;
final double? d0;
final double? d1;
final double? d2;
final double? d3;
final double? f0;
final double? f1;
final double? f2;
final double? f3;
final List<double>? dvec;
final List<double>? fvec;

MonsterExtraObjectBuilder({
double? d0,
double? d1,
double? d2,
double? d3,
double? f0,
double? f1,
double? f2,
double? f3,
List<double>? dvec,
List<double>? fvec,
})
: _d0 = d0,
_d1 = d1,
_d2 = d2,
_d3 = d3,
_f0 = f0,
_f1 = f1,
_f2 = f2,
_f3 = f3,
_dvec = dvec,
_fvec = fvec;

this.d0,
this.d1,
this.d2,
this.d3,
this.f0,
this.f1,
this.f2,
this.f3,
this.dvec,
this.fvec,
});
/// Finish building, and store into the [fbBuilder].
@override
int finish(fb.Builder fbBuilder) {
final int? dvecOffset = _dvec == null ? null
: fbBuilder.writeListFloat64(_dvec!);
final int? fvecOffset = _fvec == null ? null
: fbBuilder.writeListFloat32(_fvec!);
final int? dvecOffset = dvec == null ? null
: fbBuilder.writeListFloat64(dvec!);
final int? fvecOffset = fvec == null ? null
: fbBuilder.writeListFloat32(fvec!);
fbBuilder.startTable(11);
fbBuilder.addFloat64(0, _d0);
fbBuilder.addFloat64(1, _d1);
fbBuilder.addFloat64(2, _d2);
fbBuilder.addFloat64(3, _d3);
fbBuilder.addFloat32(4, _f0);
fbBuilder.addFloat32(5, _f1);
fbBuilder.addFloat32(6, _f2);
fbBuilder.addFloat32(7, _f3);
fbBuilder.addFloat64(0, d0);
fbBuilder.addFloat64(1, d1);
fbBuilder.addFloat64(2, d2);
fbBuilder.addFloat64(3, d3);
fbBuilder.addFloat32(4, f0);
fbBuilder.addFloat32(5, f1);
fbBuilder.addFloat32(6, f2);
fbBuilder.addFloat32(7, f3);
fbBuilder.addOffset(8, dvecOffset);
fbBuilder.addOffset(9, fvecOffset);
return fbBuilder.endTable();
Expand Down
Loading