Fix 64-bit numeric enum values in typescript (#7135)

* Fix 64-bit default numeric enum values in typescript

If you had a default value that wasn't a valid enum value (e.g., a zero
if you used a bit_flag setting, like you get with AdvancedFeatures
in reflection.fbs), we weren't using BigInt.

* Run generate_code.py

* [DART] Handle deprecated fields & invalid enum defaults

* Update .NET test
This commit is contained in:
James Kuszmaul
2022-03-04 21:57:48 -08:00
committed by GitHub
parent 1a4c405662
commit 9ed1323044
39 changed files with 1342 additions and 275 deletions

View File

@@ -0,0 +1,18 @@
// <auto-generated>
// automatically generated by the FlatBuffers compiler, do not modify
// </auto-generated>
namespace MyGame.Example
{
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
[System.FlagsAttribute]
public enum LongEnum : ulong
{
LongOne = 2,
LongTwo = 4,
LongBig = 1099511627776,
};
}

View File

@@ -0,0 +1,32 @@
// Code generated by the FlatBuffers compiler. DO NOT EDIT.
package Example
import "strconv"
type LongEnum uint64
const (
LongEnumLongOne LongEnum = 2
LongEnumLongTwo LongEnum = 4
LongEnumLongBig LongEnum = 1099511627776
)
var EnumNamesLongEnum = map[LongEnum]string{
LongEnumLongOne: "LongOne",
LongEnumLongTwo: "LongTwo",
LongEnumLongBig: "LongBig",
}
var EnumValuesLongEnum = map[string]LongEnum{
"LongOne": LongEnumLongOne,
"LongTwo": LongEnumLongTwo,
"LongBig": LongEnumLongBig,
}
func (v LongEnum) String() string {
if s, ok := EnumNamesLongEnum[v]; ok {
return s
}
return "LongEnum(" + strconv.FormatInt(int64(v), 10) + ")"
}

View File

@@ -0,0 +1,12 @@
// automatically generated by the FlatBuffers compiler, do not modify
package MyGame.Example;
@SuppressWarnings("unused")
public final class LongEnum {
private LongEnum() { }
public static final long LongOne = 2;
public static final long LongTwo = 4;
public static final long LongBig = 1099511627776;
}

View File

@@ -0,0 +1,12 @@
// automatically generated by the FlatBuffers compiler, do not modify
package MyGame.Example
@Suppress("unused")
class LongEnum private constructor() {
companion object {
const val LongOne: ULong = 2UL
const val LongTwo: ULong = 4UL
const val LongBig: ULong = 1099511627776UL
}
}

View File

@@ -0,0 +1,19 @@
--[[ MyGame.Example.LongEnum
Automatically generated by the FlatBuffers compiler, do not modify.
Or modify. I'm a message, not a cop.
flatc version: 2.0.6
Declared by : //monster_test.fbs
Rooting type : MyGame.Example.Monster (//monster_test.fbs)
--]]
local LongEnum = {
LongOne = 2,
LongTwo = 4,
LongBig = 1099511627776,
}
return LongEnum

View File

@@ -0,0 +1,25 @@
<?php
// automatically generated by the FlatBuffers compiler, do not modify
namespace MyGame\Example;
class LongEnum
{
const LongOne = 2;
const LongTwo = 4;
const LongBig = 1099511627776;
private static $names = array(
LongEnum::LongOne=>"LongOne",
LongEnum::LongTwo=>"LongTwo",
LongEnum::LongBig=>"LongBig",
);
public static function Name($e)
{
if (!isset(self::$names[$e])) {
throw new \Exception();
}
return self::$names[$e];
}
}

View File

@@ -0,0 +1,8 @@
# automatically generated by the FlatBuffers compiler, do not modify
# namespace: Example
class LongEnum(object):
LongOne = 2
LongTwo = 4
LongBig = 1099511627776

View File

@@ -211,6 +211,10 @@ public struct Monster : IFlatbufferObject
public int ScalarKeySortedTablesLength { get { int o = __p.__offset(104); return o != 0 ? __p.__vector_len(o) : 0; } }
public MyGame.Example.Stat? ScalarKeySortedTablesByKey(ushort key) { int o = __p.__offset(104); return o != 0 ? MyGame.Example.Stat.__lookup_by_key(__p.__vector(o), key, __p.bb) : null; }
public MyGame.Example.Test? NativeInline { get { int o = __p.__offset(106); return o != 0 ? (MyGame.Example.Test?)(new MyGame.Example.Test()).__assign(o + __p.bb_pos, __p.bb) : null; } }
public MyGame.Example.LongEnum LongEnumNonEnumDefault { get { int o = __p.__offset(108); return o != 0 ? (MyGame.Example.LongEnum)__p.bb.GetUlong(o + __p.bb_pos) : 0; } }
public bool MutateLongEnumNonEnumDefault(MyGame.Example.LongEnum long_enum_non_enum_default) { int o = __p.__offset(108); if (o != 0) { __p.bb.PutUlong(o + __p.bb_pos, (ulong)long_enum_non_enum_default); return true; } else { return false; } }
public MyGame.Example.LongEnum LongEnumNormalDefault { get { int o = __p.__offset(110); return o != 0 ? (MyGame.Example.LongEnum)__p.bb.GetUlong(o + __p.bb_pos) : MyGame.Example.LongEnum.LongOne; } }
public bool MutateLongEnumNormalDefault(MyGame.Example.LongEnum long_enum_normal_default) { int o = __p.__offset(110); if (o != 0) { __p.bb.PutUlong(o + __p.bb_pos, (ulong)long_enum_normal_default); return true; } else { return false; } }
public static Offset<MyGame.Example.Monster> CreateMonster(FlatBufferBuilder builder,
MyGame.Example.Vec3T pos = null,
@@ -263,8 +267,12 @@ public struct Monster : IFlatbufferObject
MyGame.Example.Race signed_enum = MyGame.Example.Race.None,
VectorOffset testrequirednestedflatbufferOffset = default(VectorOffset),
VectorOffset scalar_key_sorted_tablesOffset = default(VectorOffset),
MyGame.Example.TestT native_inline = null) {
builder.StartTable(52);
MyGame.Example.TestT native_inline = null,
MyGame.Example.LongEnum long_enum_non_enum_default = 0,
MyGame.Example.LongEnum long_enum_normal_default = MyGame.Example.LongEnum.LongOne) {
builder.StartTable(54);
Monster.AddLongEnumNormalDefault(builder, long_enum_normal_default);
Monster.AddLongEnumNonEnumDefault(builder, long_enum_non_enum_default);
Monster.AddNonOwningReference(builder, non_owning_reference);
Monster.AddCoOwningReference(builder, co_owning_reference);
Monster.AddSingleWeakReference(builder, single_weak_reference);
@@ -319,7 +327,7 @@ public struct Monster : IFlatbufferObject
return Monster.EndMonster(builder);
}
public static void StartMonster(FlatBufferBuilder builder) { builder.StartTable(52); }
public static void StartMonster(FlatBufferBuilder builder) { builder.StartTable(54); }
public static void AddPos(FlatBufferBuilder builder, Offset<MyGame.Example.Vec3> posOffset) { builder.AddStruct(0, posOffset.Value, 0); }
public static void AddMana(FlatBufferBuilder builder, short mana) { builder.AddShort(1, mana, 150); }
public static void AddHp(FlatBufferBuilder builder, short hp) { builder.AddShort(2, hp, 100); }
@@ -425,6 +433,8 @@ public struct Monster : IFlatbufferObject
public static VectorOffset CreateScalarKeySortedTablesVectorBlock(FlatBufferBuilder builder, Offset<MyGame.Example.Stat>[] data) { builder.StartVector(4, data.Length, 4); builder.Add(data); return builder.EndVector(); }
public static void StartScalarKeySortedTablesVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(4, numElems, 4); }
public static void AddNativeInline(FlatBufferBuilder builder, Offset<MyGame.Example.Test> nativeInlineOffset) { builder.AddStruct(51, nativeInlineOffset.Value, 0); }
public static void AddLongEnumNonEnumDefault(FlatBufferBuilder builder, MyGame.Example.LongEnum longEnumNonEnumDefault) { builder.AddUlong(52, (ulong)longEnumNonEnumDefault, 0); }
public static void AddLongEnumNormalDefault(FlatBufferBuilder builder, MyGame.Example.LongEnum longEnumNormalDefault) { builder.AddUlong(53, (ulong)longEnumNormalDefault, 2); }
public static Offset<MyGame.Example.Monster> EndMonster(FlatBufferBuilder builder) {
int o = builder.EndTable();
builder.Required(o, 10); // name
@@ -571,6 +581,8 @@ public struct Monster : IFlatbufferObject
_o.ScalarKeySortedTables = new List<MyGame.Example.StatT>();
for (var _j = 0; _j < this.ScalarKeySortedTablesLength; ++_j) {_o.ScalarKeySortedTables.Add(this.ScalarKeySortedTables(_j).HasValue ? this.ScalarKeySortedTables(_j).Value.UnPack() : null);}
_o.NativeInline = this.NativeInline.HasValue ? this.NativeInline.Value.UnPack() : null;
_o.LongEnumNonEnumDefault = this.LongEnumNonEnumDefault;
_o.LongEnumNormalDefault = this.LongEnumNormalDefault;
}
public static Offset<MyGame.Example.Monster> Pack(FlatBufferBuilder builder, MonsterT _o) {
if (_o == null) return default(Offset<MyGame.Example.Monster>);
@@ -745,7 +757,9 @@ public struct Monster : IFlatbufferObject
_o.SignedEnum,
_testrequirednestedflatbuffer,
_scalar_key_sorted_tables,
_o.NativeInline);
_o.NativeInline,
_o.LongEnumNonEnumDefault,
_o.LongEnumNormalDefault);
}
}
@@ -894,6 +908,10 @@ public class MonsterT
public List<MyGame.Example.StatT> ScalarKeySortedTables { get; set; }
[Newtonsoft.Json.JsonProperty("native_inline")]
public MyGame.Example.TestT NativeInline { get; set; }
[Newtonsoft.Json.JsonProperty("long_enum_non_enum_default")]
public MyGame.Example.LongEnum LongEnumNonEnumDefault { get; set; }
[Newtonsoft.Json.JsonProperty("long_enum_normal_default")]
public MyGame.Example.LongEnum LongEnumNormalDefault { get; set; }
public MonsterT() {
this.Pos = new MyGame.Example.Vec3T();
@@ -944,6 +962,8 @@ public class MonsterT
this.Testrequirednestedflatbuffer = null;
this.ScalarKeySortedTables = null;
this.NativeInline = new MyGame.Example.TestT();
this.LongEnumNonEnumDefault = 0;
this.LongEnumNormalDefault = MyGame.Example.LongEnum.LongOne;
}
public static MonsterT DeserializeFromJson(string jsonText) {

View File

@@ -58,6 +58,8 @@ type MonsterT struct {
Testrequirednestedflatbuffer []byte
ScalarKeySortedTables []*StatT
NativeInline *TestT
LongEnumNonEnumDefault LongEnum
LongEnumNormalDefault LongEnum
}
func (t *MonsterT) Pack(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
@@ -316,6 +318,8 @@ func (t *MonsterT) Pack(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
MonsterAddScalarKeySortedTables(builder, scalarKeySortedTablesOffset)
nativeInlineOffset := t.NativeInline.Pack(builder)
MonsterAddNativeInline(builder, nativeInlineOffset)
MonsterAddLongEnumNonEnumDefault(builder, t.LongEnumNonEnumDefault)
MonsterAddLongEnumNormalDefault(builder, t.LongEnumNormalDefault)
return MonsterEnd(builder)
}
@@ -455,6 +459,8 @@ func (rcv *Monster) UnPackTo(t *MonsterT) {
t.ScalarKeySortedTables[j] = x.UnPack()
}
t.NativeInline = rcv.NativeInline(nil).UnPack()
t.LongEnumNonEnumDefault = rcv.LongEnumNonEnumDefault()
t.LongEnumNormalDefault = rcv.LongEnumNormalDefault()
}
func (rcv *Monster) UnPack() *MonsterT {
@@ -1356,8 +1362,32 @@ func (rcv *Monster) NativeInline(obj *Test) *Test {
return nil
}
func (rcv *Monster) LongEnumNonEnumDefault() LongEnum {
o := flatbuffers.UOffsetT(rcv._tab.Offset(108))
if o != 0 {
return LongEnum(rcv._tab.GetUint64(o + rcv._tab.Pos))
}
return 0
}
func (rcv *Monster) MutateLongEnumNonEnumDefault(n LongEnum) bool {
return rcv._tab.MutateUint64Slot(108, uint64(n))
}
func (rcv *Monster) LongEnumNormalDefault() LongEnum {
o := flatbuffers.UOffsetT(rcv._tab.Offset(110))
if o != 0 {
return LongEnum(rcv._tab.GetUint64(o + rcv._tab.Pos))
}
return 2
}
func (rcv *Monster) MutateLongEnumNormalDefault(n LongEnum) bool {
return rcv._tab.MutateUint64Slot(110, uint64(n))
}
func MonsterStart(builder *flatbuffers.Builder) {
builder.StartObject(52)
builder.StartObject(54)
}
func MonsterAddPos(builder *flatbuffers.Builder, pos flatbuffers.UOffsetT) {
builder.PrependStructSlot(0, flatbuffers.UOffsetT(pos), 0)
@@ -1572,6 +1602,12 @@ func MonsterStartScalarKeySortedTablesVector(builder *flatbuffers.Builder, numEl
func MonsterAddNativeInline(builder *flatbuffers.Builder, nativeInline flatbuffers.UOffsetT) {
builder.PrependStructSlot(51, flatbuffers.UOffsetT(nativeInline), 0)
}
func MonsterAddLongEnumNonEnumDefault(builder *flatbuffers.Builder, longEnumNonEnumDefault LongEnum) {
builder.PrependUint64Slot(52, uint64(longEnumNonEnumDefault), 0)
}
func MonsterAddLongEnumNormalDefault(builder *flatbuffers.Builder, longEnumNormalDefault LongEnum) {
builder.PrependUint64Slot(53, uint64(longEnumNormalDefault), 2)
}
func MonsterEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
return builder.EndObject()
}

View File

@@ -212,8 +212,12 @@ public final class Monster extends Table {
public MyGame.Example.Stat.Vector scalarKeySortedTablesVector(MyGame.Example.Stat.Vector obj) { int o = __offset(104); return o != 0 ? obj.__assign(__vector(o), 4, bb) : null; }
public MyGame.Example.Test nativeInline() { return nativeInline(new MyGame.Example.Test()); }
public MyGame.Example.Test nativeInline(MyGame.Example.Test obj) { int o = __offset(106); return o != 0 ? obj.__assign(o + bb_pos, bb) : null; }
public long longEnumNonEnumDefault() { int o = __offset(108); return o != 0 ? bb.getLong(o + bb_pos) : 0L; }
public boolean mutateLongEnumNonEnumDefault(long long_enum_non_enum_default) { int o = __offset(108); if (o != 0) { bb.putLong(o + bb_pos, long_enum_non_enum_default); return true; } else { return false; } }
public long longEnumNormalDefault() { int o = __offset(110); return o != 0 ? bb.getLong(o + bb_pos) : 2L; }
public boolean mutateLongEnumNormalDefault(long long_enum_normal_default) { int o = __offset(110); if (o != 0) { bb.putLong(o + bb_pos, long_enum_normal_default); return true; } else { return false; } }
public static void startMonster(FlatBufferBuilder builder) { builder.startTable(52); }
public static void startMonster(FlatBufferBuilder builder) { builder.startTable(54); }
public static void addPos(FlatBufferBuilder builder, int posOffset) { builder.addStruct(0, posOffset, 0); }
public static void addMana(FlatBufferBuilder builder, short mana) { builder.addShort(1, mana, 150); }
public static void addHp(FlatBufferBuilder builder, short hp) { builder.addShort(2, hp, 100); }
@@ -307,6 +311,8 @@ public final class Monster extends Table {
public static int createScalarKeySortedTablesVector(FlatBufferBuilder builder, int[] data) { builder.startVector(4, data.length, 4); for (int i = data.length - 1; i >= 0; i--) builder.addOffset(data[i]); return builder.endVector(); }
public static void startScalarKeySortedTablesVector(FlatBufferBuilder builder, int numElems) { builder.startVector(4, numElems, 4); }
public static void addNativeInline(FlatBufferBuilder builder, int nativeInlineOffset) { builder.addStruct(51, nativeInlineOffset, 0); }
public static void addLongEnumNonEnumDefault(FlatBufferBuilder builder, long longEnumNonEnumDefault) { builder.addLong(52, longEnumNonEnumDefault, 0L); }
public static void addLongEnumNormalDefault(FlatBufferBuilder builder, long longEnumNormalDefault) { builder.addLong(53, longEnumNormalDefault, 2L); }
public static int endMonster(FlatBufferBuilder builder) {
int o = builder.endTable();
builder.required(o, 10); // name
@@ -523,6 +529,10 @@ public final class Monster extends Table {
_o.setScalarKeySortedTables(_oScalarKeySortedTables);
if (nativeInline() != null) nativeInline().unpackTo(_o.getNativeInline());
else _o.setNativeInline(null);
long _oLongEnumNonEnumDefault = longEnumNonEnumDefault();
_o.setLongEnumNonEnumDefault(_oLongEnumNonEnumDefault);
long _oLongEnumNormalDefault = longEnumNormalDefault();
_o.setLongEnumNormalDefault(_oLongEnumNormalDefault);
}
public static int pack(FlatBufferBuilder builder, MonsterT _o) {
if (_o == null) return 0;
@@ -710,6 +720,8 @@ public final class Monster extends Table {
addTestrequirednestedflatbuffer(builder, _testrequirednestedflatbuffer);
addScalarKeySortedTables(builder, _scalarKeySortedTables);
addNativeInline(builder, MyGame.Example.Test.pack(builder, _o.getNativeInline()));
addLongEnumNonEnumDefault(builder, _o.getLongEnumNonEnumDefault());
addLongEnumNormalDefault(builder, _o.getLongEnumNormalDefault());
return endMonster(builder);
}
}

View File

@@ -842,6 +842,34 @@ class Monster : Table() {
null
}
}
val longEnumNonEnumDefault : ULong
get() {
val o = __offset(108)
return if(o != 0) bb.getLong(o + bb_pos).toULong() else 0UL
}
fun mutateLongEnumNonEnumDefault(longEnumNonEnumDefault: ULong) : Boolean {
val o = __offset(108)
return if (o != 0) {
bb.putLong(o + bb_pos, longEnumNonEnumDefault.toLong())
true
} else {
false
}
}
val longEnumNormalDefault : ULong
get() {
val o = __offset(110)
return if(o != 0) bb.getLong(o + bb_pos).toULong() else 2UL
}
fun mutateLongEnumNormalDefault(longEnumNormalDefault: ULong) : Boolean {
val o = __offset(110)
return if (o != 0) {
bb.putLong(o + bb_pos, longEnumNormalDefault.toLong())
true
} else {
false
}
}
override fun keysCompare(o1: Int, o2: Int, _bb: ByteBuffer) : Int {
return compareStrings(__offset(10, o1, _bb), __offset(10, o2, _bb), _bb)
}
@@ -853,7 +881,7 @@ class Monster : Table() {
return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb))
}
fun MonsterBufferHasIdentifier(_bb: ByteBuffer) : Boolean = __has_identifier(_bb, "MONS")
fun startMonster(builder: FlatBufferBuilder) = builder.startTable(52)
fun startMonster(builder: FlatBufferBuilder) = builder.startTable(54)
fun addPos(builder: FlatBufferBuilder, pos: Int) = builder.addStruct(0, pos, 0)
fun addMana(builder: FlatBufferBuilder, mana: Short) = builder.addShort(1, mana, 150)
fun addHp(builder: FlatBufferBuilder, hp: Short) = builder.addShort(2, hp, 100)
@@ -1044,6 +1072,8 @@ class Monster : Table() {
}
fun startScalarKeySortedTablesVector(builder: FlatBufferBuilder, numElems: Int) = builder.startVector(4, numElems, 4)
fun addNativeInline(builder: FlatBufferBuilder, nativeInline: Int) = builder.addStruct(51, nativeInline, 0)
fun addLongEnumNonEnumDefault(builder: FlatBufferBuilder, longEnumNonEnumDefault: ULong) = builder.addLong(52, longEnumNonEnumDefault.toLong(), 0)
fun addLongEnumNormalDefault(builder: FlatBufferBuilder, longEnumNormalDefault: ULong) = builder.addLong(53, longEnumNormalDefault.toLong(), 2)
fun endMonster(builder: FlatBufferBuilder) : Int {
val o = builder.endTable()
builder.required(o, 10)

View File

@@ -687,8 +687,24 @@ function mt:NativeInline()
end
end
function mt:LongEnumNonEnumDefault()
local o = self.view:Offset(108)
if o ~= 0 then
return self.view:Get(flatbuffers.N.Uint64, self.view.pos + o)
end
return 0
end
function mt:LongEnumNormalDefault()
local o = self.view:Offset(110)
if o ~= 0 then
return self.view:Get(flatbuffers.N.Uint64, self.view.pos + o)
end
return 2
end
function Monster.Start(builder)
builder:StartObject(52)
builder:StartObject(54)
end
function Monster.AddPos(builder, pos)
@@ -975,6 +991,14 @@ function Monster.AddNativeInline(builder, nativeInline)
builder:PrependStructSlot(51, nativeInline, 0)
end
function Monster.AddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault)
builder:PrependUint64Slot(52, longEnumNonEnumDefault, 0)
end
function Monster.AddLongEnumNormalDefault(builder, longEnumNormalDefault)
builder:PrependUint64Slot(53, longEnumNormalDefault, 2)
end
function Monster.End(builder)
return builder:EndObject()
end

View File

@@ -736,22 +736,40 @@ class Monster extends Table
return $o != 0 ? $obj->init($o + $this->bb_pos, $this->bb) : 0;
}
/**
* @return ulong
*/
public function getLongEnumNonEnumDefault()
{
$o = $this->__offset(108);
return $o != 0 ? $this->bb->getUlong($o + $this->bb_pos) : 0;
}
/**
* @return ulong
*/
public function getLongEnumNormalDefault()
{
$o = $this->__offset(110);
return $o != 0 ? $this->bb->getUlong($o + $this->bb_pos) : \MyGame\Example\LongEnum::LongOne;
}
/**
* @param FlatBufferBuilder $builder
* @return void
*/
public static function startMonster(FlatBufferBuilder $builder)
{
$builder->StartObject(52);
$builder->StartObject(54);
}
/**
* @param FlatBufferBuilder $builder
* @return Monster
*/
public static function createMonster(FlatBufferBuilder $builder, $pos, $mana, $hp, $name, $inventory, $color, $test_type, $test, $test4, $testarrayofstring, $testarrayoftables, $enemy, $testnestedflatbuffer, $testempty, $testbool, $testhashs32_fnv1, $testhashu32_fnv1, $testhashs64_fnv1, $testhashu64_fnv1, $testhashs32_fnv1a, $testhashu32_fnv1a, $testhashs64_fnv1a, $testhashu64_fnv1a, $testarrayofbools, $testf, $testf2, $testf3, $testarrayofstring2, $testarrayofsortedstruct, $flex, $test5, $vector_of_longs, $vector_of_doubles, $parent_namespace_test, $vector_of_referrables, $single_weak_reference, $vector_of_weak_references, $vector_of_strong_referrables, $co_owning_reference, $vector_of_co_owning_references, $non_owning_reference, $vector_of_non_owning_references, $any_unique_type, $any_unique, $any_ambiguous_type, $any_ambiguous, $vector_of_enums, $signed_enum, $testrequirednestedflatbuffer, $scalar_key_sorted_tables, $native_inline)
public static function createMonster(FlatBufferBuilder $builder, $pos, $mana, $hp, $name, $inventory, $color, $test_type, $test, $test4, $testarrayofstring, $testarrayoftables, $enemy, $testnestedflatbuffer, $testempty, $testbool, $testhashs32_fnv1, $testhashu32_fnv1, $testhashs64_fnv1, $testhashu64_fnv1, $testhashs32_fnv1a, $testhashu32_fnv1a, $testhashs64_fnv1a, $testhashu64_fnv1a, $testarrayofbools, $testf, $testf2, $testf3, $testarrayofstring2, $testarrayofsortedstruct, $flex, $test5, $vector_of_longs, $vector_of_doubles, $parent_namespace_test, $vector_of_referrables, $single_weak_reference, $vector_of_weak_references, $vector_of_strong_referrables, $co_owning_reference, $vector_of_co_owning_references, $non_owning_reference, $vector_of_non_owning_references, $any_unique_type, $any_unique, $any_ambiguous_type, $any_ambiguous, $vector_of_enums, $signed_enum, $testrequirednestedflatbuffer, $scalar_key_sorted_tables, $native_inline, $long_enum_non_enum_default, $long_enum_normal_default)
{
$builder->startObject(52);
$builder->startObject(54);
self::addPos($builder, $pos);
self::addMana($builder, $mana);
self::addHp($builder, $hp);
@@ -803,6 +821,8 @@ class Monster extends Table
self::addTestrequirednestedflatbuffer($builder, $testrequirednestedflatbuffer);
self::addScalarKeySortedTables($builder, $scalar_key_sorted_tables);
self::addNativeInline($builder, $native_inline);
self::addLongEnumNonEnumDefault($builder, $long_enum_non_enum_default);
self::addLongEnumNormalDefault($builder, $long_enum_normal_default);
$o = $builder->endObject();
$builder->required($o, 10); // name
return $o;
@@ -1783,6 +1803,26 @@ class Monster extends Table
$builder->addStructX(51, $nativeInline, 0);
}
/**
* @param FlatBufferBuilder $builder
* @param ulong
* @return void
*/
public static function addLongEnumNonEnumDefault(FlatBufferBuilder $builder, $longEnumNonEnumDefault)
{
$builder->addUlongX(52, $longEnumNonEnumDefault, 0);
}
/**
* @param FlatBufferBuilder $builder
* @param ulong
* @return void
*/
public static function addLongEnumNormalDefault(FlatBufferBuilder $builder, $longEnumNormalDefault)
{
$builder->addUlongX(53, $longEnumNormalDefault, 2);
}
/**
* @param FlatBufferBuilder $builder
* @return int table offset

View File

@@ -802,7 +802,21 @@ class Monster(object):
return obj
return None
def MonsterStart(builder): builder.StartObject(52)
# Monster
def LongEnumNonEnumDefault(self):
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(108))
if o != 0:
return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
return 0
# Monster
def LongEnumNormalDefault(self):
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(110))
if o != 0:
return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
return 2
def MonsterStart(builder): builder.StartObject(54)
def Start(builder):
return MonsterStart(builder)
def MonsterAddPos(builder, pos): builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pos), 0)
@@ -1032,6 +1046,12 @@ def StartScalarKeySortedTablesVector(builder, numElems):
def MonsterAddNativeInline(builder, nativeInline): builder.PrependStructSlot(51, flatbuffers.number_types.UOffsetTFlags.py_type(nativeInline), 0)
def AddNativeInline(builder, nativeInline):
return MonsterAddNativeInline(builder, nativeInline)
def MonsterAddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault): builder.PrependUint64Slot(52, longEnumNonEnumDefault, 0)
def AddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault):
return MonsterAddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault)
def MonsterAddLongEnumNormalDefault(builder, longEnumNormalDefault): builder.PrependUint64Slot(53, longEnumNormalDefault, 2)
def AddLongEnumNormalDefault(builder, longEnumNormalDefault):
return MonsterAddLongEnumNormalDefault(builder, longEnumNormalDefault)
def MonsterEnd(builder): return builder.EndObject()
def End(builder):
return MonsterEnd(builder)
@@ -1106,6 +1126,8 @@ class MonsterT(object):
self.testrequirednestedflatbuffer = None # type: List[int]
self.scalarKeySortedTables = None # type: List[MyGame.Example.Stat.StatT]
self.nativeInline = None # type: Optional[MyGame.Example.Test.TestT]
self.longEnumNonEnumDefault = 0 # type: int
self.longEnumNormalDefault = 2 # type: int
@classmethod
def InitFromBuf(cls, buf, pos):
@@ -1300,6 +1322,8 @@ class MonsterT(object):
self.scalarKeySortedTables.append(stat_)
if monster.NativeInline() is not None:
self.nativeInline = MyGame.Example.Test.TestT.InitFromObj(monster.NativeInline())
self.longEnumNonEnumDefault = monster.LongEnumNonEnumDefault()
self.longEnumNormalDefault = monster.LongEnumNormalDefault()
# MonsterT
def Pack(self, builder):
@@ -1551,5 +1575,7 @@ class MonsterT(object):
if self.nativeInline is not None:
nativeInline = self.nativeInline.Pack(builder)
MonsterAddNativeInline(builder, nativeInline)
MonsterAddLongEnumNonEnumDefault(builder, self.longEnumNonEnumDefault)
MonsterAddLongEnumNormalDefault(builder, self.longEnumNormalDefault)
monster = MonsterEnd(builder)
return monster

View File

@@ -56,6 +56,8 @@ public class MonsterT {
private int[] testrequirednestedflatbuffer;
private MyGame.Example.StatT[] scalarKeySortedTables;
private MyGame.Example.TestT nativeInline;
private long longEnumNonEnumDefault;
private long longEnumNormalDefault;
public MyGame.Example.Vec3T getPos() { return pos; }
@@ -249,6 +251,14 @@ public class MonsterT {
public void setNativeInline(MyGame.Example.TestT nativeInline) { this.nativeInline = nativeInline; }
public long getLongEnumNonEnumDefault() { return longEnumNonEnumDefault; }
public void setLongEnumNonEnumDefault(long longEnumNonEnumDefault) { this.longEnumNonEnumDefault = longEnumNonEnumDefault; }
public long getLongEnumNormalDefault() { return longEnumNormalDefault; }
public void setLongEnumNormalDefault(long longEnumNormalDefault) { this.longEnumNormalDefault = longEnumNormalDefault; }
public MonsterT() {
this.pos = new MyGame.Example.Vec3T();
@@ -299,6 +309,8 @@ public class MonsterT {
this.testrequirednestedflatbuffer = null;
this.scalarKeySortedTables = null;
this.nativeInline = new MyGame.Example.TestT();
this.longEnumNonEnumDefault = 0L;
this.longEnumNormalDefault = 2L;
}
public static MonsterT deserializeFromBinary(byte[] fbBuffer) {
return Monster.getRootAsMonster(ByteBuffer.wrap(fbBuffer)).unpack();