Skip to content

Commit af74f87

Browse files
vglavnyyaardappel
authored andcommitted
Make MonsterExtra table a root table (google#5315)
- MonsterExtra table a root table - add mosterdata_extra.json
1 parent b8ef8c1 commit af74f87

File tree

9 files changed

+294
-17
lines changed

9 files changed

+294
-17
lines changed

tests/MyGame/MonsterExtra.cs

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public struct MonsterExtra : IFlatbufferObject
1414
public ByteBuffer ByteBuffer { get { return __p.bb; } }
1515
public static MonsterExtra GetRootAsMonsterExtra(ByteBuffer _bb) { return GetRootAsMonsterExtra(_bb, new MonsterExtra()); }
1616
public static MonsterExtra GetRootAsMonsterExtra(ByteBuffer _bb, MonsterExtra obj) { return (obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
17+
public static bool MonsterExtraBufferHasIdentifier(ByteBuffer _bb) { return Table.__has_identifier(_bb, "MONE"); }
1718
public void __init(int _i, ByteBuffer _bb) { __p.bb_pos = _i; __p.bb = _bb; }
1819
public MonsterExtra __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
1920

@@ -29,35 +30,67 @@ public struct MonsterExtra : IFlatbufferObject
2930
public bool MutateTestdPinf(double testd_pinf) { int o = __p.__offset(12); if (o != 0) { __p.bb.PutDouble(o + __p.bb_pos, testd_pinf); return true; } else { return false; } }
3031
public double TestdNinf { get { int o = __p.__offset(14); return o != 0 ? __p.bb.GetDouble(o + __p.bb_pos) : (double)Double.NegativeInfinity; } }
3132
public bool MutateTestdNinf(double testd_ninf) { int o = __p.__offset(14); if (o != 0) { __p.bb.PutDouble(o + __p.bb_pos, testd_ninf); return true; } else { return false; } }
33+
public float TestfVec(int j) { int o = __p.__offset(16); return o != 0 ? __p.bb.GetFloat(__p.__vector(o) + j * 4) : (float)0; }
34+
public int TestfVecLength { get { int o = __p.__offset(16); return o != 0 ? __p.__vector_len(o) : 0; } }
35+
#if ENABLE_SPAN_T
36+
public Span<byte> GetTestfVecBytes() { return __p.__vector_as_span(16); }
37+
#else
38+
public ArraySegment<byte>? GetTestfVecBytes() { return __p.__vector_as_arraysegment(16); }
39+
#endif
40+
public float[] GetTestfVecArray() { return __p.__vector_as_array<float>(16); }
41+
public bool MutateTestfVec(int j, float testf_vec) { int o = __p.__offset(16); if (o != 0) { __p.bb.PutFloat(__p.__vector(o) + j * 4, testf_vec); return true; } else { return false; } }
42+
public double TestdVec(int j) { int o = __p.__offset(18); return o != 0 ? __p.bb.GetDouble(__p.__vector(o) + j * 8) : (double)0; }
43+
public int TestdVecLength { get { int o = __p.__offset(18); return o != 0 ? __p.__vector_len(o) : 0; } }
44+
#if ENABLE_SPAN_T
45+
public Span<byte> GetTestdVecBytes() { return __p.__vector_as_span(18); }
46+
#else
47+
public ArraySegment<byte>? GetTestdVecBytes() { return __p.__vector_as_arraysegment(18); }
48+
#endif
49+
public double[] GetTestdVecArray() { return __p.__vector_as_array<double>(18); }
50+
public bool MutateTestdVec(int j, double testd_vec) { int o = __p.__offset(18); if (o != 0) { __p.bb.PutDouble(__p.__vector(o) + j * 8, testd_vec); return true; } else { return false; } }
3251

3352
public static Offset<MonsterExtra> CreateMonsterExtra(FlatBufferBuilder builder,
3453
float testf_nan = Single.NaN,
3554
float testf_pinf = Single.PositiveInfinity,
3655
float testf_ninf = Single.NegativeInfinity,
3756
double testd_nan = Double.NaN,
3857
double testd_pinf = Double.PositiveInfinity,
39-
double testd_ninf = Double.NegativeInfinity) {
40-
builder.StartObject(6);
58+
double testd_ninf = Double.NegativeInfinity,
59+
VectorOffset testf_vecOffset = default(VectorOffset),
60+
VectorOffset testd_vecOffset = default(VectorOffset)) {
61+
builder.StartObject(8);
4162
MonsterExtra.AddTestdNinf(builder, testd_ninf);
4263
MonsterExtra.AddTestdPinf(builder, testd_pinf);
4364
MonsterExtra.AddTestdNan(builder, testd_nan);
65+
MonsterExtra.AddTestdVec(builder, testd_vecOffset);
66+
MonsterExtra.AddTestfVec(builder, testf_vecOffset);
4467
MonsterExtra.AddTestfNinf(builder, testf_ninf);
4568
MonsterExtra.AddTestfPinf(builder, testf_pinf);
4669
MonsterExtra.AddTestfNan(builder, testf_nan);
4770
return MonsterExtra.EndMonsterExtra(builder);
4871
}
4972

50-
public static void StartMonsterExtra(FlatBufferBuilder builder) { builder.StartObject(6); }
73+
public static void StartMonsterExtra(FlatBufferBuilder builder) { builder.StartObject(8); }
5174
public static void AddTestfNan(FlatBufferBuilder builder, float testfNan) { builder.AddFloat(0, testfNan, Single.NaN); }
5275
public static void AddTestfPinf(FlatBufferBuilder builder, float testfPinf) { builder.AddFloat(1, testfPinf, Single.PositiveInfinity); }
5376
public static void AddTestfNinf(FlatBufferBuilder builder, float testfNinf) { builder.AddFloat(2, testfNinf, Single.NegativeInfinity); }
5477
public static void AddTestdNan(FlatBufferBuilder builder, double testdNan) { builder.AddDouble(3, testdNan, Double.NaN); }
5578
public static void AddTestdPinf(FlatBufferBuilder builder, double testdPinf) { builder.AddDouble(4, testdPinf, Double.PositiveInfinity); }
5679
public static void AddTestdNinf(FlatBufferBuilder builder, double testdNinf) { builder.AddDouble(5, testdNinf, Double.NegativeInfinity); }
80+
public static void AddTestfVec(FlatBufferBuilder builder, VectorOffset testfVecOffset) { builder.AddOffset(6, testfVecOffset.Value, 0); }
81+
public static VectorOffset CreateTestfVecVector(FlatBufferBuilder builder, float[] data) { builder.StartVector(4, data.Length, 4); for (int i = data.Length - 1; i >= 0; i--) builder.AddFloat(data[i]); return builder.EndVector(); }
82+
public static VectorOffset CreateTestfVecVectorBlock(FlatBufferBuilder builder, float[] data) { builder.StartVector(4, data.Length, 4); builder.Add(data); return builder.EndVector(); }
83+
public static void StartTestfVecVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(4, numElems, 4); }
84+
public static void AddTestdVec(FlatBufferBuilder builder, VectorOffset testdVecOffset) { builder.AddOffset(7, testdVecOffset.Value, 0); }
85+
public static VectorOffset CreateTestdVecVector(FlatBufferBuilder builder, double[] data) { builder.StartVector(8, data.Length, 8); for (int i = data.Length - 1; i >= 0; i--) builder.AddDouble(data[i]); return builder.EndVector(); }
86+
public static VectorOffset CreateTestdVecVectorBlock(FlatBufferBuilder builder, double[] data) { builder.StartVector(8, data.Length, 8); builder.Add(data); return builder.EndVector(); }
87+
public static void StartTestdVecVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(8, numElems, 8); }
5788
public static Offset<MonsterExtra> EndMonsterExtra(FlatBufferBuilder builder) {
5889
int o = builder.EndObject();
5990
return new Offset<MonsterExtra>(o);
6091
}
92+
public static void FinishMonsterExtraBuffer(FlatBufferBuilder builder, Offset<MonsterExtra> offset) { builder.Finish(offset.Value, "MONE"); }
93+
public static void FinishSizePrefixedMonsterExtraBuffer(FlatBufferBuilder builder, Offset<MonsterExtra> offset) { builder.FinishSizePrefixed(offset.Value, "MONE"); }
6194
};
6295

6396

tests/MyGame/MonsterExtra.java

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
public final class MonsterExtra extends Table {
1212
public static MonsterExtra getRootAsMonsterExtra(ByteBuffer _bb) { return getRootAsMonsterExtra(_bb, new MonsterExtra()); }
1313
public static MonsterExtra getRootAsMonsterExtra(ByteBuffer _bb, MonsterExtra obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
14+
public static boolean MonsterExtraBufferHasIdentifier(ByteBuffer _bb) { return __has_identifier(_bb, "MONE"); }
1415
public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; vtable_start = bb_pos - bb.getInt(bb_pos); vtable_size = bb.getShort(vtable_start); }
1516
public MonsterExtra __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
1617

@@ -26,34 +27,56 @@ public final class MonsterExtra extends Table {
2627
public boolean mutateTestdPinf(double testd_pinf) { int o = __offset(12); if (o != 0) { bb.putDouble(o + bb_pos, testd_pinf); return true; } else { return false; } }
2728
public double testdNinf() { int o = __offset(14); return o != 0 ? bb.getDouble(o + bb_pos) : Double.NEGATIVE_INFINITY; }
2829
public boolean mutateTestdNinf(double testd_ninf) { int o = __offset(14); if (o != 0) { bb.putDouble(o + bb_pos, testd_ninf); return true; } else { return false; } }
30+
public float testfVec(int j) { int o = __offset(16); return o != 0 ? bb.getFloat(__vector(o) + j * 4) : 0; }
31+
public int testfVecLength() { int o = __offset(16); return o != 0 ? __vector_len(o) : 0; }
32+
public ByteBuffer testfVecAsByteBuffer() { return __vector_as_bytebuffer(16, 4); }
33+
public ByteBuffer testfVecInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 16, 4); }
34+
public boolean mutateTestfVec(int j, float testf_vec) { int o = __offset(16); if (o != 0) { bb.putFloat(__vector(o) + j * 4, testf_vec); return true; } else { return false; } }
35+
public double testdVec(int j) { int o = __offset(18); return o != 0 ? bb.getDouble(__vector(o) + j * 8) : 0; }
36+
public int testdVecLength() { int o = __offset(18); return o != 0 ? __vector_len(o) : 0; }
37+
public ByteBuffer testdVecAsByteBuffer() { return __vector_as_bytebuffer(18, 8); }
38+
public ByteBuffer testdVecInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 18, 8); }
39+
public boolean mutateTestdVec(int j, double testd_vec) { int o = __offset(18); if (o != 0) { bb.putDouble(__vector(o) + j * 8, testd_vec); return true; } else { return false; } }
2940

3041
public static int createMonsterExtra(FlatBufferBuilder builder,
3142
float testf_nan,
3243
float testf_pinf,
3344
float testf_ninf,
3445
double testd_nan,
3546
double testd_pinf,
36-
double testd_ninf) {
37-
builder.startObject(6);
47+
double testd_ninf,
48+
int testf_vecOffset,
49+
int testd_vecOffset) {
50+
builder.startObject(8);
3851
MonsterExtra.addTestdNinf(builder, testd_ninf);
3952
MonsterExtra.addTestdPinf(builder, testd_pinf);
4053
MonsterExtra.addTestdNan(builder, testd_nan);
54+
MonsterExtra.addTestdVec(builder, testd_vecOffset);
55+
MonsterExtra.addTestfVec(builder, testf_vecOffset);
4156
MonsterExtra.addTestfNinf(builder, testf_ninf);
4257
MonsterExtra.addTestfPinf(builder, testf_pinf);
4358
MonsterExtra.addTestfNan(builder, testf_nan);
4459
return MonsterExtra.endMonsterExtra(builder);
4560
}
4661

47-
public static void startMonsterExtra(FlatBufferBuilder builder) { builder.startObject(6); }
62+
public static void startMonsterExtra(FlatBufferBuilder builder) { builder.startObject(8); }
4863
public static void addTestfNan(FlatBufferBuilder builder, float testfNan) { builder.addFloat(0, testfNan, Float.NaN); }
4964
public static void addTestfPinf(FlatBufferBuilder builder, float testfPinf) { builder.addFloat(1, testfPinf, Float.POSITIVE_INFINITY); }
5065
public static void addTestfNinf(FlatBufferBuilder builder, float testfNinf) { builder.addFloat(2, testfNinf, Float.NEGATIVE_INFINITY); }
5166
public static void addTestdNan(FlatBufferBuilder builder, double testdNan) { builder.addDouble(3, testdNan, Double.NaN); }
5267
public static void addTestdPinf(FlatBufferBuilder builder, double testdPinf) { builder.addDouble(4, testdPinf, Double.POSITIVE_INFINITY); }
5368
public static void addTestdNinf(FlatBufferBuilder builder, double testdNinf) { builder.addDouble(5, testdNinf, Double.NEGATIVE_INFINITY); }
69+
public static void addTestfVec(FlatBufferBuilder builder, int testfVecOffset) { builder.addOffset(6, testfVecOffset, 0); }
70+
public static int createTestfVecVector(FlatBufferBuilder builder, float[] data) { builder.startVector(4, data.length, 4); for (int i = data.length - 1; i >= 0; i--) builder.addFloat(data[i]); return builder.endVector(); }
71+
public static void startTestfVecVector(FlatBufferBuilder builder, int numElems) { builder.startVector(4, numElems, 4); }
72+
public static void addTestdVec(FlatBufferBuilder builder, int testdVecOffset) { builder.addOffset(7, testdVecOffset, 0); }
73+
public static int createTestdVecVector(FlatBufferBuilder builder, double[] data) { builder.startVector(8, data.length, 8); for (int i = data.length - 1; i >= 0; i--) builder.addDouble(data[i]); return builder.endVector(); }
74+
public static void startTestdVecVector(FlatBufferBuilder builder, int numElems) { builder.startVector(8, numElems, 8); }
5475
public static int endMonsterExtra(FlatBufferBuilder builder) {
5576
int o = builder.endObject();
5677
return o;
5778
}
79+
public static void finishMonsterExtraBuffer(FlatBufferBuilder builder, int offset) { builder.finish(offset, "MONE"); }
80+
public static void finishSizePrefixedMonsterExtraBuffer(FlatBufferBuilder builder, int offset) { builder.finishSizePrefixed(offset, "MONE"); }
5881
}
5982

tests/MyGame/MonsterExtra.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,59 @@ def TestdNinf(self):
6060
return self._tab.Get(flatbuffers.number_types.Float64Flags, o + self._tab.Pos)
6161
return float('-inf')
6262

63-
def MonsterExtraStart(builder): builder.StartObject(6)
63+
# MonsterExtra
64+
def TestfVec(self, j):
65+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(16))
66+
if o != 0:
67+
a = self._tab.Vector(o)
68+
return self._tab.Get(flatbuffers.number_types.Float32Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 4))
69+
return 0
70+
71+
# MonsterExtra
72+
def TestfVecAsNumpy(self):
73+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(16))
74+
if o != 0:
75+
return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Float32Flags, o)
76+
return 0
77+
78+
# MonsterExtra
79+
def TestfVecLength(self):
80+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(16))
81+
if o != 0:
82+
return self._tab.VectorLen(o)
83+
return 0
84+
85+
# MonsterExtra
86+
def TestdVec(self, j):
87+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(18))
88+
if o != 0:
89+
a = self._tab.Vector(o)
90+
return self._tab.Get(flatbuffers.number_types.Float64Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 8))
91+
return 0
92+
93+
# MonsterExtra
94+
def TestdVecAsNumpy(self):
95+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(18))
96+
if o != 0:
97+
return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Float64Flags, o)
98+
return 0
99+
100+
# MonsterExtra
101+
def TestdVecLength(self):
102+
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(18))
103+
if o != 0:
104+
return self._tab.VectorLen(o)
105+
return 0
106+
107+
def MonsterExtraStart(builder): builder.StartObject(8)
64108
def MonsterExtraAddTestfNan(builder, testfNan): builder.PrependFloat32Slot(0, testfNan, float('nan'))
65109
def MonsterExtraAddTestfPinf(builder, testfPinf): builder.PrependFloat32Slot(1, testfPinf, float('inf'))
66110
def MonsterExtraAddTestfNinf(builder, testfNinf): builder.PrependFloat32Slot(2, testfNinf, float('-inf'))
67111
def MonsterExtraAddTestdNan(builder, testdNan): builder.PrependFloat64Slot(3, testdNan, float('nan'))
68112
def MonsterExtraAddTestdPinf(builder, testdPinf): builder.PrependFloat64Slot(4, testdPinf, float('inf'))
69113
def MonsterExtraAddTestdNinf(builder, testdNinf): builder.PrependFloat64Slot(5, testdNinf, float('-inf'))
114+
def MonsterExtraAddTestfVec(builder, testfVec): builder.PrependUOffsetTRelativeSlot(6, flatbuffers.number_types.UOffsetTFlags.py_type(testfVec), 0)
115+
def MonsterExtraStartTestfVecVector(builder, numElems): return builder.StartVector(4, numElems, 4)
116+
def MonsterExtraAddTestdVec(builder, testdVec): builder.PrependUOffsetTRelativeSlot(7, flatbuffers.number_types.UOffsetTFlags.py_type(testdVec), 0)
117+
def MonsterExtraStartTestdVecVector(builder, numElems): return builder.StartVector(8, numElems, 8)
70118
def MonsterExtraEnd(builder): return builder.EndObject()

tests/generate_code.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ if "%1"=="-b" set buildtype=%2
2323

2424
IF NOT "%MONSTER_EXTRA%"=="skip" (
2525
@echo Generate MosterExtra
26-
..\%buildtype%\flatc.exe --cpp --java --csharp --python --gen-mutable --reflect-names --gen-object-api --gen-compare --no-includes monster_extra.fbs || goto FAIL
26+
..\%buildtype%\flatc.exe --cpp --java --csharp --python --gen-mutable --reflect-names --gen-object-api --gen-compare --no-includes monster_extra.fbs monsterdata_extra.json || goto FAIL
2727
) else (
2828
@echo monster_extra.fbs skipped (the strtod function from MSVC2013 or older doesn't support NaN/Inf arguments)
2929
)

tests/generate_code.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ set -e
2020
../flatc --cpp --java --csharp --js --ts --php --gen-mutable --reflect-names --gen-object-api --gen-compare --cpp-ptr-type flatbuffers::unique_ptr -o union_vector ./union_vector/union_vector.fbs
2121
../flatc -b --schema --bfbs-comments --bfbs-builtins -I include_test monster_test.fbs
2222
../flatc --jsonschema --schema -I include_test monster_test.fbs
23-
../flatc --cpp --java --csharp --python --gen-mutable --reflect-names --gen-object-api --gen-compare --no-includes monster_extra.fbs || goto FAIL
23+
../flatc --cpp --java --csharp --python --gen-mutable --reflect-names --gen-object-api --gen-compare --no-includes monster_extra.fbs monsterdata_extra.json || goto FAIL
2424
cd ../samples
2525
../flatc --cpp --lobster --gen-mutable --reflect-names --gen-object-api --gen-compare --cpp-ptr-type flatbuffers::unique_ptr monster.fbs
2626
../flatc -b --schema --bfbs-comments --bfbs-builtins monster.fbs

tests/monster_extra.fbs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
namespace MyGame;
22

3-
// Not all programmining languages support this extra table.
3+
// Not all programming languages support this extra table.
44
table MonsterExtra {
55
// Float-point values with NaN and Inf defaults.
66
testf_nan:float = nan;
@@ -9,4 +9,11 @@ table MonsterExtra {
99
testd_nan:double = nan;
1010
testd_pinf:double = +inf;
1111
testd_ninf:double = -inf;
12+
testf_vec : [float];
13+
testd_vec : [double];
1214
}
15+
16+
root_type MonsterExtra;
17+
18+
file_identifier "MONE";
19+
file_extension "mon";

0 commit comments

Comments
 (0)