[Dart] Fix deprecated field support, inf/nan (#5724)

* Fix deprecated field support, inf/nan

* unused params

* rerun tests
This commit is contained in:
Dan Field
2020-01-23 14:53:59 -08:00
committed by Wouter van Oortmerssen
parent 9cadf05d89
commit 89418eb848
9 changed files with 283 additions and 80 deletions

View File

@@ -65,7 +65,7 @@ public struct MonsterExtra : IFlatbufferObject
float f3 = Single.NegativeInfinity,
VectorOffset dvecOffset = default(VectorOffset),
VectorOffset fvecOffset = default(VectorOffset)) {
builder.StartTable(10);
builder.StartTable(11);
MonsterExtra.AddD3(builder, d3);
MonsterExtra.AddD2(builder, d2);
MonsterExtra.AddD1(builder, d1);
@@ -79,7 +79,7 @@ public struct MonsterExtra : IFlatbufferObject
return MonsterExtra.EndMonsterExtra(builder);
}
public static void StartMonsterExtra(FlatBufferBuilder builder) { builder.StartTable(10); }
public static void StartMonsterExtra(FlatBufferBuilder builder) { builder.StartTable(11); }
public static void AddD0(FlatBufferBuilder builder, double d0) { builder.AddDouble(0, d0, Double.NaN); }
public static void AddD1(FlatBufferBuilder builder, double d1) { builder.AddDouble(1, d1, Double.NaN); }
public static void AddD2(FlatBufferBuilder builder, double d2) { builder.AddDouble(2, d2, Double.PositiveInfinity); }

View File

@@ -58,7 +58,7 @@ public final class MonsterExtra extends Table {
float f3,
int dvecOffset,
int fvecOffset) {
builder.startTable(10);
builder.startTable(11);
MonsterExtra.addD3(builder, d3);
MonsterExtra.addD2(builder, d2);
MonsterExtra.addD1(builder, d1);
@@ -72,7 +72,7 @@ public final class MonsterExtra extends Table {
return MonsterExtra.endMonsterExtra(builder);
}
public static void startMonsterExtra(FlatBufferBuilder builder) { builder.startTable(10); }
public static void startMonsterExtra(FlatBufferBuilder builder) { builder.startTable(11); }
public static void addD0(FlatBufferBuilder builder, double d0) { builder.addDouble(0, d0, Double.NaN); }
public static void addD1(FlatBufferBuilder builder, double d1) { builder.addDouble(1, d1, Double.NaN); }
public static void addD2(FlatBufferBuilder builder, double d2) { builder.addDouble(2, d2, Double.POSITIVE_INFINITY); }

View File

@@ -184,7 +184,7 @@ class MonsterExtra : Table() {
}
fun MonsterExtraBufferHasIdentifier(_bb: ByteBuffer) : Boolean = __has_identifier(_bb, "MONE")
fun createMonsterExtra(builder: FlatBufferBuilder, d0: Double, d1: Double, d2: Double, d3: Double, f0: Float, f1: Float, f2: Float, f3: Float, dvecOffset: Int, fvecOffset: Int) : Int {
builder.startTable(10)
builder.startTable(11)
addD3(builder, d3)
addD2(builder, d2)
addD1(builder, d1)
@@ -197,7 +197,7 @@ class MonsterExtra : Table() {
addF0(builder, f0)
return endMonsterExtra(builder)
}
fun startMonsterExtra(builder: FlatBufferBuilder) = builder.startTable(10)
fun startMonsterExtra(builder: FlatBufferBuilder) = builder.startTable(11)
fun addD0(builder: FlatBufferBuilder, d0: Double) = builder.addDouble(0, d0, Double.NaN)
fun addD1(builder: FlatBufferBuilder, d1: Double) = builder.addDouble(1, d1, Double.NaN)
fun addD2(builder: FlatBufferBuilder, d2: Double) = builder.addDouble(2, d2, Double.POSITIVE_INFINITY)

View File

@@ -134,7 +134,7 @@ class MonsterExtra(object):
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(22))
return o == 0
def MonsterExtraStart(builder): builder.StartObject(10)
def MonsterExtraStart(builder): builder.StartObject(11)
def MonsterExtraAddD0(builder, d0): builder.PrependFloat64Slot(0, d0, float('nan'))
def MonsterExtraAddD1(builder, d1): builder.PrependFloat64Slot(1, d1, float('nan'))
def MonsterExtraAddD2(builder, d2): builder.PrependFloat64Slot(2, d2, float('inf'))

View File

@@ -45,6 +45,7 @@ $TEST_NOINCL_FLAGS $TEST_CPP_FLAGS -o namespace_test namespace_test/namespace_te
../flatc --cpp --java --kotlin --csharp --python $TEST_NOINCL_FLAGS $TEST_CPP_FLAGS monster_extra.fbs monsterdata_extra.json
../flatc --cpp --java --csharp --jsonschema $TEST_NOINCL_FLAGS $TEST_CPP_FLAGS --scoped-enums arrays_test.fbs
../flatc --python $TEST_BASE_FLAGS arrays_test.fbs
../flatc --dart monster_extra.fbs
# Flag c++17 requires Clang6, GCC7, MSVC2017 (_MSC_VER >= 1914) or higher.
TEST_CPP17_FLAGS="--cpp --cpp-std c++17 -o ./cpp17/generated_cpp17 $TEST_NOINCL_FLAGS"

View File

@@ -13,6 +13,7 @@ table MonsterExtra {
f3:float = -inf;
dvec : [double];
fvec : [float];
deprec:int (deprecated);
}
root_type MonsterExtra;

View File

@@ -325,7 +325,8 @@ inline const flatbuffers::TypeTable *MonsterExtraTypeTable() {
{ flatbuffers::ET_FLOAT, 0, -1 },
{ flatbuffers::ET_FLOAT, 0, -1 },
{ flatbuffers::ET_DOUBLE, 1, -1 },
{ flatbuffers::ET_FLOAT, 1, -1 }
{ flatbuffers::ET_FLOAT, 1, -1 },
{ flatbuffers::ET_INT, 0, -1 }
};
static const char * const names[] = {
"d0",
@@ -337,10 +338,11 @@ inline const flatbuffers::TypeTable *MonsterExtraTypeTable() {
"f2",
"f3",
"dvec",
"fvec"
"fvec",
"deprec"
};
static const flatbuffers::TypeTable tt = {
flatbuffers::ST_TABLE, 10, type_codes, nullptr, nullptr, names
flatbuffers::ST_TABLE, 11, type_codes, nullptr, nullptr, names
};
return &tt;
}

View File

@@ -0,0 +1,176 @@
// automatically generated by the FlatBuffers compiler, do not modify
// ignore_for_file: unused_import, unused_field, unused_local_variable
library my_game;
import 'dart:typed_data' show Uint8List;
import 'package:flat_buffers/flat_buffers.dart' as fb;
class MonsterExtra {
MonsterExtra._(this._bc, this._bcOffset);
factory MonsterExtra(List<int> bytes) {
fb.BufferContext rootRef = new fb.BufferContext.fromBytes(bytes);
return reader.read(rootRef, 0);
}
static const fb.Reader<MonsterExtra> reader = const _MonsterExtraReader();
final fb.BufferContext _bc;
final int _bcOffset;
double get d0 => const fb.Float64Reader().vTableGet(_bc, _bcOffset, 4, double.nan);
double get d1 => const fb.Float64Reader().vTableGet(_bc, _bcOffset, 6, double.nan);
double get d2 => const fb.Float64Reader().vTableGet(_bc, _bcOffset, 8, double.infinity);
double get d3 => const fb.Float64Reader().vTableGet(_bc, _bcOffset, 10, double.negativeInfinity);
double get f0 => const fb.Float32Reader().vTableGet(_bc, _bcOffset, 12, double.nan);
double get f1 => const fb.Float32Reader().vTableGet(_bc, _bcOffset, 14, double.nan);
double get f2 => const fb.Float32Reader().vTableGet(_bc, _bcOffset, 16, double.infinity);
double get f3 => const fb.Float32Reader().vTableGet(_bc, _bcOffset, 18, double.negativeInfinity);
List<double> get dvec => const fb.ListReader<double>(const fb.Float64Reader()).vTableGet(_bc, _bcOffset, 20, null);
List<double> get fvec => const fb.ListReader<double>(const fb.Float32Reader()).vTableGet(_bc, _bcOffset, 22, null);
@override
String toString() {
return 'MonsterExtra{d0: $d0, d1: $d1, d2: $d2, d3: $d3, f0: $f0, f1: $f1, f2: $f2, f3: $f3, dvec: $dvec, fvec: $fvec}';
}
}
class _MonsterExtraReader extends fb.TableReader<MonsterExtra> {
const _MonsterExtraReader();
@override
MonsterExtra createObject(fb.BufferContext bc, int offset) =>
new MonsterExtra._(bc, offset);
}
class MonsterExtraBuilder {
MonsterExtraBuilder(this.fbBuilder) {
assert(fbBuilder != null);
}
final fb.Builder fbBuilder;
void begin() {
fbBuilder.startTable();
}
int addD0(double d0) {
fbBuilder.addFloat64(0, d0);
return fbBuilder.offset;
}
int addD1(double d1) {
fbBuilder.addFloat64(1, d1);
return fbBuilder.offset;
}
int addD2(double d2) {
fbBuilder.addFloat64(2, d2);
return fbBuilder.offset;
}
int addD3(double d3) {
fbBuilder.addFloat64(3, d3);
return fbBuilder.offset;
}
int addF0(double f0) {
fbBuilder.addFloat32(4, f0);
return fbBuilder.offset;
}
int addF1(double f1) {
fbBuilder.addFloat32(5, f1);
return fbBuilder.offset;
}
int addF2(double f2) {
fbBuilder.addFloat32(6, f2);
return fbBuilder.offset;
}
int addF3(double f3) {
fbBuilder.addFloat32(7, f3);
return fbBuilder.offset;
}
int addDvecOffset(int offset) {
fbBuilder.addOffset(8, offset);
return fbBuilder.offset;
}
int addFvecOffset(int offset) {
fbBuilder.addOffset(9, offset);
return fbBuilder.offset;
}
int finish() {
return fbBuilder.endTable();
}
}
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;
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;
/// Finish building, and store into the [fbBuilder].
@override
int finish(
fb.Builder fbBuilder) {
assert(fbBuilder != null);
final int dvecOffset = _dvec?.isNotEmpty == true
? fbBuilder.writeListFloat64(_dvec)
: null;
final int fvecOffset = _fvec?.isNotEmpty == true
? fbBuilder.writeListFloat32(_fvec)
: null;
fbBuilder.startTable();
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);
if (dvecOffset != null) {
fbBuilder.addOffset(8, dvecOffset);
}
if (fvecOffset != null) {
fbBuilder.addOffset(9, fvecOffset);
}
return fbBuilder.endTable();
}
/// Convenience method to serialize to byte list.
@override
Uint8List toBytes([String fileIdentifier]) {
fb.Builder fbBuilder = new fb.Builder();
int offset = finish(fbBuilder);
return fbBuilder.finish(offset, fileIdentifier);
}
}