diff --git a/dart/test/keyword_test_keyword_test_generated.dart b/dart/test/keyword_test_keyword_test_generated.dart index 4f5d464ae0..de44add410 100644 --- a/dart/test/keyword_test_keyword_test_generated.dart +++ b/dart/test/keyword_test_keyword_test_generated.dart @@ -25,11 +25,9 @@ enum Abc { } } - static Abc? _createOrNull(int? value) => - value == null ? null : Abc.fromValue(value); - static const int minValue = 0; static const int maxValue = 2; + static const fb.Reader reader = _AbcReader(); } @@ -57,11 +55,9 @@ enum Public { } } - static Public? _createOrNull(int? value) => - value == null ? null : Public.fromValue(value); - static const int minValue = 0; static const int maxValue = 0; + static const fb.Reader reader = _PublicReader(); } @@ -93,12 +89,19 @@ enum KeywordsInUnionTypeId { } } - static KeywordsInUnionTypeId? _createOrNull(int? value) => - value == null ? null : KeywordsInUnionTypeId.fromValue(value); - static const int minValue = 0; static const int maxValue = 2; + static const fb.Reader reader = _KeywordsInUnionTypeIdReader(); + fb.Reader? get valueReader => _getKeywordsInUnionTypeIdReader(this); +} + +fb.Reader? _getKeywordsInUnionTypeIdReader(KeywordsInUnionTypeId id) { + switch (id.value) { + case 1: return KeywordsInTable.reader; + case 2: return KeywordsInTable.reader; + default: return null; + } } class _KeywordsInUnionTypeIdReader extends fb.Reader { @@ -124,8 +127,8 @@ class KeywordsInTable { final fb.BufferContext _bc; final int _bcOffset; - Abc get $is => Abc.fromValue(const fb.Int32Reader().vTableGet(_bc, _bcOffset, 4, 0)); - Public get private => Public.fromValue(const fb.Int32Reader().vTableGet(_bc, _bcOffset, 6, 0)); + Abc get $is => Abc.reader.vTableGet(_bc, _bcOffset, 4, Abc.$void); + Public get private => Public.reader.vTableGet(_bc, _bcOffset, 6, Public.NONE); int get type => const fb.Int32Reader().vTableGet(_bc, _bcOffset, 8, 0); bool get $default => const fb.BoolReader().vTableGet(_bc, _bcOffset, 10, false); @@ -261,14 +264,8 @@ class Table2 { final fb.BufferContext _bc; final int _bcOffset; - KeywordsInUnionTypeId? get typeType => KeywordsInUnionTypeId._createOrNull(const fb.Uint8Reader().vTableGetNullable(_bc, _bcOffset, 4)); - dynamic get type { - switch (typeType?.value) { - case 1: return KeywordsInTable.reader.vTableGetNullable(_bc, _bcOffset, 6); - case 2: return KeywordsInTable.reader.vTableGetNullable(_bc, _bcOffset, 6); - default: return null; - } - } + KeywordsInUnionTypeId? get typeType => KeywordsInUnionTypeId.reader.vTableGetNullable(_bc, _bcOffset, 4); + dynamic get type => typeType?.valueReader?.vTableGetNullable(_bc, _bcOffset, 6); @override String toString() { diff --git a/scripts/generate_code.py b/scripts/generate_code.py index b754ec58f6..c7748b3cda 100755 --- a/scripts/generate_code.py +++ b/scripts/generate_code.py @@ -228,6 +228,15 @@ def glob(path, pattern): ], ) +flatc( + DART_OPTS, + prefix="namespace_test", + schema=[ + "namespace_test/namespace_test1.fbs", + "namespace_test/namespace_test2.fbs", + ], +) + flatc( [ "--cpp", diff --git a/src/idl_gen_dart.cpp b/src/idl_gen_dart.cpp index 5b90708525..8831e72459 100644 --- a/src/idl_gen_dart.cpp +++ b/src/idl_gen_dart.cpp @@ -261,26 +261,55 @@ class DartGenerator : public BaseGenerator { code += " }\n"; code += " }\n\n"; - code += " static " + enum_type + "? _createOrNull(int? value) =>\n"; - code += - " value == null ? null : " + enum_type + ".fromValue(value);\n\n"; - // This is meaningless for bit_flags, however, note that unlike "regular" // dart enums this enum can still have holes. if (!is_bit_flags) { code += " static const int minValue = " + enum_def.ToString(*enum_def.MinValue()) + ";\n"; code += " static const int maxValue = " + - enum_def.ToString(*enum_def.MaxValue()) + ";\n"; + enum_def.ToString(*enum_def.MaxValue()) + ";\n\n"; } code += " static const " + _kFb + ".Reader<" + enum_type + "> reader = _" + enum_type + "Reader();\n"; + + if (enum_def.is_union) { + code += " " + _kFb + ".Reader? get valueReader => _get" + enum_type + + "Reader(this);\n"; + } code += "}\n\n"; + if (enum_def.is_union) { + GenEnumValueReader(enum_def, enum_type, code); + } GenEnumReader(enum_def, enum_type, code); } + void GenEnumValueReader(EnumDef& enum_def, const std::string& enum_type, + std::string& code) { + code += + _kFb + ".Reader? _get" + enum_type + "Reader(" + enum_type + " id) {\n"; + code += " switch (id.value) {\n"; + for (auto en_it = enum_def.Vals().begin() + 1; + en_it != enum_def.Vals().end(); ++en_it) { + const auto& ev = **en_it; + + code += " case " + enum_def.ToString(ev) + ": return "; + if (ev.union_type.struct_def) { + code += NamespaceAliasFromUnionType(enum_def.defined_namespace, + ev.union_type) + + ".reader"; + } else { + assert(0); + code += "null"; + } + code += ";\n"; + } + code += " default: return null;\n"; + code += " }\n"; + code += "}\n\n"; + } + void GenEnumReader(EnumDef& enum_def, const std::string& enum_type, std::string& code) { code += "class _" + enum_type + "Reader extends " + _kFb + ".Reader<" + @@ -358,8 +387,7 @@ class DartGenerator : public BaseGenerator { } std::string GenReaderTypeName(const Type& type, Namespace* current_namespace, - const FieldDef& def, - bool parent_is_vector = false, bool lazy = true, + const FieldDef& def, bool lazy = true, bool constConstruct = true) { std::string prefix = (constConstruct ? "const " : "") + _kFb; if (type.base_type == BASE_TYPE_BOOL) { @@ -376,15 +404,11 @@ class DartGenerator : public BaseGenerator { return prefix + ".ListReader<" + GenDartTypeName(type.VectorType(), current_namespace, def) + ">(" + GenReaderTypeName(type.VectorType(), current_namespace, def, true, - true, false) + + false) + (lazy ? ")" : ", lazy: false)"); } else if (IsString(type)) { return prefix + ".StringReader()"; - } - if (IsScalar(type.base_type)) { - if (type.enum_def && parent_is_vector) { - return GenDartTypeName(type, current_namespace, def) + ".reader"; - } + } else if (IsScalar(type.base_type) && !IsEnum(type)) { return prefix + "." + GenType(type) + "Reader()"; } else { return GenDartTypeName(type, current_namespace, def) + ".reader"; @@ -394,21 +418,23 @@ class DartGenerator : public BaseGenerator { std::string GenDartTypeName(const Type& type, Namespace* current_namespace, const FieldDef& def, std::string struct_type_suffix = "") { + if (IsVector(type)) { + return "List<" + + GenDartTypeName(type.VectorType(), current_namespace, def, + struct_type_suffix) + + ">"; + } + if (type.enum_def) { - if (type.enum_def->is_union && type.base_type != BASE_TYPE_UNION) { - return namer_.Type(*type.enum_def) + "TypeId"; - } else if (type.enum_def->is_union) { + if (type.enum_def->is_union && type.base_type == BASE_TYPE_UNION) { return "dynamic"; - } else if (type.base_type != BASE_TYPE_VECTOR) { - const std::string cur_namespace = namer_.Namespace(*current_namespace); - std::string enum_namespace = - namer_.Namespace(*type.enum_def->defined_namespace); - std::string typeName = namer_.Type(*type.enum_def); - if (enum_namespace != "" && enum_namespace != cur_namespace) { - typeName = enum_namespace + "." + typeName; - } - return typeName; } + + std::string typeName = namer_.Type(*type.enum_def); + if (type.enum_def->is_union) { + typeName += "TypeId"; + } + return MaybeWrapNamespace(typeName, current_namespace, def); } switch (type.base_type) { @@ -432,11 +458,6 @@ class DartGenerator : public BaseGenerator { return MaybeWrapNamespace( namer_.Type(*type.struct_def) + struct_type_suffix, current_namespace, def); - case BASE_TYPE_VECTOR: - return "List<" + - GenDartTypeName(type.VectorType(), current_namespace, def, - struct_type_suffix) + - ">"; default: assert(0); return "dynamic"; @@ -674,7 +695,7 @@ class DartGenerator : public BaseGenerator { const FieldDef& field = *it->second; const std::string field_name = namer_.Field(field); - const std::string defaultValue = getDefaultValue(field.value); + std::string defaultValue = getDefaultValue(field.value); const bool isNullable = defaultValue.empty() && !struct_def.fixed; const std::string type_name = GenDartTypeName(field.value.type, struct_def.defined_namespace, field, @@ -683,51 +704,42 @@ class DartGenerator : public BaseGenerator { GenDocComment(field.doc_comment, " ", code); code += " " + type_name + " get " + field_name; - if (field.value.type.base_type == BASE_TYPE_UNION) { - code += " {\n"; - code += " switch (" + field_name + "Type?.value) {\n"; - const auto& enum_def = *field.value.type.enum_def; - for (auto en_it = enum_def.Vals().begin() + 1; - en_it != enum_def.Vals().end(); ++en_it) { - const auto& ev = **en_it; - const auto enum_name = NamespaceAliasFromUnionType( - enum_def.defined_namespace, ev.union_type); - code += " case " + enum_def.ToString(ev) + ": return " + - enum_name + ".reader.vTableGetNullable(_bc, _bcOffset, " + - NumToString(field.value.offset) + ");\n"; - } - code += " default: return null;\n"; - code += " }\n"; - code += " }\n"; - } else { - code += " => "; - if (field.value.type.enum_def && - field.value.type.base_type != BASE_TYPE_VECTOR) { - code += GenDartTypeName(field.value.type, - struct_def.defined_namespace, field) + - (isNullable ? "._createOrNull(" : ".fromValue("); - } + code += " => "; + if (IsUnion(field.value.type) && !IsEnum(field.value.type)) { + code += field_name + "Type?.valueReader?"; + } else { code += GenReaderTypeName(field.value.type, struct_def.defined_namespace, field); - if (struct_def.fixed) { - code += - ".read(_bc, _bcOffset + " + NumToString(field.value.offset) + ")"; + } + + if (struct_def.fixed) { + code += + ".read(_bc, _bcOffset + " + NumToString(field.value.offset) + ")"; + } else { + code += ".vTableGet"; + std::string offset = NumToString(field.value.offset); + if (isNullable) { + code += "Nullable(_bc, _bcOffset, " + offset + ")"; } else { - code += ".vTableGet"; - std::string offset = NumToString(field.value.offset); - if (isNullable) { - code += "Nullable(_bc, _bcOffset, " + offset + ")"; - } else { - code += "(_bc, _bcOffset, " + offset + ", " + defaultValue + ")"; + if (IsEnum(field.value.type)) { + auto& enum_def = *field.value.type.enum_def; + auto val = enum_def.FindByValue(defaultValue); + if (val) { + defaultValue = + MaybeWrapNamespace(namer_.EnumVariant(enum_def, *val), + struct_def.defined_namespace, field); + } else { + defaultValue = + namer_.Type(*field.value.type.enum_def) + "._default"; + defaultValue = MaybeWrapNamespace( + defaultValue, struct_def.defined_namespace, field); + } } + code += "(_bc, _bcOffset, " + offset + ", " + defaultValue + ")"; } - if (field.value.type.enum_def && - field.value.type.base_type != BASE_TYPE_VECTOR) { - code += ")"; - } - code += ";\n"; } + code += ";\n"; } code += "\n"; diff --git a/tests/include_test2_my_game.other_name_space_generated.dart b/tests/include_test2_my_game.other_name_space_generated.dart index 365ed3ceb5..3b4fcf0acc 100644 --- a/tests/include_test2_my_game.other_name_space_generated.dart +++ b/tests/include_test2_my_game.other_name_space_generated.dart @@ -22,11 +22,9 @@ enum FromInclude { } } - static FromInclude? _createOrNull(int? value) => - value == null ? null : FromInclude.fromValue(value); - static const int minValue = 0; static const int maxValue = 0; + static const fb.Reader reader = _FromIncludeReader(); } diff --git a/tests/monster_test_my_game.example_generated.dart b/tests/monster_test_my_game.example_generated.dart index 81d6d9caa3..5d1230af97 100644 --- a/tests/monster_test_my_game.example_generated.dart +++ b/tests/monster_test_my_game.example_generated.dart @@ -31,9 +31,6 @@ enum Color { } } - static Color? _createOrNull(int? value) => - value == null ? null : Color.fromValue(value); - static const fb.Reader reader = _ColorReader(); } @@ -67,11 +64,9 @@ enum Race { } } - static Race? _createOrNull(int? value) => - value == null ? null : Race.fromValue(value); - static const int minValue = -1; static const int maxValue = 2; + static const fb.Reader reader = _RaceReader(); } @@ -105,9 +100,6 @@ enum LongEnum { } } - static LongEnum? _createOrNull(int? value) => - value == null ? null : LongEnum.fromValue(value); - static const fb.Reader reader = _LongEnumReader(); } @@ -141,12 +133,20 @@ enum AnyTypeId { } } - static AnyTypeId? _createOrNull(int? value) => - value == null ? null : AnyTypeId.fromValue(value); - static const int minValue = 0; static const int maxValue = 3; + static const fb.Reader reader = _AnyTypeIdReader(); + fb.Reader? get valueReader => _getAnyTypeIdReader(this); +} + +fb.Reader? _getAnyTypeIdReader(AnyTypeId id) { + switch (id.value) { + case 1: return Monster.reader; + case 2: return TestSimpleTableWithEnum.reader; + case 3: return my_game_example2.Monster.reader; + default: return null; + } } class _AnyTypeIdReader extends fb.Reader { @@ -179,12 +179,20 @@ enum AnyUniqueAliasesTypeId { } } - static AnyUniqueAliasesTypeId? _createOrNull(int? value) => - value == null ? null : AnyUniqueAliasesTypeId.fromValue(value); - static const int minValue = 0; static const int maxValue = 3; + static const fb.Reader reader = _AnyUniqueAliasesTypeIdReader(); + fb.Reader? get valueReader => _getAnyUniqueAliasesTypeIdReader(this); +} + +fb.Reader? _getAnyUniqueAliasesTypeIdReader(AnyUniqueAliasesTypeId id) { + switch (id.value) { + case 1: return Monster.reader; + case 2: return TestSimpleTableWithEnum.reader; + case 3: return my_game_example2.Monster.reader; + default: return null; + } } class _AnyUniqueAliasesTypeIdReader extends fb.Reader { @@ -217,12 +225,20 @@ enum AnyAmbiguousAliasesTypeId { } } - static AnyAmbiguousAliasesTypeId? _createOrNull(int? value) => - value == null ? null : AnyAmbiguousAliasesTypeId.fromValue(value); - static const int minValue = 0; static const int maxValue = 3; + static const fb.Reader reader = _AnyAmbiguousAliasesTypeIdReader(); + fb.Reader? get valueReader => _getAnyAmbiguousAliasesTypeIdReader(this); +} + +fb.Reader? _getAnyAmbiguousAliasesTypeIdReader(AnyAmbiguousAliasesTypeId id) { + switch (id.value) { + case 1: return Monster.reader; + case 2: return Monster.reader; + case 3: return Monster.reader; + default: return null; + } } class _AnyAmbiguousAliasesTypeIdReader extends fb.Reader { @@ -349,7 +365,7 @@ class TestSimpleTableWithEnum { final fb.BufferContext _bc; final int _bcOffset; - Color get color => Color.fromValue(const fb.Uint8Reader().vTableGet(_bc, _bcOffset, 4, 2)); + Color get color => Color.reader.vTableGet(_bc, _bcOffset, 4, Color.Green); @override String toString() { @@ -447,7 +463,7 @@ class Vec3 { double get y => const fb.Float32Reader().read(_bc, _bcOffset + 4); double get z => const fb.Float32Reader().read(_bc, _bcOffset + 8); double get test1 => const fb.Float64Reader().read(_bc, _bcOffset + 16); - Color get test2 => Color.fromValue(const fb.Uint8Reader().read(_bc, _bcOffset + 24)); + Color get test2 => Color.reader.read(_bc, _bcOffset + 24); Test get test3 => Test.reader.read(_bc, _bcOffset + 26); @override @@ -1120,16 +1136,9 @@ class Monster { int get hp => const fb.Int16Reader().vTableGet(_bc, _bcOffset, 8, 100); String? get name => const fb.StringReader().vTableGetNullable(_bc, _bcOffset, 10); List? get inventory => const fb.Uint8ListReader().vTableGetNullable(_bc, _bcOffset, 14); - Color get color => Color.fromValue(const fb.Uint8Reader().vTableGet(_bc, _bcOffset, 16, 8)); - AnyTypeId? get testType => AnyTypeId._createOrNull(const fb.Uint8Reader().vTableGetNullable(_bc, _bcOffset, 18)); - dynamic get test { - switch (testType?.value) { - case 1: return Monster.reader.vTableGetNullable(_bc, _bcOffset, 20); - case 2: return TestSimpleTableWithEnum.reader.vTableGetNullable(_bc, _bcOffset, 20); - case 3: return my_game_example2.Monster.reader.vTableGetNullable(_bc, _bcOffset, 20); - default: return null; - } - } + Color get color => Color.reader.vTableGet(_bc, _bcOffset, 16, Color.Blue); + AnyTypeId? get testType => AnyTypeId.reader.vTableGetNullable(_bc, _bcOffset, 18); + dynamic get test => testType?.valueReader?.vTableGetNullable(_bc, _bcOffset, 20); List? get test4 => const fb.ListReader(Test.reader).vTableGetNullable(_bc, _bcOffset, 22); List? get testarrayofstring => const fb.ListReader(fb.StringReader()).vTableGetNullable(_bc, _bcOffset, 24); /// an example documentation comment: this will end up in the generated code @@ -1166,31 +1175,17 @@ class Monster { List? get vectorOfCoOwningReferences => const fb.ListReader(fb.Uint64Reader()).vTableGetNullable(_bc, _bcOffset, 84); int get nonOwningReference => const fb.Uint64Reader().vTableGet(_bc, _bcOffset, 86, 0); List? get vectorOfNonOwningReferences => const fb.ListReader(fb.Uint64Reader()).vTableGetNullable(_bc, _bcOffset, 88); - AnyUniqueAliasesTypeId? get anyUniqueType => AnyUniqueAliasesTypeId._createOrNull(const fb.Uint8Reader().vTableGetNullable(_bc, _bcOffset, 90)); - dynamic get anyUnique { - switch (anyUniqueType?.value) { - case 1: return Monster.reader.vTableGetNullable(_bc, _bcOffset, 92); - case 2: return TestSimpleTableWithEnum.reader.vTableGetNullable(_bc, _bcOffset, 92); - case 3: return my_game_example2.Monster.reader.vTableGetNullable(_bc, _bcOffset, 92); - default: return null; - } - } - AnyAmbiguousAliasesTypeId? get anyAmbiguousType => AnyAmbiguousAliasesTypeId._createOrNull(const fb.Uint8Reader().vTableGetNullable(_bc, _bcOffset, 94)); - dynamic get anyAmbiguous { - switch (anyAmbiguousType?.value) { - case 1: return Monster.reader.vTableGetNullable(_bc, _bcOffset, 96); - case 2: return Monster.reader.vTableGetNullable(_bc, _bcOffset, 96); - case 3: return Monster.reader.vTableGetNullable(_bc, _bcOffset, 96); - default: return null; - } - } + AnyUniqueAliasesTypeId? get anyUniqueType => AnyUniqueAliasesTypeId.reader.vTableGetNullable(_bc, _bcOffset, 90); + dynamic get anyUnique => anyUniqueType?.valueReader?.vTableGetNullable(_bc, _bcOffset, 92); + AnyAmbiguousAliasesTypeId? get anyAmbiguousType => AnyAmbiguousAliasesTypeId.reader.vTableGetNullable(_bc, _bcOffset, 94); + dynamic get anyAmbiguous => anyAmbiguousType?.valueReader?.vTableGetNullable(_bc, _bcOffset, 96); List? get vectorOfEnums => const fb.ListReader(Color.reader).vTableGetNullable(_bc, _bcOffset, 98); - Race get signedEnum => Race.fromValue(const fb.Int8Reader().vTableGet(_bc, _bcOffset, 100, -1)); + Race get signedEnum => Race.reader.vTableGet(_bc, _bcOffset, 100, Race.None); List? get testrequirednestedflatbuffer => const fb.Uint8ListReader().vTableGetNullable(_bc, _bcOffset, 102); List? get scalarKeySortedTables => const fb.ListReader(Stat.reader).vTableGetNullable(_bc, _bcOffset, 104); Test? get nativeInline => Test.reader.vTableGetNullable(_bc, _bcOffset, 106); - LongEnum get longEnumNonEnumDefault => LongEnum.fromValue(const fb.Uint64Reader().vTableGet(_bc, _bcOffset, 108, 0)); - LongEnum get longEnumNormalDefault => LongEnum.fromValue(const fb.Uint64Reader().vTableGet(_bc, _bcOffset, 110, 2)); + LongEnum get longEnumNonEnumDefault => LongEnum.reader.vTableGet(_bc, _bcOffset, 108, LongEnum._default); + LongEnum get longEnumNormalDefault => LongEnum.reader.vTableGet(_bc, _bcOffset, 110, LongEnum.LongOne); double get nanDefault => const fb.Float32Reader().vTableGet(_bc, _bcOffset, 112, double.nan); double get infDefault => const fb.Float32Reader().vTableGet(_bc, _bcOffset, 114, double.infinity); double get positiveInfDefault => const fb.Float32Reader().vTableGet(_bc, _bcOffset, 116, double.infinity); diff --git a/tests/namespace_test/namespace_test1_namespace_a.namespace_b_generated.dart b/tests/namespace_test/namespace_test1_namespace_a.namespace_b_generated.dart index 8c95712ce6..7849c961b6 100644 --- a/tests/namespace_test/namespace_test1_namespace_a.namespace_b_generated.dart +++ b/tests/namespace_test/namespace_test1_namespace_a.namespace_b_generated.dart @@ -1,113 +1,95 @@ // automatically generated by the FlatBuffers compiler, do not modify -// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable +// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable, constant_identifier_names library namespace_a.namespace_b; import 'dart:typed_data' show Uint8List; - import 'package:flat_buffers/flat_buffers.dart' as fb; -class UnionInNestedNSTypeId { + + +enum UnionInNestedNsTypeId { + NONE(0), + TableInNestedNS(1); + final int value; - const UnionInNestedNSTypeId._(this.value); - - factory UnionInNestedNSTypeId.fromValue(int value) { - final result = values[value]; - if (result == null) { - throw StateError( - 'Invalid value $value for bit flag enum UnionInNestedNSTypeId', - ); + const UnionInNestedNsTypeId(this.value); + + factory UnionInNestedNsTypeId.fromValue(int value) { + switch (value) { + case 0: return UnionInNestedNsTypeId.NONE; + case 1: return UnionInNestedNsTypeId.TableInNestedNS; + default: throw StateError('Invalid value $value for bit flag enum'); } - return result; } - static UnionInNestedNSTypeId? _createOrNull(int? value) => - value == null ? null : UnionInNestedNSTypeId.fromValue(value); - static const int minValue = 0; static const int maxValue = 1; - static bool containsValue(int value) => values.containsKey(value); - - static const UnionInNestedNSTypeId NONE = UnionInNestedNSTypeId._(0); - static const UnionInNestedNSTypeId TableInNestedNS = UnionInNestedNSTypeId._( - 1, - ); - static const Map values = { - 0: NONE, - 1: TableInNestedNS, - }; - static const fb.Reader reader = - _UnionInNestedNSTypeIdReader(); + static const fb.Reader reader = _UnionInNestedNsTypeIdReader(); + fb.Reader? get valueReader => _getUnionInNestedNsTypeIdReader(this); +} - @override - String toString() { - return 'UnionInNestedNSTypeId{value: $value}'; +fb.Reader? _getUnionInNestedNsTypeIdReader(UnionInNestedNsTypeId id) { + switch (id.value) { + case 1: return TableInNestedNs.reader; + default: return null; } } -class _UnionInNestedNSTypeIdReader extends fb.Reader { - const _UnionInNestedNSTypeIdReader(); +class _UnionInNestedNsTypeIdReader extends fb.Reader { + const _UnionInNestedNsTypeIdReader(); @override int get size => 1; @override - UnionInNestedNSTypeId read(fb.BufferContext bc, int offset) => - UnionInNestedNSTypeId.fromValue(const fb.Uint8Reader().read(bc, offset)); + UnionInNestedNsTypeId read(fb.BufferContext bc, int offset) => + UnionInNestedNsTypeId.fromValue(const fb.Uint8Reader().read(bc, offset)); } -class EnumInNestedNS { - final int value; - const EnumInNestedNS._(this.value); +enum EnumInNestedNs { + A(0), + B(1), + C(2); - factory EnumInNestedNS.fromValue(int value) { - final result = values[value]; - if (result == null) { - throw StateError('Invalid value $value for bit flag enum EnumInNestedNS'); + final int value; + const EnumInNestedNs(this.value); + + factory EnumInNestedNs.fromValue(int value) { + switch (value) { + case 0: return EnumInNestedNs.A; + case 1: return EnumInNestedNs.B; + case 2: return EnumInNestedNs.C; + default: throw StateError('Invalid value $value for bit flag enum'); } - return result; } - static EnumInNestedNS? _createOrNull(int? value) => - value == null ? null : EnumInNestedNS.fromValue(value); - static const int minValue = 0; static const int maxValue = 2; - static bool containsValue(int value) => values.containsKey(value); - static const EnumInNestedNS A = EnumInNestedNS._(0); - static const EnumInNestedNS B = EnumInNestedNS._(1); - static const EnumInNestedNS C = EnumInNestedNS._(2); - static const Map values = {0: A, 1: B, 2: C}; - - static const fb.Reader reader = _EnumInNestedNSReader(); - - @override - String toString() { - return 'EnumInNestedNS{value: $value}'; - } + static const fb.Reader reader = _EnumInNestedNsReader(); } -class _EnumInNestedNSReader extends fb.Reader { - const _EnumInNestedNSReader(); +class _EnumInNestedNsReader extends fb.Reader { + const _EnumInNestedNsReader(); @override int get size => 1; @override - EnumInNestedNS read(fb.BufferContext bc, int offset) => - EnumInNestedNS.fromValue(const fb.Int8Reader().read(bc, offset)); + EnumInNestedNs read(fb.BufferContext bc, int offset) => + EnumInNestedNs.fromValue(const fb.Int8Reader().read(bc, offset)); } -class TableInNestedNS { - TableInNestedNS._(this._bc, this._bcOffset); - factory TableInNestedNS(List bytes) { +class TableInNestedNs { + TableInNestedNs._(this._bc, this._bcOffset); + factory TableInNestedNs(List bytes) { final rootRef = fb.BufferContext.fromBytes(bytes); return reader.read(rootRef, 0); } - static const fb.Reader reader = _TableInNestedNSReader(); + static const fb.Reader reader = _TableInNestedNsReader(); final fb.BufferContext _bc; final int _bcOffset; @@ -116,45 +98,20 @@ class TableInNestedNS { @override String toString() { - return 'TableInNestedNS{foo: $foo}'; - } - - TableInNestedNST unpack() => TableInNestedNST(foo: foo); - - static int pack(fb.Builder fbBuilder, TableInNestedNST? object) { - if (object == null) return 0; - return object.pack(fbBuilder); - } -} - -class TableInNestedNST implements fb.Packable { - int foo; - - TableInNestedNST({this.foo = 0}); - - @override - int pack(fb.Builder fbBuilder) { - fbBuilder.startTable(1); - fbBuilder.addInt32(0, foo); - return fbBuilder.endTable(); - } - - @override - String toString() { - return 'TableInNestedNST{foo: $foo}'; + return 'TableInNestedNs{foo: ${foo}}'; } } -class _TableInNestedNSReader extends fb.TableReader { - const _TableInNestedNSReader(); +class _TableInNestedNsReader extends fb.TableReader { + const _TableInNestedNsReader(); @override - TableInNestedNS createObject(fb.BufferContext bc, int offset) => - TableInNestedNS._(bc, offset); + TableInNestedNs createObject(fb.BufferContext bc, int offset) => + TableInNestedNs._(bc, offset); } -class TableInNestedNSBuilder { - TableInNestedNSBuilder(this.fbBuilder); +class TableInNestedNsBuilder { + TableInNestedNsBuilder(this.fbBuilder); final fb.Builder fbBuilder; @@ -172,10 +129,13 @@ class TableInNestedNSBuilder { } } -class TableInNestedNSObjectBuilder extends fb.ObjectBuilder { +class TableInNestedNsObjectBuilder extends fb.ObjectBuilder { final int? _foo; - TableInNestedNSObjectBuilder({int? foo}) : _foo = foo; + TableInNestedNsObjectBuilder({ + int? foo, + }) + : _foo = foo; /// Finish building, and store into the [fbBuilder]. @override @@ -193,11 +153,10 @@ class TableInNestedNSObjectBuilder extends fb.ObjectBuilder { return fbBuilder.buffer; } } +class StructInNestedNs { + StructInNestedNs._(this._bc, this._bcOffset); -class StructInNestedNS { - StructInNestedNS._(this._bc, this._bcOffset); - - static const fb.Reader reader = _StructInNestedNSReader(); + static const fb.Reader reader = _StructInNestedNsReader(); final fb.BufferContext _bc; final int _bcOffset; @@ -207,49 +166,23 @@ class StructInNestedNS { @override String toString() { - return 'StructInNestedNS{a: $a, b: $b}'; - } - - StructInNestedNST unpack() => StructInNestedNST(a: a, b: b); - - static int pack(fb.Builder fbBuilder, StructInNestedNST? object) { - if (object == null) return 0; - return object.pack(fbBuilder); - } -} - -class StructInNestedNST implements fb.Packable { - int a; - int b; - - StructInNestedNST({required this.a, required this.b}); - - @override - int pack(fb.Builder fbBuilder) { - fbBuilder.putInt32(b); - fbBuilder.putInt32(a); - return fbBuilder.offset; - } - - @override - String toString() { - return 'StructInNestedNST{a: $a, b: $b}'; + return 'StructInNestedNs{a: ${a}, b: ${b}}'; } } -class _StructInNestedNSReader extends fb.StructReader { - const _StructInNestedNSReader(); +class _StructInNestedNsReader extends fb.StructReader { + const _StructInNestedNsReader(); @override int get size => 8; @override - StructInNestedNS createObject(fb.BufferContext bc, int offset) => - StructInNestedNS._(bc, offset); + StructInNestedNs createObject(fb.BufferContext bc, int offset) => + StructInNestedNs._(bc, offset); } -class StructInNestedNSBuilder { - StructInNestedNSBuilder(this.fbBuilder); +class StructInNestedNsBuilder { + StructInNestedNsBuilder(this.fbBuilder); final fb.Builder fbBuilder; @@ -258,15 +191,19 @@ class StructInNestedNSBuilder { fbBuilder.putInt32(a); return fbBuilder.offset; } + } -class StructInNestedNSObjectBuilder extends fb.ObjectBuilder { +class StructInNestedNsObjectBuilder extends fb.ObjectBuilder { final int _a; final int _b; - StructInNestedNSObjectBuilder({required int a, required int b}) - : _a = a, - _b = b; + StructInNestedNsObjectBuilder({ + required int a, + required int b, + }) + : _a = a, + _b = b; /// Finish building, and store into the [fbBuilder]. @override diff --git a/tests/namespace_test/namespace_test2_namespace_a_generated.dart b/tests/namespace_test/namespace_test2_namespace_a_generated.dart index 5acb545a9b..d0c92c9718 100644 --- a/tests/namespace_test/namespace_test2_namespace_a_generated.dart +++ b/tests/namespace_test/namespace_test2_namespace_a_generated.dart @@ -1,120 +1,49 @@ // automatically generated by the FlatBuffers compiler, do not modify -// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable +// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable, constant_identifier_names library namespace_a; import 'dart:typed_data' show Uint8List; - import 'package:flat_buffers/flat_buffers.dart' as fb; import './namespace_test2_namespace_c_generated.dart' as namespace_c; -class TableInFirstNS { - TableInFirstNS._(this._bc, this._bcOffset); - factory TableInFirstNS(List bytes) { +import './namespace_test1_namespace_a.namespace_b_generated.dart' as namespace_a_namespace_b; + +class TableInFirstNs { + TableInFirstNs._(this._bc, this._bcOffset); + factory TableInFirstNs(List bytes) { final rootRef = fb.BufferContext.fromBytes(bytes); return reader.read(rootRef, 0); } - static const fb.Reader reader = _TableInFirstNSReader(); + static const fb.Reader reader = _TableInFirstNsReader(); final fb.BufferContext _bc; final int _bcOffset; - namespace_a_namespace_b.TableInNestedNS? get fooTable => - namespace_a_namespace_b.TableInNestedNS.reader.vTableGetNullable( - _bc, - _bcOffset, - 4, - ); - EnumInNestedNS get fooEnum => EnumInNestedNS.fromValue( - const fb.Int8Reader().vTableGet(_bc, _bcOffset, 6, 0), - ); - UnionInNestedNSTypeId? get fooUnionType => - UnionInNestedNSTypeId._createOrNull( - const fb.Uint8Reader().vTableGetNullable(_bc, _bcOffset, 8), - ); - dynamic get fooUnion { - switch (fooUnionType?.value) { - case 1: - return TableInNestedNS.reader.vTableGetNullable(_bc, _bcOffset, 10); - default: - return null; - } - } - - namespace_a_namespace_b.StructInNestedNS? get fooStruct => - namespace_a_namespace_b.StructInNestedNS.reader.vTableGetNullable( - _bc, - _bcOffset, - 12, - ); - - @override - String toString() { - return 'TableInFirstNS{fooTable: $fooTable, fooEnum: $fooEnum, fooUnionType: $fooUnionType, fooUnion: $fooUnion, fooStruct: $fooStruct}'; - } - - TableInFirstNST unpack() => TableInFirstNST( - fooTable: fooTable?.unpack(), - fooEnum: fooEnum, - fooUnionType: fooUnionType, - fooUnion: fooUnion, - fooStruct: fooStruct?.unpack(), - ); - - static int pack(fb.Builder fbBuilder, TableInFirstNST? object) { - if (object == null) return 0; - return object.pack(fbBuilder); - } -} - -class TableInFirstNST implements fb.Packable { - namespace_a_namespace_b.TableInNestedNST? fooTable; - EnumInNestedNS fooEnum; - UnionInNestedNSTypeId? fooUnionType; - dynamic fooUnion; - namespace_a_namespace_b.StructInNestedNST? fooStruct; - - TableInFirstNST({ - this.fooTable, - this.fooEnum = EnumInNestedNS.A, - this.fooUnionType, - this.fooUnion, - this.fooStruct, - }); - - @override - int pack(fb.Builder fbBuilder) { - final int? fooTableOffset = fooTable?.pack(fbBuilder); - final int? fooUnionOffset = fooUnion?.pack(fbBuilder); - fbBuilder.startTable(5); - fbBuilder.addOffset(0, fooTableOffset); - fbBuilder.addInt8(1, fooEnum.value); - fbBuilder.addUint8(2, fooUnionType?.value); - fbBuilder.addOffset(3, fooUnionOffset); - if (fooStruct != null) { - fbBuilder.addStruct(4, fooStruct!.pack(fbBuilder)); - } - return fbBuilder.endTable(); - } + namespace_a_namespace_b.TableInNestedNs? get fooTable => namespace_a_namespace_b.TableInNestedNs.reader.vTableGetNullable(_bc, _bcOffset, 4); + namespace_a_namespace_b.EnumInNestedNs get fooEnum => namespace_a_namespace_b.EnumInNestedNs.reader.vTableGet(_bc, _bcOffset, 6, namespace_a_namespace_b.EnumInNestedNs.A); + namespace_a_namespace_b.UnionInNestedNsTypeId? get fooUnionType => namespace_a_namespace_b.UnionInNestedNsTypeId.reader.vTableGetNullable(_bc, _bcOffset, 8); + dynamic get fooUnion => fooUnionType?.valueReader?.vTableGetNullable(_bc, _bcOffset, 10); + namespace_a_namespace_b.StructInNestedNs? get fooStruct => namespace_a_namespace_b.StructInNestedNs.reader.vTableGetNullable(_bc, _bcOffset, 12); @override String toString() { - return 'TableInFirstNST{fooTable: $fooTable, fooEnum: $fooEnum, fooUnionType: $fooUnionType, fooUnion: $fooUnion, fooStruct: $fooStruct}'; + return 'TableInFirstNs{fooTable: ${fooTable}, fooEnum: ${fooEnum}, fooUnionType: ${fooUnionType}, fooUnion: ${fooUnion}, fooStruct: ${fooStruct}}'; } } -class _TableInFirstNSReader extends fb.TableReader { - const _TableInFirstNSReader(); +class _TableInFirstNsReader extends fb.TableReader { + const _TableInFirstNsReader(); @override - TableInFirstNS createObject(fb.BufferContext bc, int offset) => - TableInFirstNS._(bc, offset); + TableInFirstNs createObject(fb.BufferContext bc, int offset) => + TableInFirstNs._(bc, offset); } -class TableInFirstNSBuilder { - TableInFirstNSBuilder(this.fbBuilder); +class TableInFirstNsBuilder { + TableInFirstNsBuilder(this.fbBuilder); final fb.Builder fbBuilder; @@ -126,22 +55,18 @@ class TableInFirstNSBuilder { fbBuilder.addOffset(0, offset); return fbBuilder.offset; } - - int addFooEnum(EnumInNestedNS? fooEnum) { + int addFooEnum(namespace_a_namespace_b.EnumInNestedNs? fooEnum) { fbBuilder.addInt8(1, fooEnum?.value); return fbBuilder.offset; } - - int addFooUnionType(UnionInNestedNSTypeId? fooUnionType) { + int addFooUnionType(namespace_a_namespace_b.UnionInNestedNsTypeId? fooUnionType) { fbBuilder.addUint8(2, fooUnionType?.value); return fbBuilder.offset; } - int addFooUnionOffset(int? offset) { fbBuilder.addOffset(3, offset); return fbBuilder.offset; } - int addFooStruct(int offset) { fbBuilder.addStruct(4, offset); return fbBuilder.offset; @@ -152,24 +77,25 @@ class TableInFirstNSBuilder { } } -class TableInFirstNSObjectBuilder extends fb.ObjectBuilder { - final namespace_a_namespace_b.TableInNestedNSObjectBuilder? _fooTable; - final EnumInNestedNS? _fooEnum; - final UnionInNestedNSTypeId? _fooUnionType; +class TableInFirstNsObjectBuilder extends fb.ObjectBuilder { + final namespace_a_namespace_b.TableInNestedNsObjectBuilder? _fooTable; + final namespace_a_namespace_b.EnumInNestedNs? _fooEnum; + final namespace_a_namespace_b.UnionInNestedNsTypeId? _fooUnionType; final dynamic _fooUnion; - final namespace_a_namespace_b.StructInNestedNSObjectBuilder? _fooStruct; + final namespace_a_namespace_b.StructInNestedNsObjectBuilder? _fooStruct; - TableInFirstNSObjectBuilder({ - namespace_a_namespace_b.TableInNestedNSObjectBuilder? fooTable, - EnumInNestedNS? fooEnum, - UnionInNestedNSTypeId? fooUnionType, + TableInFirstNsObjectBuilder({ + namespace_a_namespace_b.TableInNestedNsObjectBuilder? fooTable, + namespace_a_namespace_b.EnumInNestedNs? fooEnum, + namespace_a_namespace_b.UnionInNestedNsTypeId? fooUnionType, dynamic fooUnion, - namespace_a_namespace_b.StructInNestedNSObjectBuilder? fooStruct, - }) : _fooTable = fooTable, - _fooEnum = fooEnum, - _fooUnionType = fooUnionType, - _fooUnion = fooUnion, - _fooStruct = fooStruct; + namespace_a_namespace_b.StructInNestedNsObjectBuilder? fooStruct, + }) + : _fooTable = fooTable, + _fooEnum = fooEnum, + _fooUnionType = fooUnionType, + _fooUnion = fooUnion, + _fooStruct = fooStruct; /// Finish building, and store into the [fbBuilder]. @override @@ -195,7 +121,6 @@ class TableInFirstNSObjectBuilder extends fb.ObjectBuilder { return fbBuilder.buffer; } } - class SecondTableInA { SecondTableInA._(this._bc, this._bcOffset); factory SecondTableInA(List bytes) { @@ -208,38 +133,11 @@ class SecondTableInA { final fb.BufferContext _bc; final int _bcOffset; - namespace_c.TableInC? get referToC => - namespace_c.TableInC.reader.vTableGetNullable(_bc, _bcOffset, 4); - - @override - String toString() { - return 'SecondTableInA{referToC: $referToC}'; - } - - SecondTableInAT unpack() => SecondTableInAT(referToC: referToC?.unpack()); - - static int pack(fb.Builder fbBuilder, SecondTableInAT? object) { - if (object == null) return 0; - return object.pack(fbBuilder); - } -} - -class SecondTableInAT implements fb.Packable { - namespace_c.TableInCT? referToC; - - SecondTableInAT({this.referToC}); - - @override - int pack(fb.Builder fbBuilder) { - final int? referToCOffset = referToC?.pack(fbBuilder); - fbBuilder.startTable(1); - fbBuilder.addOffset(0, referToCOffset); - return fbBuilder.endTable(); - } + namespace_c.TableInC? get referToC => namespace_c.TableInC.reader.vTableGetNullable(_bc, _bcOffset, 4); @override String toString() { - return 'SecondTableInAT{referToC: $referToC}'; + return 'SecondTableInA{referToC: ${referToC}}'; } } @@ -247,8 +145,8 @@ class _SecondTableInAReader extends fb.TableReader { const _SecondTableInAReader(); @override - SecondTableInA createObject(fb.BufferContext bc, int offset) => - SecondTableInA._(bc, offset); + SecondTableInA createObject(fb.BufferContext bc, int offset) => + SecondTableInA._(bc, offset); } class SecondTableInABuilder { @@ -273,8 +171,10 @@ class SecondTableInABuilder { class SecondTableInAObjectBuilder extends fb.ObjectBuilder { final namespace_c.TableInCObjectBuilder? _referToC; - SecondTableInAObjectBuilder({namespace_c.TableInCObjectBuilder? referToC}) - : _referToC = referToC; + SecondTableInAObjectBuilder({ + namespace_c.TableInCObjectBuilder? referToC, + }) + : _referToC = referToC; /// Finish building, and store into the [fbBuilder]. @override diff --git a/tests/namespace_test/namespace_test2_namespace_c_generated.dart b/tests/namespace_test/namespace_test2_namespace_c_generated.dart index 32c038a5f8..836bf44730 100644 --- a/tests/namespace_test/namespace_test2_namespace_c_generated.dart +++ b/tests/namespace_test/namespace_test2_namespace_c_generated.dart @@ -1,14 +1,15 @@ // automatically generated by the FlatBuffers compiler, do not modify -// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable +// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable, constant_identifier_names library namespace_c; import 'dart:typed_data' show Uint8List; - import 'package:flat_buffers/flat_buffers.dart' as fb; import './namespace_test2_namespace_a_generated.dart' as namespace_a; +import './namespace_test1_namespace_a.namespace_b_generated.dart' as namespace_a_namespace_b; + class TableInC { TableInC._(this._bc, this._bcOffset); factory TableInC(List bytes) { @@ -21,44 +22,12 @@ class TableInC { final fb.BufferContext _bc; final int _bcOffset; - namespace_a.TableInFirstNS? get referToA1 => - namespace_a.TableInFirstNS.reader.vTableGetNullable(_bc, _bcOffset, 4); - namespace_a.SecondTableInA? get referToA2 => - namespace_a.SecondTableInA.reader.vTableGetNullable(_bc, _bcOffset, 6); - - @override - String toString() { - return 'TableInC{referToA1: $referToA1, referToA2: $referToA2}'; - } - - TableInCT unpack() => - TableInCT(referToA1: referToA1?.unpack(), referToA2: referToA2?.unpack()); - - static int pack(fb.Builder fbBuilder, TableInCT? object) { - if (object == null) return 0; - return object.pack(fbBuilder); - } -} - -class TableInCT implements fb.Packable { - namespace_a.TableInFirstNST? referToA1; - namespace_a.SecondTableInAT? referToA2; - - TableInCT({this.referToA1, this.referToA2}); - - @override - int pack(fb.Builder fbBuilder) { - final int? referToA1Offset = referToA1?.pack(fbBuilder); - final int? referToA2Offset = referToA2?.pack(fbBuilder); - fbBuilder.startTable(2); - fbBuilder.addOffset(0, referToA1Offset); - fbBuilder.addOffset(1, referToA2Offset); - return fbBuilder.endTable(); - } + namespace_a.TableInFirstNs? get referToA1 => namespace_a.TableInFirstNs.reader.vTableGetNullable(_bc, _bcOffset, 4); + namespace_a.SecondTableInA? get referToA2 => namespace_a.SecondTableInA.reader.vTableGetNullable(_bc, _bcOffset, 6); @override String toString() { - return 'TableInCT{referToA1: $referToA1, referToA2: $referToA2}'; + return 'TableInC{referToA1: ${referToA1}, referToA2: ${referToA2}}'; } } @@ -66,8 +35,8 @@ class _TableInCReader extends fb.TableReader { const _TableInCReader(); @override - TableInC createObject(fb.BufferContext bc, int offset) => - TableInC._(bc, offset); + TableInC createObject(fb.BufferContext bc, int offset) => + TableInC._(bc, offset); } class TableInCBuilder { @@ -83,7 +52,6 @@ class TableInCBuilder { fbBuilder.addOffset(0, offset); return fbBuilder.offset; } - int addReferToA2Offset(int? offset) { fbBuilder.addOffset(1, offset); return fbBuilder.offset; @@ -95,14 +63,15 @@ class TableInCBuilder { } class TableInCObjectBuilder extends fb.ObjectBuilder { - final namespace_a.TableInFirstNSObjectBuilder? _referToA1; + final namespace_a.TableInFirstNsObjectBuilder? _referToA1; final namespace_a.SecondTableInAObjectBuilder? _referToA2; TableInCObjectBuilder({ - namespace_a.TableInFirstNSObjectBuilder? referToA1, + namespace_a.TableInFirstNsObjectBuilder? referToA1, namespace_a.SecondTableInAObjectBuilder? referToA2, - }) : _referToA1 = referToA1, - _referToA2 = referToA2; + }) + : _referToA1 = referToA1, + _referToA2 = referToA2; /// Finish building, and store into the [fbBuilder]. @override