Squashed 'third_party/flatbuffers/' changes from bc44fad35..8aa8b9139
8aa8b9139 Fix handling of +/-inf defaults in TS/rust/go/dart codegen (#7588)
001adf782 Add support for parsing proto map fields (#7613)
dbc58ab77 Fix help output for --gen-includes (#7611)
2facfeec7 Fix missing spaces in flatc help text (#7612)
4de2814c7 Fix: arduino platform build (#7625)
37b1acdaf Fix current official name of macOS (#7627)
a22434e2a Add missing #include <algorithm> for std::min/std::max uses, and #include <limits> for std::numeric_limits<> (#7624)
214cc9468 Bump Rust version to 22.10.26 before publication (#7622)
a4ff275d9 Added option to not requires an EoF token when parsing JSON (#7620)
15f32c690 python: object generation prefix and suffix (#7565)
051afd882 Add CreateSharedString to python builder (#7608)
728c033ad Add check for presence of realpath to CMakeLists.txt to support more platforms (#7603)
4c514483d Update DartTest.sh golden files (#7606)
c2d9c2080 [TS] Add support for fixed length arrays on Typescript (#5864) (#7021) (#7581)
e34ae4c6b `build.yml`: Fix missing 'v' in version
e54536127 `build.yml` Update to Kotlin Wrapper 1.0.5
49d9f941c `release.yml` Use env var for passphrase
cefc21c1f `release.yml` Add GPG key for Maven
3e64fa724 `release.yml`: Add Maven Steps
b15f3c57e `release_yml` Use new dotnet version
ff802c680 `release.yml` Use NuGet Key directly
b401957d5 `release.yml` Changed Push to follow examples
8c8151f8f `release.yml` Fix nuget push command
ebb7c203d `release.yml` Add Nuget support
203241ed3 FlatBuffers Version 22.10.26 (#7607)
ac485609c `setup.py`: Define version directly
de5b85aa6 `release.yml`: Switch to `python` directory
de3df2d88 `release.yml`: Add publishing to PyPi
043a24f2e [Python] Fixed the issue with nested unions relying on InitFromBuf. (#7576)
5a48b0d7d release.yml: Typo
ce307556f release.yml: Remove `npm ci`
cb616e27c Create release.yml (#7605)
a54ca1e75 FlatBuffers Version 22.10.25 (#7604)
5b3fadcc1 [vector] Allow to iterate with mutables (#7586)
872a49746 [Nim] Bfbs Nim Generator (#7534)
e30170296 Make type conversions explicit. (#7595)
f7b734438 Fix LongEnum definitions (#7596)
5792623df Rust fix compilation for no_std targets #2 (#7553)
0edb27528 Update Rust version (#7574)
acc6a20d3 tests/test.cpp contains a couple of tests that are only executed (#7571)
04cd037ba Fix #7580 by documenting union schema evolution rules (#7585)
e1c5db988 Turn on clippy for Rust and fix lints for non-generated code (#7575)
b80142b90 Update documentation to mention enum value attributes (#7570)
54418f371 Add support for metadata attributes for enum values (#7567) (#7568)
c92e78a9f FlatBuffers Version 22.9.29 (#7557)
d243b904c [TS] Make strict compliant and improve typings (#7549)
374f8fb5f Rust soundness fixes (#7518)
dadbff571 Moves swift package to root of repository so it can be used directly … (#7548)
76ddae006 FlatBuffers Version 22.9.24 (#7547)
cfe157ec5 Emit internal enums when swift_implementation_only (#7545)
413115858 [Python] Python fixed size array (#7529)
88046190e Upgrade grpc to 1.49.0 and make sure it builds (#7538)
72aa85a75 [C++] Rare bad buffer content alignment if sizeof(T) != alignof(T) (#7520)
bfceebb7f Fix conform (#7532)
git-subtree-dir: third_party/flatbuffers
git-subtree-split: 8aa8b9139eb330f27816a5b8b5bbef402fbe3632
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
Change-Id: I943faba499baf58e9f561b1e4734922188ba8626
diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml
index a19bf6f..2bd448d 100644
--- a/dart/pubspec.yaml
+++ b/dart/pubspec.yaml
@@ -1,5 +1,5 @@
name: flat_buffers
-version: 2.0.8
+version: 22.10.26
description: FlatBuffers reading and writing library for Dart. Based on original work by Konstantin Scheglov and Paul Berry of the Dart SDK team.
homepage: https://github.com/google/flatbuffers
documentation: https://google.github.io/flatbuffers/index.html
diff --git a/dart/test/bool_structs_generated.dart b/dart/test/bool_structs_generated.dart
new file mode 100644
index 0000000..cdd8a5e
--- /dev/null
+++ b/dart/test/bool_structs_generated.dart
@@ -0,0 +1,207 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable
+
+import 'dart:typed_data' show Uint8List;
+import 'package:flat_buffers/flat_buffers.dart' as fb;
+
+
+class Foo {
+ Foo._(this._bc, this._bcOffset);
+ factory Foo(List<int> bytes) {
+ final rootRef = fb.BufferContext.fromBytes(bytes);
+ return reader.read(rootRef, 0);
+ }
+
+ static const fb.Reader<Foo> reader = _FooReader();
+
+ final fb.BufferContext _bc;
+ final int _bcOffset;
+
+ FooProperties? get myFoo => FooProperties.reader.vTableGetNullable(_bc, _bcOffset, 4);
+
+ @override
+ String toString() {
+ return 'Foo{myFoo: ${myFoo}}';
+ }
+
+ FooT unpack() => FooT(
+ myFoo: myFoo?.unpack());
+
+ static int pack(fb.Builder fbBuilder, FooT? object) {
+ if (object == null) return 0;
+ return object.pack(fbBuilder);
+ }
+}
+
+class FooT implements fb.Packable {
+ FooPropertiesT? myFoo;
+
+ FooT({
+ this.myFoo});
+
+ @override
+ int pack(fb.Builder fbBuilder) {
+ fbBuilder.startTable(1);
+ if (myFoo != null) {
+ fbBuilder.addStruct(0, myFoo!.pack(fbBuilder));
+ }
+ return fbBuilder.endTable();
+ }
+
+ @override
+ String toString() {
+ return 'FooT{myFoo: ${myFoo}}';
+ }
+}
+
+class _FooReader extends fb.TableReader<Foo> {
+ const _FooReader();
+
+ @override
+ Foo createObject(fb.BufferContext bc, int offset) =>
+ Foo._(bc, offset);
+}
+
+class FooBuilder {
+ FooBuilder(this.fbBuilder);
+
+ final fb.Builder fbBuilder;
+
+ void begin() {
+ fbBuilder.startTable(1);
+ }
+
+ int addMyFoo(int offset) {
+ fbBuilder.addStruct(0, offset);
+ return fbBuilder.offset;
+ }
+
+ int finish() {
+ return fbBuilder.endTable();
+ }
+}
+
+class FooObjectBuilder extends fb.ObjectBuilder {
+ final FooPropertiesObjectBuilder? _myFoo;
+
+ FooObjectBuilder({
+ FooPropertiesObjectBuilder? myFoo,
+ })
+ : _myFoo = myFoo;
+
+ /// Finish building, and store into the [fbBuilder].
+ @override
+ int finish(fb.Builder fbBuilder) {
+ fbBuilder.startTable(1);
+ if (_myFoo != null) {
+ fbBuilder.addStruct(0, _myFoo!.finish(fbBuilder));
+ }
+ return fbBuilder.endTable();
+ }
+
+ /// Convenience method to serialize to byte list.
+ @override
+ Uint8List toBytes([String? fileIdentifier]) {
+ final fbBuilder = fb.Builder(deduplicateTables: false);
+ fbBuilder.finish(finish(fbBuilder), fileIdentifier);
+ return fbBuilder.buffer;
+ }
+}
+class FooProperties {
+ FooProperties._(this._bc, this._bcOffset);
+
+ static const fb.Reader<FooProperties> reader = _FooPropertiesReader();
+
+ final fb.BufferContext _bc;
+ final int _bcOffset;
+
+ bool get a => const fb.BoolReader().read(_bc, _bcOffset + 0);
+ bool get b => const fb.BoolReader().read(_bc, _bcOffset + 1);
+
+ @override
+ String toString() {
+ return 'FooProperties{a: ${a}, b: ${b}}';
+ }
+
+ FooPropertiesT unpack() => FooPropertiesT(
+ a: a,
+ b: b);
+
+ static int pack(fb.Builder fbBuilder, FooPropertiesT? object) {
+ if (object == null) return 0;
+ return object.pack(fbBuilder);
+ }
+}
+
+class FooPropertiesT implements fb.Packable {
+ bool a;
+ bool b;
+
+ FooPropertiesT({
+ required this.a,
+ required this.b});
+
+ @override
+ int pack(fb.Builder fbBuilder) {
+ fbBuilder.putBool(b);
+ fbBuilder.putBool(a);
+ return fbBuilder.offset;
+ }
+
+ @override
+ String toString() {
+ return 'FooPropertiesT{a: ${a}, b: ${b}}';
+ }
+}
+
+class _FooPropertiesReader extends fb.StructReader<FooProperties> {
+ const _FooPropertiesReader();
+
+ @override
+ int get size => 2;
+
+ @override
+ FooProperties createObject(fb.BufferContext bc, int offset) =>
+ FooProperties._(bc, offset);
+}
+
+class FooPropertiesBuilder {
+ FooPropertiesBuilder(this.fbBuilder);
+
+ final fb.Builder fbBuilder;
+
+ int finish(bool a, bool b) {
+ fbBuilder.putBool(b);
+ fbBuilder.putBool(a);
+ return fbBuilder.offset;
+ }
+
+}
+
+class FooPropertiesObjectBuilder extends fb.ObjectBuilder {
+ final bool _a;
+ final bool _b;
+
+ FooPropertiesObjectBuilder({
+ required bool a,
+ required bool b,
+ })
+ : _a = a,
+ _b = b;
+
+ /// Finish building, and store into the [fbBuilder].
+ @override
+ int finish(fb.Builder fbBuilder) {
+ fbBuilder.putBool(_b);
+ fbBuilder.putBool(_a);
+ return fbBuilder.offset;
+ }
+
+ /// Convenience method to serialize to byte list.
+ @override
+ Uint8List toBytes([String? fileIdentifier]) {
+ final fbBuilder = fb.Builder(deduplicateTables: false);
+ fbBuilder.finish(finish(fbBuilder), fileIdentifier);
+ return fbBuilder.buffer;
+ }
+}
diff --git a/dart/test/flat_buffers_test.dart b/dart/test/flat_buffers_test.dart
index 5298b17..000ccff 100644
--- a/dart/test/flat_buffers_test.dart
+++ b/dart/test/flat_buffers_test.dart
@@ -87,7 +87,10 @@
'testrequirednestedflatbuffer: null, scalarKeySortedTables: null, '
'nativeInline: null, '
'longEnumNonEnumDefault: LongEnum{value: 0}, '
- 'longEnumNormalDefault: LongEnum{value: 2}}, '
+ 'longEnumNormalDefault: LongEnum{value: 2}, nanDefault: NaN, '
+ 'infDefault: Infinity, positiveInfDefault: Infinity, infinityDefault: '
+ 'Infinity, positiveInfinityDefault: Infinity, negativeInfDefault: '
+ '-Infinity, negativeInfinityDefault: -Infinity, doubleInfDefault: Infinity}, '
'test4: [Test{a: 10, b: 20}, Test{a: 30, b: 40}], '
'testarrayofstring: [test1, test2], testarrayoftables: null, '
'enemy: Monster{pos: null, mana: 150, hp: 100, name: Fred, '
@@ -110,7 +113,10 @@
'testrequirednestedflatbuffer: null, scalarKeySortedTables: null, '
'nativeInline: null, '
'longEnumNonEnumDefault: LongEnum{value: 0}, '
- 'longEnumNormalDefault: LongEnum{value: 2}}, '
+ 'longEnumNormalDefault: LongEnum{value: 2}, nanDefault: NaN, '
+ 'infDefault: Infinity, positiveInfDefault: Infinity, infinityDefault: '
+ 'Infinity, positiveInfinityDefault: Infinity, negativeInfDefault: '
+ '-Infinity, negativeInfinityDefault: -Infinity, doubleInfDefault: Infinity}, '
'testnestedflatbuffer: null, testempty: null, testbool: true, '
'testhashs32Fnv1: -579221183, testhashu32Fnv1: 3715746113, '
'testhashs64Fnv1: 7930699090847568257, '
@@ -137,7 +143,10 @@
'miss, val: 0, count: 0}, Stat{id: hit, val: 10, count: 1}], '
'nativeInline: Test{a: 1, b: 2}, '
'longEnumNonEnumDefault: LongEnum{value: 0}, '
- 'longEnumNormalDefault: LongEnum{value: 2}}',
+ 'longEnumNormalDefault: LongEnum{value: 2}, nanDefault: NaN, '
+ 'infDefault: Infinity, positiveInfDefault: Infinity, infinityDefault: '
+ 'Infinity, positiveInfinityDefault: Infinity, negativeInfDefault: '
+ '-Infinity, negativeInfinityDefault: -Infinity, doubleInfDefault: Infinity}'
);
}
}
diff --git a/dart/test/list_of_enums_generated.dart b/dart/test/list_of_enums_generated.dart
new file mode 100644
index 0000000..eb837a5
--- /dev/null
+++ b/dart/test/list_of_enums_generated.dart
@@ -0,0 +1,155 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable
+
+import 'dart:typed_data' show Uint8List;
+import 'package:flat_buffers/flat_buffers.dart' as fb;
+
+
+class OptionsEnum {
+ final int value;
+ const OptionsEnum._(this.value);
+
+ factory OptionsEnum.fromValue(int value) {
+ final result = values[value];
+ if (result == null) {
+ throw StateError('Invalid value $value for bit flag enum OptionsEnum');
+ }
+ return result;
+ }
+
+ static OptionsEnum? _createOrNull(int? value) =>
+ value == null ? null : OptionsEnum.fromValue(value);
+
+ static const int minValue = 1;
+ static const int maxValue = 3;
+ static bool containsValue(int value) => values.containsKey(value);
+
+ static const OptionsEnum A = OptionsEnum._(1);
+ static const OptionsEnum B = OptionsEnum._(2);
+ static const OptionsEnum C = OptionsEnum._(3);
+ static const Map<int, OptionsEnum> values = {
+ 1: A,
+ 2: B,
+ 3: C};
+
+ static const fb.Reader<OptionsEnum> reader = _OptionsEnumReader();
+
+ @override
+ String toString() {
+ return 'OptionsEnum{value: $value}';
+ }
+}
+
+class _OptionsEnumReader extends fb.Reader<OptionsEnum> {
+ const _OptionsEnumReader();
+
+ @override
+ int get size => 4;
+
+ @override
+ OptionsEnum read(fb.BufferContext bc, int offset) =>
+ OptionsEnum.fromValue(const fb.Uint32Reader().read(bc, offset));
+}
+
+class MyTable {
+ MyTable._(this._bc, this._bcOffset);
+ factory MyTable(List<int> bytes) {
+ final rootRef = fb.BufferContext.fromBytes(bytes);
+ return reader.read(rootRef, 0);
+ }
+
+ static const fb.Reader<MyTable> reader = _MyTableReader();
+
+ final fb.BufferContext _bc;
+ final int _bcOffset;
+
+ List<OptionsEnum>? get options => const fb.ListReader<OptionsEnum>(OptionsEnum.reader).vTableGetNullable(_bc, _bcOffset, 4);
+
+ @override
+ String toString() {
+ return 'MyTable{options: ${options}}';
+ }
+
+ MyTableT unpack() => MyTableT(
+ options: const fb.ListReader<OptionsEnum>(OptionsEnum.reader, lazy: false).vTableGetNullable(_bc, _bcOffset, 4));
+
+ static int pack(fb.Builder fbBuilder, MyTableT? object) {
+ if (object == null) return 0;
+ return object.pack(fbBuilder);
+ }
+}
+
+class MyTableT implements fb.Packable {
+ List<OptionsEnum>? options;
+
+ MyTableT({
+ this.options});
+
+ @override
+ int pack(fb.Builder fbBuilder) {
+ final int? optionsOffset = options == null ? null
+ : fbBuilder.writeListUint32(options!.map((f) => f.value).toList());
+ fbBuilder.startTable(1);
+ fbBuilder.addOffset(0, optionsOffset);
+ return fbBuilder.endTable();
+ }
+
+ @override
+ String toString() {
+ return 'MyTableT{options: ${options}}';
+ }
+}
+
+class _MyTableReader extends fb.TableReader<MyTable> {
+ const _MyTableReader();
+
+ @override
+ MyTable createObject(fb.BufferContext bc, int offset) =>
+ MyTable._(bc, offset);
+}
+
+class MyTableBuilder {
+ MyTableBuilder(this.fbBuilder);
+
+ final fb.Builder fbBuilder;
+
+ void begin() {
+ fbBuilder.startTable(1);
+ }
+
+ int addOptionsOffset(int? offset) {
+ fbBuilder.addOffset(0, offset);
+ return fbBuilder.offset;
+ }
+
+ int finish() {
+ return fbBuilder.endTable();
+ }
+}
+
+class MyTableObjectBuilder extends fb.ObjectBuilder {
+ final List<OptionsEnum>? _options;
+
+ MyTableObjectBuilder({
+ List<OptionsEnum>? options,
+ })
+ : _options = options;
+
+ /// Finish building, and store into the [fbBuilder].
+ @override
+ int finish(fb.Builder fbBuilder) {
+ final int? optionsOffset = _options == null ? null
+ : fbBuilder.writeListUint32(_options!.map((f) => f.value).toList());
+ fbBuilder.startTable(1);
+ fbBuilder.addOffset(0, optionsOffset);
+ return fbBuilder.endTable();
+ }
+
+ /// Convenience method to serialize to byte list.
+ @override
+ Uint8List toBytes([String? fileIdentifier]) {
+ final fbBuilder = fb.Builder(deduplicateTables: false);
+ fbBuilder.finish(finish(fbBuilder), fileIdentifier);
+ return fbBuilder.buffer;
+ }
+}
diff --git a/dart/test/monster_test.fbs b/dart/test/monster_test.fbs
index fdd5acf..14d34cb 100644
--- a/dart/test/monster_test.fbs
+++ b/dart/test/monster_test.fbs
@@ -31,6 +31,14 @@
Elf,
}
+enum LongEnum:ulong (bit_flags) {
+ LongOne = 1,
+ LongTwo = 2,
+ // Because this is a bitflag, 40 will be out of range of a 32-bit integer,
+ // allowing us to exercise any logic special to big numbers.
+ LongBig = 40,
+}
+
union Any { Monster, TestSimpleTableWithEnum, MyGame.Example2.Monster }
union AnyUniqueAliases { M: Monster, TS: TestSimpleTableWithEnum, M2: MyGame.Example2.Monster }
@@ -62,6 +70,10 @@
c: Ability;
}
+struct StructOfStructsOfStructs {
+ a: StructOfStructs;
+}
+
table Stat {
id:string;
val:long;
@@ -124,6 +136,11 @@
signed_enum:Race = None (id:48);
testrequirednestedflatbuffer:[ubyte] (id:49, nested_flatbuffer: "Monster");
scalar_key_sorted_tables:[Stat] (id: 50);
+ native_inline:Test (id: 51, native_inline);
+ // The default value of this enum will be a numeric zero, which isn't a valid
+ // enum value.
+ long_enum_non_enum_default:LongEnum (id: 52);
+ long_enum_normal_default:LongEnum = LongOne (id: 53);
}
table TypeAliases {
diff --git a/dart/test/monster_test_my_game.example_generated.dart b/dart/test/monster_test_my_game.example_generated.dart
index 8db82e3..174fe1d 100644
--- a/dart/test/monster_test_my_game.example_generated.dart
+++ b/dart/test/monster_test_my_game.example_generated.dart
@@ -17,7 +17,11 @@
factory Color.fromValue(int value) {
final result = values[value];
if (result == null) {
- throw StateError('Invalid value $value for bit flag enum Color');
+ if (value == 0) {
+ return Color._(0);
+ } else {
+ throw StateError('Invalid value $value for bit flag enum Color');
+ }
}
return result;
}
@@ -66,7 +70,7 @@
factory Race.fromValue(int value) {
final result = values[value];
if (result == null) {
- throw StateError('Invalid value $value for bit flag enum Race');
+ throw StateError('Invalid value $value for bit flag enum Race');
}
return result;
}
@@ -107,6 +111,54 @@
Race.fromValue(const fb.Int8Reader().read(bc, offset));
}
+class LongEnum {
+ final int value;
+ const LongEnum._(this.value);
+
+ factory LongEnum.fromValue(int value) {
+ final result = values[value];
+ if (result == null) {
+ if (value == 0) {
+ return LongEnum._(0);
+ } else {
+ throw StateError('Invalid value $value for bit flag enum LongEnum');
+ }
+ }
+ return result;
+ }
+
+ static LongEnum? _createOrNull(int? value) =>
+ value == null ? null : LongEnum.fromValue(value);
+
+ static bool containsValue(int value) => values.containsKey(value);
+
+ static const LongEnum LongOne = LongEnum._(2);
+ static const LongEnum LongTwo = LongEnum._(4);
+ static const LongEnum LongBig = LongEnum._(1099511627776);
+ static const Map<int, LongEnum> values = {
+ 2: LongOne,
+ 4: LongTwo,
+ 1099511627776: LongBig};
+
+ static const fb.Reader<LongEnum> reader = _LongEnumReader();
+
+ @override
+ String toString() {
+ return 'LongEnum{value: $value}';
+ }
+}
+
+class _LongEnumReader extends fb.Reader<LongEnum> {
+ const _LongEnumReader();
+
+ @override
+ int get size => 8;
+
+ @override
+ LongEnum read(fb.BufferContext bc, int offset) =>
+ LongEnum.fromValue(const fb.Uint64Reader().read(bc, offset));
+}
+
class AnyTypeId {
final int value;
const AnyTypeId._(this.value);
@@ -114,7 +166,7 @@
factory AnyTypeId.fromValue(int value) {
final result = values[value];
if (result == null) {
- throw StateError('Invalid value $value for bit flag enum AnyTypeId');
+ throw StateError('Invalid value $value for bit flag enum AnyTypeId');
}
return result;
}
@@ -162,7 +214,7 @@
factory AnyUniqueAliasesTypeId.fromValue(int value) {
final result = values[value];
if (result == null) {
- throw StateError('Invalid value $value for bit flag enum AnyUniqueAliasesTypeId');
+ throw StateError('Invalid value $value for bit flag enum AnyUniqueAliasesTypeId');
}
return result;
}
@@ -210,7 +262,7 @@
factory AnyAmbiguousAliasesTypeId.fromValue(int value) {
final result = values[value];
if (result == null) {
- throw StateError('Invalid value $value for bit flag enum AnyAmbiguousAliasesTypeId');
+ throw StateError('Invalid value $value for bit flag enum AnyAmbiguousAliasesTypeId');
}
return result;
}
@@ -264,7 +316,7 @@
@override
String toString() {
- return 'Test{a: $a, b: $b}';
+ return 'Test{a: ${a}, b: ${b}}';
}
TestT unpack() => TestT(
@@ -295,7 +347,7 @@
@override
String toString() {
- return 'TestT{a: $a, b: $b}';
+ return 'TestT{a: ${a}, b: ${b}}';
}
}
@@ -368,7 +420,7 @@
@override
String toString() {
- return 'TestSimpleTableWithEnum{color: $color}';
+ return 'TestSimpleTableWithEnum{color: ${color}}';
}
TestSimpleTableWithEnumT unpack() => TestSimpleTableWithEnumT(
@@ -395,7 +447,7 @@
@override
String toString() {
- return 'TestSimpleTableWithEnumT{color: $color}';
+ return 'TestSimpleTableWithEnumT{color: ${color}}';
}
}
@@ -467,7 +519,7 @@
@override
String toString() {
- return 'Vec3{x: $x, y: $y, z: $z, test1: $test1, test2: $test2, test3: $test3}';
+ return 'Vec3{x: ${x}, y: ${y}, z: ${z}, test1: ${test1}, test2: ${test2}, test3: ${test3}}';
}
Vec3T unpack() => Vec3T(
@@ -516,7 +568,7 @@
@override
String toString() {
- return 'Vec3T{x: $x, y: $y, z: $z, test1: $test1, test2: $test2, test3: $test3}';
+ return 'Vec3T{x: ${x}, y: ${y}, z: ${z}, test1: ${test1}, test2: ${test2}, test3: ${test3}}';
}
}
@@ -610,7 +662,7 @@
@override
String toString() {
- return 'Ability{id: $id, distance: $distance}';
+ return 'Ability{id: ${id}, distance: ${distance}}';
}
AbilityT unpack() => AbilityT(
@@ -640,7 +692,7 @@
@override
String toString() {
- return 'AbilityT{id: $id, distance: $distance}';
+ return 'AbilityT{id: ${id}, distance: ${distance}}';
}
}
@@ -709,7 +761,7 @@
@override
String toString() {
- return 'StructOfStructs{a: $a, b: $b, c: $c}';
+ return 'StructOfStructs{a: ${a}, b: ${b}, c: ${c}}';
}
StructOfStructsT unpack() => StructOfStructsT(
@@ -743,7 +795,7 @@
@override
String toString() {
- return 'StructOfStructsT{a: $a, b: $b, c: $c}';
+ return 'StructOfStructsT{a: ${a}, b: ${b}, c: ${c}}';
}
}
@@ -803,6 +855,94 @@
return fbBuilder.buffer;
}
}
+class StructOfStructsOfStructs {
+ StructOfStructsOfStructs._(this._bc, this._bcOffset);
+
+ static const fb.Reader<StructOfStructsOfStructs> reader = _StructOfStructsOfStructsReader();
+
+ final fb.BufferContext _bc;
+ final int _bcOffset;
+
+ StructOfStructs get a => StructOfStructs.reader.read(_bc, _bcOffset + 0);
+
+ @override
+ String toString() {
+ return 'StructOfStructsOfStructs{a: ${a}}';
+ }
+
+ StructOfStructsOfStructsT unpack() => StructOfStructsOfStructsT(
+ a: a.unpack());
+
+ static int pack(fb.Builder fbBuilder, StructOfStructsOfStructsT? object) {
+ if (object == null) return 0;
+ return object.pack(fbBuilder);
+ }
+}
+
+class StructOfStructsOfStructsT implements fb.Packable {
+ StructOfStructsT a;
+
+ StructOfStructsOfStructsT({
+ required this.a});
+
+ @override
+ int pack(fb.Builder fbBuilder) {
+ a.pack(fbBuilder);
+ return fbBuilder.offset;
+ }
+
+ @override
+ String toString() {
+ return 'StructOfStructsOfStructsT{a: ${a}}';
+ }
+}
+
+class _StructOfStructsOfStructsReader extends fb.StructReader<StructOfStructsOfStructs> {
+ const _StructOfStructsOfStructsReader();
+
+ @override
+ int get size => 20;
+
+ @override
+ StructOfStructsOfStructs createObject(fb.BufferContext bc, int offset) =>
+ StructOfStructsOfStructs._(bc, offset);
+}
+
+class StructOfStructsOfStructsBuilder {
+ StructOfStructsOfStructsBuilder(this.fbBuilder);
+
+ final fb.Builder fbBuilder;
+
+ int finish(fb.StructBuilder a) {
+ a();
+ return fbBuilder.offset;
+ }
+
+}
+
+class StructOfStructsOfStructsObjectBuilder extends fb.ObjectBuilder {
+ final StructOfStructsObjectBuilder _a;
+
+ StructOfStructsOfStructsObjectBuilder({
+ required StructOfStructsObjectBuilder a,
+ })
+ : _a = a;
+
+ /// Finish building, and store into the [fbBuilder].
+ @override
+ int finish(fb.Builder fbBuilder) {
+ _a.finish(fbBuilder);
+ return fbBuilder.offset;
+ }
+
+ /// Convenience method to serialize to byte list.
+ @override
+ Uint8List toBytes([String? fileIdentifier]) {
+ final fbBuilder = fb.Builder(deduplicateTables: false);
+ fbBuilder.finish(finish(fbBuilder), fileIdentifier);
+ return fbBuilder.buffer;
+ }
+}
class Stat {
Stat._(this._bc, this._bcOffset);
factory Stat(List<int> bytes) {
@@ -821,7 +961,7 @@
@override
String toString() {
- return 'Stat{id: $id, val: $val, count: $count}';
+ return 'Stat{id: ${id}, val: ${val}, count: ${count}}';
}
StatT unpack() => StatT(
@@ -858,7 +998,7 @@
@override
String toString() {
- return 'StatT{id: $id, val: $val, count: $count}';
+ return 'StatT{id: ${id}, val: ${val}, count: ${count}}';
}
}
@@ -947,7 +1087,7 @@
@override
String toString() {
- return 'Referrable{id: $id}';
+ return 'Referrable{id: ${id}}';
}
ReferrableT unpack() => ReferrableT(
@@ -974,7 +1114,7 @@
@override
String toString() {
- return 'ReferrableT{id: $id}';
+ return 'ReferrableT{id: ${id}}';
}
}
@@ -1115,10 +1255,13 @@
Race get signedEnum => Race.fromValue(const fb.Int8Reader().vTableGet(_bc, _bcOffset, 100, -1));
List<int>? get testrequirednestedflatbuffer => const fb.Uint8ListReader().vTableGetNullable(_bc, _bcOffset, 102);
List<Stat>? get scalarKeySortedTables => const fb.ListReader<Stat>(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));
@override
String toString() {
- return 'Monster{pos: $pos, mana: $mana, hp: $hp, name: $name, inventory: $inventory, color: $color, testType: $testType, test: $test, test4: $test4, testarrayofstring: $testarrayofstring, testarrayoftables: $testarrayoftables, enemy: $enemy, testnestedflatbuffer: $testnestedflatbuffer, testempty: $testempty, testbool: $testbool, testhashs32Fnv1: $testhashs32Fnv1, testhashu32Fnv1: $testhashu32Fnv1, testhashs64Fnv1: $testhashs64Fnv1, testhashu64Fnv1: $testhashu64Fnv1, testhashs32Fnv1a: $testhashs32Fnv1a, testhashu32Fnv1a: $testhashu32Fnv1a, testhashs64Fnv1a: $testhashs64Fnv1a, testhashu64Fnv1a: $testhashu64Fnv1a, testarrayofbools: $testarrayofbools, testf: $testf, testf2: $testf2, testf3: $testf3, testarrayofstring2: $testarrayofstring2, testarrayofsortedstruct: $testarrayofsortedstruct, flex: $flex, test5: $test5, vectorOfLongs: $vectorOfLongs, vectorOfDoubles: $vectorOfDoubles, parentNamespaceTest: $parentNamespaceTest, vectorOfReferrables: $vectorOfReferrables, singleWeakReference: $singleWeakReference, vectorOfWeakReferences: $vectorOfWeakReferences, vectorOfStrongReferrables: $vectorOfStrongReferrables, coOwningReference: $coOwningReference, vectorOfCoOwningReferences: $vectorOfCoOwningReferences, nonOwningReference: $nonOwningReference, vectorOfNonOwningReferences: $vectorOfNonOwningReferences, anyUniqueType: $anyUniqueType, anyUnique: $anyUnique, anyAmbiguousType: $anyAmbiguousType, anyAmbiguous: $anyAmbiguous, vectorOfEnums: $vectorOfEnums, signedEnum: $signedEnum, testrequirednestedflatbuffer: $testrequirednestedflatbuffer, scalarKeySortedTables: $scalarKeySortedTables}';
+ return 'Monster{pos: ${pos}, mana: ${mana}, hp: ${hp}, name: ${name}, inventory: ${inventory}, color: ${color}, testType: ${testType}, test: ${test}, test4: ${test4}, testarrayofstring: ${testarrayofstring}, testarrayoftables: ${testarrayoftables}, enemy: ${enemy}, testnestedflatbuffer: ${testnestedflatbuffer}, testempty: ${testempty}, testbool: ${testbool}, testhashs32Fnv1: ${testhashs32Fnv1}, testhashu32Fnv1: ${testhashu32Fnv1}, testhashs64Fnv1: ${testhashs64Fnv1}, testhashu64Fnv1: ${testhashu64Fnv1}, testhashs32Fnv1a: ${testhashs32Fnv1a}, testhashu32Fnv1a: ${testhashu32Fnv1a}, testhashs64Fnv1a: ${testhashs64Fnv1a}, testhashu64Fnv1a: ${testhashu64Fnv1a}, testarrayofbools: ${testarrayofbools}, testf: ${testf}, testf2: ${testf2}, testf3: ${testf3}, testarrayofstring2: ${testarrayofstring2}, testarrayofsortedstruct: ${testarrayofsortedstruct}, flex: ${flex}, test5: ${test5}, vectorOfLongs: ${vectorOfLongs}, vectorOfDoubles: ${vectorOfDoubles}, parentNamespaceTest: ${parentNamespaceTest}, vectorOfReferrables: ${vectorOfReferrables}, singleWeakReference: ${singleWeakReference}, vectorOfWeakReferences: ${vectorOfWeakReferences}, vectorOfStrongReferrables: ${vectorOfStrongReferrables}, coOwningReference: ${coOwningReference}, vectorOfCoOwningReferences: ${vectorOfCoOwningReferences}, nonOwningReference: ${nonOwningReference}, vectorOfNonOwningReferences: ${vectorOfNonOwningReferences}, anyUniqueType: ${anyUniqueType}, anyUnique: ${anyUnique}, anyAmbiguousType: ${anyAmbiguousType}, anyAmbiguous: ${anyAmbiguous}, vectorOfEnums: ${vectorOfEnums}, signedEnum: ${signedEnum}, testrequirednestedflatbuffer: ${testrequirednestedflatbuffer}, scalarKeySortedTables: ${scalarKeySortedTables}, nativeInline: ${nativeInline}, longEnumNonEnumDefault: ${longEnumNonEnumDefault}, longEnumNormalDefault: ${longEnumNormalDefault}}';
}
MonsterT unpack() => MonsterT(
@@ -1171,7 +1314,10 @@
vectorOfEnums: const fb.ListReader<Color>(Color.reader, lazy: false).vTableGetNullable(_bc, _bcOffset, 98),
signedEnum: signedEnum,
testrequirednestedflatbuffer: const fb.Uint8ListReader(lazy: false).vTableGetNullable(_bc, _bcOffset, 102),
- scalarKeySortedTables: scalarKeySortedTables?.map((e) => e.unpack()).toList());
+ scalarKeySortedTables: scalarKeySortedTables?.map((e) => e.unpack()).toList(),
+ nativeInline: nativeInline?.unpack(),
+ longEnumNonEnumDefault: longEnumNonEnumDefault,
+ longEnumNormalDefault: longEnumNormalDefault);
static int pack(fb.Builder fbBuilder, MonsterT? object) {
if (object == null) return 0;
@@ -1233,6 +1379,9 @@
Race signedEnum;
List<int>? testrequirednestedflatbuffer;
List<StatT>? scalarKeySortedTables;
+ TestT? nativeInline;
+ LongEnum longEnumNonEnumDefault;
+ LongEnum longEnumNormalDefault;
MonsterT({
this.pos,
@@ -1284,7 +1433,10 @@
this.vectorOfEnums,
this.signedEnum = Race.None,
this.testrequirednestedflatbuffer,
- this.scalarKeySortedTables});
+ this.scalarKeySortedTables,
+ this.nativeInline,
+ this.longEnumNonEnumDefault = const LongEnum._(0),
+ this.longEnumNormalDefault = LongEnum.LongOne});
@override
int pack(fb.Builder fbBuilder) {
@@ -1345,7 +1497,7 @@
: fbBuilder.writeListUint8(testrequirednestedflatbuffer!);
final int? scalarKeySortedTablesOffset = scalarKeySortedTables == null ? null
: fbBuilder.writeList(scalarKeySortedTables!.map((b) => b.pack(fbBuilder)).toList());
- fbBuilder.startTable(50);
+ fbBuilder.startTable(54);
if (pos != null) {
fbBuilder.addStruct(0, pos!.pack(fbBuilder));
}
@@ -1398,12 +1550,17 @@
fbBuilder.addInt8(48, signedEnum.value);
fbBuilder.addOffset(49, testrequirednestedflatbufferOffset);
fbBuilder.addOffset(50, scalarKeySortedTablesOffset);
+ if (nativeInline != null) {
+ fbBuilder.addStruct(51, nativeInline!.pack(fbBuilder));
+ }
+ fbBuilder.addUint64(52, longEnumNonEnumDefault.value);
+ fbBuilder.addUint64(53, longEnumNormalDefault.value);
return fbBuilder.endTable();
}
@override
String toString() {
- return 'MonsterT{pos: $pos, mana: $mana, hp: $hp, name: $name, inventory: $inventory, color: $color, testType: $testType, test: $test, test4: $test4, testarrayofstring: $testarrayofstring, testarrayoftables: $testarrayoftables, enemy: $enemy, testnestedflatbuffer: $testnestedflatbuffer, testempty: $testempty, testbool: $testbool, testhashs32Fnv1: $testhashs32Fnv1, testhashu32Fnv1: $testhashu32Fnv1, testhashs64Fnv1: $testhashs64Fnv1, testhashu64Fnv1: $testhashu64Fnv1, testhashs32Fnv1a: $testhashs32Fnv1a, testhashu32Fnv1a: $testhashu32Fnv1a, testhashs64Fnv1a: $testhashs64Fnv1a, testhashu64Fnv1a: $testhashu64Fnv1a, testarrayofbools: $testarrayofbools, testf: $testf, testf2: $testf2, testf3: $testf3, testarrayofstring2: $testarrayofstring2, testarrayofsortedstruct: $testarrayofsortedstruct, flex: $flex, test5: $test5, vectorOfLongs: $vectorOfLongs, vectorOfDoubles: $vectorOfDoubles, parentNamespaceTest: $parentNamespaceTest, vectorOfReferrables: $vectorOfReferrables, singleWeakReference: $singleWeakReference, vectorOfWeakReferences: $vectorOfWeakReferences, vectorOfStrongReferrables: $vectorOfStrongReferrables, coOwningReference: $coOwningReference, vectorOfCoOwningReferences: $vectorOfCoOwningReferences, nonOwningReference: $nonOwningReference, vectorOfNonOwningReferences: $vectorOfNonOwningReferences, anyUniqueType: $anyUniqueType, anyUnique: $anyUnique, anyAmbiguousType: $anyAmbiguousType, anyAmbiguous: $anyAmbiguous, vectorOfEnums: $vectorOfEnums, signedEnum: $signedEnum, testrequirednestedflatbuffer: $testrequirednestedflatbuffer, scalarKeySortedTables: $scalarKeySortedTables}';
+ return 'MonsterT{pos: ${pos}, mana: ${mana}, hp: ${hp}, name: ${name}, inventory: ${inventory}, color: ${color}, testType: ${testType}, test: ${test}, test4: ${test4}, testarrayofstring: ${testarrayofstring}, testarrayoftables: ${testarrayoftables}, enemy: ${enemy}, testnestedflatbuffer: ${testnestedflatbuffer}, testempty: ${testempty}, testbool: ${testbool}, testhashs32Fnv1: ${testhashs32Fnv1}, testhashu32Fnv1: ${testhashu32Fnv1}, testhashs64Fnv1: ${testhashs64Fnv1}, testhashu64Fnv1: ${testhashu64Fnv1}, testhashs32Fnv1a: ${testhashs32Fnv1a}, testhashu32Fnv1a: ${testhashu32Fnv1a}, testhashs64Fnv1a: ${testhashs64Fnv1a}, testhashu64Fnv1a: ${testhashu64Fnv1a}, testarrayofbools: ${testarrayofbools}, testf: ${testf}, testf2: ${testf2}, testf3: ${testf3}, testarrayofstring2: ${testarrayofstring2}, testarrayofsortedstruct: ${testarrayofsortedstruct}, flex: ${flex}, test5: ${test5}, vectorOfLongs: ${vectorOfLongs}, vectorOfDoubles: ${vectorOfDoubles}, parentNamespaceTest: ${parentNamespaceTest}, vectorOfReferrables: ${vectorOfReferrables}, singleWeakReference: ${singleWeakReference}, vectorOfWeakReferences: ${vectorOfWeakReferences}, vectorOfStrongReferrables: ${vectorOfStrongReferrables}, coOwningReference: ${coOwningReference}, vectorOfCoOwningReferences: ${vectorOfCoOwningReferences}, nonOwningReference: ${nonOwningReference}, vectorOfNonOwningReferences: ${vectorOfNonOwningReferences}, anyUniqueType: ${anyUniqueType}, anyUnique: ${anyUnique}, anyAmbiguousType: ${anyAmbiguousType}, anyAmbiguous: ${anyAmbiguous}, vectorOfEnums: ${vectorOfEnums}, signedEnum: ${signedEnum}, testrequirednestedflatbuffer: ${testrequirednestedflatbuffer}, scalarKeySortedTables: ${scalarKeySortedTables}, nativeInline: ${nativeInline}, longEnumNonEnumDefault: ${longEnumNonEnumDefault}, longEnumNormalDefault: ${longEnumNormalDefault}}';
}
}
@@ -1421,7 +1578,7 @@
final fb.Builder fbBuilder;
void begin() {
- fbBuilder.startTable(50);
+ fbBuilder.startTable(54);
}
int addPos(int offset) {
@@ -1624,6 +1781,18 @@
fbBuilder.addOffset(50, offset);
return fbBuilder.offset;
}
+ int addNativeInline(int offset) {
+ fbBuilder.addStruct(51, offset);
+ return fbBuilder.offset;
+ }
+ int addLongEnumNonEnumDefault(LongEnum? longEnumNonEnumDefault) {
+ fbBuilder.addUint64(52, longEnumNonEnumDefault?.value);
+ return fbBuilder.offset;
+ }
+ int addLongEnumNormalDefault(LongEnum? longEnumNormalDefault) {
+ fbBuilder.addUint64(53, longEnumNormalDefault?.value);
+ return fbBuilder.offset;
+ }
int finish() {
return fbBuilder.endTable();
@@ -1681,6 +1850,9 @@
final Race? _signedEnum;
final List<int>? _testrequirednestedflatbuffer;
final List<StatObjectBuilder>? _scalarKeySortedTables;
+ final TestObjectBuilder? _nativeInline;
+ final LongEnum? _longEnumNonEnumDefault;
+ final LongEnum? _longEnumNormalDefault;
MonsterObjectBuilder({
Vec3ObjectBuilder? pos,
@@ -1733,6 +1905,9 @@
Race? signedEnum,
List<int>? testrequirednestedflatbuffer,
List<StatObjectBuilder>? scalarKeySortedTables,
+ TestObjectBuilder? nativeInline,
+ LongEnum? longEnumNonEnumDefault,
+ LongEnum? longEnumNormalDefault,
})
: _pos = pos,
_mana = mana,
@@ -1783,7 +1958,10 @@
_vectorOfEnums = vectorOfEnums,
_signedEnum = signedEnum,
_testrequirednestedflatbuffer = testrequirednestedflatbuffer,
- _scalarKeySortedTables = scalarKeySortedTables;
+ _scalarKeySortedTables = scalarKeySortedTables,
+ _nativeInline = nativeInline,
+ _longEnumNonEnumDefault = longEnumNonEnumDefault,
+ _longEnumNormalDefault = longEnumNormalDefault;
/// Finish building, and store into the [fbBuilder].
@override
@@ -1836,7 +2014,7 @@
: fbBuilder.writeListUint8(_testrequirednestedflatbuffer!);
final int? scalarKeySortedTablesOffset = _scalarKeySortedTables == null ? null
: fbBuilder.writeList(_scalarKeySortedTables!.map((b) => b.getOrCreateOffset(fbBuilder)).toList());
- fbBuilder.startTable(50);
+ fbBuilder.startTable(54);
if (_pos != null) {
fbBuilder.addStruct(0, _pos!.finish(fbBuilder));
}
@@ -1889,6 +2067,11 @@
fbBuilder.addInt8(48, _signedEnum?.value);
fbBuilder.addOffset(49, testrequirednestedflatbufferOffset);
fbBuilder.addOffset(50, scalarKeySortedTablesOffset);
+ if (_nativeInline != null) {
+ fbBuilder.addStruct(51, _nativeInline!.finish(fbBuilder));
+ }
+ fbBuilder.addUint64(52, _longEnumNonEnumDefault?.value);
+ fbBuilder.addUint64(53, _longEnumNormalDefault?.value);
return fbBuilder.endTable();
}
@@ -1927,7 +2110,7 @@
@override
String toString() {
- return 'TypeAliases{i8: $i8, u8: $u8, i16: $i16, u16: $u16, i32: $i32, u32: $u32, i64: $i64, u64: $u64, f32: $f32, f64: $f64, v8: $v8, vf64: $vf64}';
+ return 'TypeAliases{i8: ${i8}, u8: ${u8}, i16: ${i16}, u16: ${u16}, i32: ${i32}, u32: ${u32}, i64: ${i64}, u64: ${u64}, f32: ${f32}, f64: ${f64}, v8: ${v8}, vf64: ${vf64}}';
}
TypeAliasesT unpack() => TypeAliasesT(
@@ -2002,7 +2185,7 @@
@override
String toString() {
- return 'TypeAliasesT{i8: $i8, u8: $u8, i16: $i16, u16: $u16, i32: $i32, u32: $u32, i64: $i64, u64: $u64, f32: $f32, f64: $f64, v8: $v8, vf64: $vf64}';
+ return 'TypeAliasesT{i8: ${i8}, u8: ${u8}, i16: ${i16}, u16: ${u16}, i32: ${i32}, u32: ${u32}, i64: ${i64}, u64: ${u64}, f32: ${f32}, f64: ${f64}, v8: ${v8}, vf64: ${vf64}}';
}
}
diff --git a/dart/test/monsterdata_test.mon b/dart/test/monsterdata_test.mon
index cd52947..da0ed86 100644
--- a/dart/test/monsterdata_test.mon
+++ b/dart/test/monsterdata_test.mon
Binary files differ