diff --git a/dart/test/flat_buffers_test.dart b/dart/test/flat_buffers_test.dart index ed37f875e..8cee6b281 100644 --- a/dart/test/flat_buffers_test.dart +++ b/dart/test/flat_buffers_test.dart @@ -85,7 +85,9 @@ class CheckOtherLangaugesData { 'anyUniqueType: null, anyUnique: null, anyAmbiguousType: null, ' 'anyAmbiguous: null, vectorOfEnums: null, signedEnum: Race{value: -1}, ' 'testrequirednestedflatbuffer: null, scalarKeySortedTables: null, ' - 'nativeInline: null}, ' + 'nativeInline: null, ' + 'longEnumNonEnumDefault: LongEnum{value: 0}, ' + 'longEnumNormalDefault: LongEnum{value: 2}}, ' '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, ' @@ -106,7 +108,9 @@ class CheckOtherLangaugesData { 'anyUniqueType: null, anyUnique: null, anyAmbiguousType: null, ' 'anyAmbiguous: null, vectorOfEnums: null, signedEnum: Race{value: -1}, ' 'testrequirednestedflatbuffer: null, scalarKeySortedTables: null, ' - 'nativeInline: null}, ' + 'nativeInline: null, ' + 'longEnumNonEnumDefault: LongEnum{value: 0}, ' + 'longEnumNormalDefault: LongEnum{value: 2}}, ' 'testnestedflatbuffer: null, testempty: null, testbool: true, ' 'testhashs32Fnv1: -579221183, testhashu32Fnv1: 3715746113, ' 'testhashs64Fnv1: 7930699090847568257, ' @@ -131,7 +135,9 @@ class CheckOtherLangaugesData { 'anyAmbiguous: null, vectorOfEnums: null, signedEnum: Race{value: -1}, ' 'testrequirednestedflatbuffer: null, scalarKeySortedTables: [Stat{id: ' 'miss, val: 0, count: 0}, Stat{id: hit, val: 10, count: 1}], ' - 'nativeInline: Test{a: 1, b: 2}}', + 'nativeInline: Test{a: 1, b: 2}, ' + 'longEnumNonEnumDefault: LongEnum{value: 0}, ' + 'longEnumNormalDefault: LongEnum{value: 2}}', ); } } diff --git a/src/idl_gen_dart.cpp b/src/idl_gen_dart.cpp index ec655bff1..ff2c1a5d5 100644 --- a/src/idl_gen_dart.cpp +++ b/src/idl_gen_dart.cpp @@ -227,7 +227,11 @@ class DartGenerator : public BaseGenerator { GenDocComment(enum_def.doc_comment, &code, ""); auto name = enum_def.is_union ? enum_def.name + "TypeId" : enum_def.name; - auto is_bit_flags = enum_def.attributes.Lookup("bit_flags"); + const bool is_bit_flags = + enum_def.attributes.Lookup("bit_flags") != nullptr; + // The flatbuffer schema language allows bit flag enums to potentially have + // a default value of zero, even if it's not a valid enum value... + const bool permit_zero = is_bit_flags; code += "class " + name + " {\n"; code += " final int value;\n"; @@ -235,8 +239,14 @@ class DartGenerator : public BaseGenerator { code += " factory " + name + ".fromValue(int value) {\n"; code += " final result = values[value];\n"; code += " if (result == null) {\n"; - code += " throw StateError('Invalid value $value for bit flag enum "; + if (permit_zero) { + code += " if (value == 0) {\n"; + code += " return " + name + "._(0);\n"; + code += " } else {\n"; + } + code += " throw StateError('Invalid value $value for bit flag enum "; code += name + "');\n"; + if (permit_zero) { code += " }\n"; } code += " }\n"; code += " return result;\n"; @@ -538,13 +548,11 @@ class DartGenerator : public BaseGenerator { if (!struct_def.fixed && !defaultValue.empty()) { if (IsEnum(field.value.type)) { auto &enum_def = *field.value.type.enum_def; - for (auto enumIt = enum_def.Vals().begin(); - enumIt != enum_def.Vals().end(); ++enumIt) { - auto &ev = **enumIt; - if (enum_def.ToString(ev) == defaultValue) { - constructor_args += " = " + enum_def.name + "." + ev.name; - break; - } + if (auto val = enum_def.FindByValue(defaultValue)) { + constructor_args += " = " + enum_def.name + "." + val->name; + } else { + constructor_args += + " = const " + enum_def.name + "._(" + defaultValue + ")"; } } else { constructor_args += " = " + defaultValue; @@ -870,7 +878,7 @@ class DartGenerator : public BaseGenerator { code += " void begin() {\n"; code += " fbBuilder.startTable(" + - NumToString(non_deprecated_fields.size()) + ");\n"; + NumToString(struct_def.fields.vec.size()) + ");\n"; code += " }\n\n"; for (auto it = non_deprecated_fields.begin(); @@ -1051,8 +1059,8 @@ class DartGenerator : public BaseGenerator { code += StructObjectBuilderBody(non_deprecated_fields, prependUnderscore, pack); } else { - code += TableObjectBuilderBody(non_deprecated_fields, prependUnderscore, - pack); + code += TableObjectBuilderBody(struct_def, non_deprecated_fields, + prependUnderscore, pack); } return code; } @@ -1089,11 +1097,12 @@ class DartGenerator : public BaseGenerator { } std::string TableObjectBuilderBody( + const StructDef &struct_def, const std::vector> &non_deprecated_fields, bool prependUnderscore = true, bool pack = false) { std::string code; code += " fbBuilder.startTable(" + - NumToString(non_deprecated_fields.size()) + ");\n"; + NumToString(struct_def.fields.vec.size()) + ");\n"; for (auto it = non_deprecated_fields.begin(); it != non_deprecated_fields.end(); ++it) { diff --git a/src/idl_gen_ts.cpp b/src/idl_gen_ts.cpp index b1cb55862..62a3f8218 100644 --- a/src/idl_gen_ts.cpp +++ b/src/idl_gen_ts.cpp @@ -237,7 +237,16 @@ class TsGenerator : public BaseGenerator { } else { code += " " + ev.name; code += " = "; - code += enum_def.ToString(ev); + // Unfortunately, because typescript does not support bigint enums, + // for 64-bit enums, we instead map the enum names to strings. + switch (enum_def.underlying_type.base_type) { + case BASE_TYPE_LONG: + case BASE_TYPE_ULONG: { + code += "'" + enum_def.ToString(ev) + "'"; + break; + } + default: code += enum_def.ToString(ev); + } } code += (it + 1) != enum_def.Vals().end() ? ",\n" : "\n"; @@ -299,11 +308,23 @@ class TsGenerator : public BaseGenerator { const auto &value = field.value; if (value.type.enum_def && value.type.base_type != BASE_TYPE_UNION && value.type.base_type != BASE_TYPE_VECTOR) { - if (auto val = value.type.enum_def->FindByValue(value.constant)) { - return AddImport(imports, *value.type.enum_def, *value.type.enum_def) + - "." + val->name; - } else { - return value.constant; + // If the value is an enum with a 64-bit base type, we have to just + // return the bigint value directly since typescript does not support + // enums with bigint backing types. + switch (value.type.base_type) { + case BASE_TYPE_LONG: + case BASE_TYPE_ULONG: { + return "BigInt('" + value.constant + "')"; + } + default: { + if (auto val = value.type.enum_def->FindByValue(value.constant)) { + return AddImport(imports, *value.type.enum_def, + *value.type.enum_def) + + "." + val->name; + } else { + return value.constant; + } + } } } diff --git a/tests/FlatBuffers.Test.Swift/Tests/FlatBuffers.Test.SwiftTests/monster_test_generated.swift b/tests/FlatBuffers.Test.Swift/Tests/FlatBuffers.Test.SwiftTests/monster_test_generated.swift index ef73b2420..c8a050261 100644 --- a/tests/FlatBuffers.Test.Swift/Tests/FlatBuffers.Test.SwiftTests/monster_test_generated.swift +++ b/tests/FlatBuffers.Test.Swift/Tests/FlatBuffers.Test.SwiftTests/monster_test_generated.swift @@ -56,6 +56,29 @@ extension MyGame_Example_Race: Encodable { } } +public enum MyGame_Example_LongEnum: UInt64, Enum, Verifiable { + public typealias T = UInt64 + public static var byteSize: Int { return MemoryLayout.size } + public var value: UInt64 { return self.rawValue } + case longone = 2 + case longtwo = 4 + case longbig = 1099511627776 + + public static var max: MyGame_Example_LongEnum { return .longbig } + public static var min: MyGame_Example_LongEnum { return .longone } +} + +extension MyGame_Example_LongEnum: Encodable { + public func encode(to encoder: Encoder) throws { + var container = encoder.singleValueContainer() + switch self { + case .longone: try container.encode("LongOne") + case .longtwo: try container.encode("LongTwo") + case .longbig: try container.encode("LongBig") + } + } +} + public enum MyGame_Example_Any_: UInt8, UnionEnum { public typealias T = UInt8 @@ -1087,6 +1110,8 @@ public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPac case testrequirednestedflatbuffer = 102 case scalarKeySortedTables = 104 case nativeInline = 106 + case longEnumNonEnumDefault = 108 + case longEnumNormalDefault = 110 var v: Int32 { Int32(self.rawValue) } var p: VOffset { self.rawValue } } @@ -1213,7 +1238,11 @@ public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPac public func scalarKeySortedTablesBy(key: UInt16) -> MyGame_Example_Stat? { let o = _accessor.offset(VTOFFSET.scalarKeySortedTables.v); return o == 0 ? nil : MyGame_Example_Stat.lookupByKey(vector: _accessor.vector(at: o), key: key, fbb: _accessor.bb) } public var nativeInline: MyGame_Example_Test? { let o = _accessor.offset(VTOFFSET.nativeInline.v); return o == 0 ? nil : _accessor.readBuffer(of: MyGame_Example_Test.self, at: o) } public var mutableNativeInline: MyGame_Example_Test_Mutable? { let o = _accessor.offset(VTOFFSET.nativeInline.v); return o == 0 ? nil : MyGame_Example_Test_Mutable(_accessor.bb, o: o + _accessor.postion) } - public static func startMonster(_ fbb: inout FlatBufferBuilder) -> UOffset { fbb.startTable(with: 52) } + public var longEnumNonEnumDefault: MyGame_Example_LongEnum { let o = _accessor.offset(VTOFFSET.longEnumNonEnumDefault.v); return o == 0 ? .longone : MyGame_Example_LongEnum(rawValue: _accessor.readBuffer(of: UInt64.self, at: o)) ?? .longone } + @discardableResult public func mutate(longEnumNonEnumDefault: MyGame_Example_LongEnum) -> Bool {let o = _accessor.offset(VTOFFSET.longEnumNonEnumDefault.v); return _accessor.mutate(longEnumNonEnumDefault.rawValue, index: o) } + public var longEnumNormalDefault: MyGame_Example_LongEnum { let o = _accessor.offset(VTOFFSET.longEnumNormalDefault.v); return o == 0 ? .longone : MyGame_Example_LongEnum(rawValue: _accessor.readBuffer(of: UInt64.self, at: o)) ?? .longone } + @discardableResult public func mutate(longEnumNormalDefault: MyGame_Example_LongEnum) -> Bool {let o = _accessor.offset(VTOFFSET.longEnumNormalDefault.v); return _accessor.mutate(longEnumNormalDefault.rawValue, index: o) } + public static func startMonster(_ fbb: inout FlatBufferBuilder) -> UOffset { fbb.startTable(with: 54) } public static func add(pos: MyGame_Example_Vec3?, _ fbb: inout FlatBufferBuilder) { guard let pos = pos else { return }; fbb.create(struct: pos, position: VTOFFSET.pos.p) } public static func add(mana: Int16, _ fbb: inout FlatBufferBuilder) { fbb.add(element: mana, def: 150, at: VTOFFSET.mana.p) } public static func add(hp: Int16, _ fbb: inout FlatBufferBuilder) { fbb.add(element: hp, def: 100, at: VTOFFSET.hp.p) } @@ -1275,6 +1304,8 @@ public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPac public static func addVectorOf(testrequirednestedflatbuffer: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: testrequirednestedflatbuffer, at: VTOFFSET.testrequirednestedflatbuffer.p) } public static func addVectorOf(scalarKeySortedTables: Offset, _ fbb: inout FlatBufferBuilder) { fbb.add(offset: scalarKeySortedTables, at: VTOFFSET.scalarKeySortedTables.p) } public static func add(nativeInline: MyGame_Example_Test?, _ fbb: inout FlatBufferBuilder) { guard let nativeInline = nativeInline else { return }; fbb.create(struct: nativeInline, position: VTOFFSET.nativeInline.p) } + public static func add(longEnumNonEnumDefault: MyGame_Example_LongEnum, _ fbb: inout FlatBufferBuilder) { fbb.add(element: longEnumNonEnumDefault.rawValue, def: 0, at: VTOFFSET.longEnumNonEnumDefault.p) } + public static func add(longEnumNormalDefault: MyGame_Example_LongEnum, _ fbb: inout FlatBufferBuilder) { fbb.add(element: longEnumNormalDefault.rawValue, def: 2, at: VTOFFSET.longEnumNormalDefault.p) } public static func endMonster(_ fbb: inout FlatBufferBuilder, start: UOffset) -> Offset { let end = Offset(offset: fbb.endTable(at: start)); fbb.require(table: end, fields: [10]); return end } public static func createMonster( _ fbb: inout FlatBufferBuilder, @@ -1328,7 +1359,9 @@ public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPac signedEnum: MyGame_Example_Race = .none_, testrequirednestedflatbufferVectorOffset testrequirednestedflatbuffer: Offset = Offset(), scalarKeySortedTablesVectorOffset scalarKeySortedTables: Offset = Offset(), - nativeInline: MyGame_Example_Test? = nil + nativeInline: MyGame_Example_Test? = nil, + longEnumNonEnumDefault: MyGame_Example_LongEnum = .longone, + longEnumNormalDefault: MyGame_Example_LongEnum = .longone ) -> Offset { let __start = MyGame_Example_Monster.startMonster(&fbb) MyGame_Example_Monster.add(pos: pos, &fbb) @@ -1382,6 +1415,8 @@ public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPac MyGame_Example_Monster.addVectorOf(testrequirednestedflatbuffer: testrequirednestedflatbuffer, &fbb) MyGame_Example_Monster.addVectorOf(scalarKeySortedTables: scalarKeySortedTables, &fbb) MyGame_Example_Monster.add(nativeInline: nativeInline, &fbb) + MyGame_Example_Monster.add(longEnumNonEnumDefault: longEnumNonEnumDefault, &fbb) + MyGame_Example_Monster.add(longEnumNormalDefault: longEnumNormalDefault, &fbb) return MyGame_Example_Monster.endMonster(&fbb, start: __start) } public static func sortVectorOfMonster(offsets:[Offset], _ fbb: inout FlatBufferBuilder) -> Offset { @@ -1539,6 +1574,8 @@ public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPac MyGame_Example_Monster.addVectorOf(testrequirednestedflatbuffer: __testrequirednestedflatbuffer, &builder) MyGame_Example_Monster.addVectorOf(scalarKeySortedTables: __scalarKeySortedTables, &builder) MyGame_Example_Monster.add(nativeInline: obj.nativeInline, &builder) + MyGame_Example_Monster.add(longEnumNonEnumDefault: obj.longEnumNonEnumDefault, &builder) + MyGame_Example_Monster.add(longEnumNormalDefault: obj.longEnumNormalDefault, &builder) return MyGame_Example_Monster.endMonster(&builder, start: __root) } @@ -1625,6 +1662,8 @@ public struct MyGame_Example_Monster: FlatBufferObject, Verifiable, ObjectAPIPac try _v.visit(field: VTOFFSET.testrequirednestedflatbuffer.p, fieldName: "testrequirednestedflatbuffer", required: false, type: ForwardOffset>.self) try _v.visit(field: VTOFFSET.scalarKeySortedTables.p, fieldName: "scalarKeySortedTables", required: false, type: ForwardOffset, MyGame_Example_Stat>>.self) try _v.visit(field: VTOFFSET.nativeInline.p, fieldName: "nativeInline", required: false, type: MyGame_Example_Test.self) + try _v.visit(field: VTOFFSET.longEnumNonEnumDefault.p, fieldName: "longEnumNonEnumDefault", required: false, type: MyGame_Example_LongEnum.self) + try _v.visit(field: VTOFFSET.longEnumNormalDefault.p, fieldName: "longEnumNormalDefault", required: false, type: MyGame_Example_LongEnum.self) _v.finish() } } @@ -1683,6 +1722,8 @@ extension MyGame_Example_Monster: Encodable { case testrequirednestedflatbuffer = "testrequirednestedflatbuffer" case scalarKeySortedTables = "scalar_key_sorted_tables" case nativeInline = "native_inline" + case longEnumNonEnumDefault = "long_enum_non_enum_default" + case longEnumNormalDefault = "long_enum_normal_default" } public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) @@ -1894,6 +1935,12 @@ extension MyGame_Example_Monster: Encodable { } } try container.encodeIfPresent(nativeInline, forKey: .nativeInline) + if longEnumNonEnumDefault != .longone { + try container.encodeIfPresent(longEnumNonEnumDefault, forKey: .longEnumNonEnumDefault) + } + if longEnumNormalDefault != .longone { + try container.encodeIfPresent(longEnumNormalDefault, forKey: .longEnumNormalDefault) + } } } @@ -1947,6 +1994,8 @@ public class MyGame_Example_MonsterT: NativeObject { public var testrequirednestedflatbuffer: [UInt8] public var scalarKeySortedTables: [MyGame_Example_StatT?] public var nativeInline: MyGame_Example_Test? + public var longEnumNonEnumDefault: MyGame_Example_LongEnum + public var longEnumNormalDefault: MyGame_Example_LongEnum public init(_ _t: inout MyGame_Example_Monster) { pos = _t.pos @@ -2097,6 +2146,8 @@ public class MyGame_Example_MonsterT: NativeObject { scalarKeySortedTables.append(__v_?.unpack()) } nativeInline = _t.nativeInline + longEnumNonEnumDefault = _t.longEnumNonEnumDefault + longEnumNormalDefault = _t.longEnumNormalDefault } public init() { @@ -2145,6 +2196,8 @@ public class MyGame_Example_MonsterT: NativeObject { testrequirednestedflatbuffer = [] scalarKeySortedTables = [] nativeInline = MyGame_Example_Test() + longEnumNonEnumDefault = .longone + longEnumNormalDefault = .longone } public func serialize() -> ByteBuffer { return serialize(type: MyGame_Example_Monster.self) } diff --git a/tests/FlatBuffers.Test/FlatBuffers.Core.Test.csproj b/tests/FlatBuffers.Test/FlatBuffers.Core.Test.csproj index 813616e9a..6cd4e7870 100644 --- a/tests/FlatBuffers.Test/FlatBuffers.Core.Test.csproj +++ b/tests/FlatBuffers.Test/FlatBuffers.Core.Test.csproj @@ -95,6 +95,9 @@ MyGame\Example\NestedStruct.cs + + MyGame\Example\LongEnum.cs + MyGame\Example\TestEnum.cs diff --git a/tests/MyGame/Example/LongEnum.cs b/tests/MyGame/Example/LongEnum.cs new file mode 100644 index 000000000..555109c62 --- /dev/null +++ b/tests/MyGame/Example/LongEnum.cs @@ -0,0 +1,18 @@ +// +// automatically generated by the FlatBuffers compiler, do not modify +// + +namespace MyGame.Example +{ + +[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] +[System.FlagsAttribute] +public enum LongEnum : ulong +{ + LongOne = 2, + LongTwo = 4, + LongBig = 1099511627776, +}; + + +} diff --git a/tests/MyGame/Example/LongEnum.go b/tests/MyGame/Example/LongEnum.go new file mode 100644 index 000000000..c7c643276 --- /dev/null +++ b/tests/MyGame/Example/LongEnum.go @@ -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) + ")" +} diff --git a/tests/MyGame/Example/LongEnum.java b/tests/MyGame/Example/LongEnum.java new file mode 100644 index 000000000..4640f08aa --- /dev/null +++ b/tests/MyGame/Example/LongEnum.java @@ -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; +} + diff --git a/tests/MyGame/Example/LongEnum.kt b/tests/MyGame/Example/LongEnum.kt new file mode 100644 index 000000000..ecb5aabf9 --- /dev/null +++ b/tests/MyGame/Example/LongEnum.kt @@ -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 + } +} diff --git a/tests/MyGame/Example/LongEnum.lua b/tests/MyGame/Example/LongEnum.lua new file mode 100644 index 000000000..00fb6790f --- /dev/null +++ b/tests/MyGame/Example/LongEnum.lua @@ -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 \ No newline at end of file diff --git a/tests/MyGame/Example/LongEnum.php b/tests/MyGame/Example/LongEnum.php new file mode 100644 index 000000000..900f0d3e4 --- /dev/null +++ b/tests/MyGame/Example/LongEnum.php @@ -0,0 +1,25 @@ +"LongOne", + LongEnum::LongTwo=>"LongTwo", + LongEnum::LongBig=>"LongBig", + ); + + public static function Name($e) + { + if (!isset(self::$names[$e])) { + throw new \Exception(); + } + return self::$names[$e]; + } +} diff --git a/tests/MyGame/Example/LongEnum.py b/tests/MyGame/Example/LongEnum.py new file mode 100644 index 000000000..f45726ad2 --- /dev/null +++ b/tests/MyGame/Example/LongEnum.py @@ -0,0 +1,8 @@ +# automatically generated by the FlatBuffers compiler, do not modify + +# namespace: Example + +class LongEnum(object): + LongOne = 2 + LongTwo = 4 + LongBig = 1099511627776 diff --git a/tests/MyGame/Example/Monster.cs b/tests/MyGame/Example/Monster.cs index fa44bcaa0..4a1138986 100644 --- a/tests/MyGame/Example/Monster.cs +++ b/tests/MyGame/Example/Monster.cs @@ -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 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 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[] 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 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 EndMonster(FlatBufferBuilder builder) { int o = builder.EndTable(); builder.Required(o, 10); // name @@ -571,6 +581,8 @@ public struct Monster : IFlatbufferObject _o.ScalarKeySortedTables = new List(); 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 Pack(FlatBufferBuilder builder, MonsterT _o) { if (_o == null) return default(Offset); @@ -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 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) { diff --git a/tests/MyGame/Example/Monster.go b/tests/MyGame/Example/Monster.go index e983e1067..067be0dfb 100644 --- a/tests/MyGame/Example/Monster.go +++ b/tests/MyGame/Example/Monster.go @@ -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() } diff --git a/tests/MyGame/Example/Monster.java b/tests/MyGame/Example/Monster.java index f09164398..aeae25737 100644 --- a/tests/MyGame/Example/Monster.java +++ b/tests/MyGame/Example/Monster.java @@ -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); } } diff --git a/tests/MyGame/Example/Monster.kt b/tests/MyGame/Example/Monster.kt index 769da3ae7..1abe05c05 100644 --- a/tests/MyGame/Example/Monster.kt +++ b/tests/MyGame/Example/Monster.kt @@ -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) diff --git a/tests/MyGame/Example/Monster.lua b/tests/MyGame/Example/Monster.lua index 0f73dbc65..75108e51e 100644 --- a/tests/MyGame/Example/Monster.lua +++ b/tests/MyGame/Example/Monster.lua @@ -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 diff --git a/tests/MyGame/Example/Monster.php b/tests/MyGame/Example/Monster.php index 509dba0d7..5f8ad5af5 100644 --- a/tests/MyGame/Example/Monster.php +++ b/tests/MyGame/Example/Monster.php @@ -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 diff --git a/tests/MyGame/Example/Monster.py b/tests/MyGame/Example/Monster.py index 0ceb3d591..0044f8d18 100644 --- a/tests/MyGame/Example/Monster.py +++ b/tests/MyGame/Example/Monster.py @@ -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 diff --git a/tests/MyGame/Example/MonsterT.java b/tests/MyGame/Example/MonsterT.java index e327109e2..06804c78a 100644 --- a/tests/MyGame/Example/MonsterT.java +++ b/tests/MyGame/Example/MonsterT.java @@ -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(); diff --git a/tests/cpp17/generated_cpp17/monster_test_generated.h b/tests/cpp17/generated_cpp17/monster_test_generated.h index 9ddeeb549..442ba5088 100644 --- a/tests/cpp17/generated_cpp17/monster_test_generated.h +++ b/tests/cpp17/generated_cpp17/monster_test_generated.h @@ -160,6 +160,33 @@ inline const char *EnumNameRace(Race e) { return EnumNamesRace()[index]; } +enum class LongEnum : uint64_t { + LongOne = 2ULL, + LongTwo = 4ULL, + LongBig = 1099511627776ULL, + NONE = 0, + ANY = 1099511627782ULL +}; +FLATBUFFERS_DEFINE_BITMASK_OPERATORS(LongEnum, uint64_t) + +inline const LongEnum (&EnumValuesLongEnum())[3] { + static const LongEnum values[] = { + LongEnum::LongOne, + LongEnum::LongTwo, + LongEnum::LongBig + }; + return values; +} + +inline const char *EnumNameLongEnum(LongEnum e) { + switch (e) { + case LongEnum::LongOne: return "LongOne"; + case LongEnum::LongTwo: return "LongTwo"; + case LongEnum::LongBig: return "LongBig"; + default: return ""; + } +} + enum class Any : uint8_t { NONE = 0, Monster = 1, @@ -1239,6 +1266,8 @@ struct MonsterT : public flatbuffers::NativeTable { std::vector testrequirednestedflatbuffer{}; std::vector> scalar_key_sorted_tables{}; MyGame::Example::Test native_inline{}; + MyGame::Example::LongEnum long_enum_non_enum_default = static_cast(0); + MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum::LongOne; MonsterT() = default; MonsterT(const MonsterT &o); MonsterT(MonsterT&&) FLATBUFFERS_NOEXCEPT = default; @@ -1304,7 +1333,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { VT_SIGNED_ENUM = 100, VT_TESTREQUIREDNESTEDFLATBUFFER = 102, VT_SCALAR_KEY_SORTED_TABLES = 104, - VT_NATIVE_INLINE = 106 + VT_NATIVE_INLINE = 106, + VT_LONG_ENUM_NON_ENUM_DEFAULT = 108, + VT_LONG_ENUM_NORMAL_DEFAULT = 110 }; const MyGame::Example::Vec3 *pos() const { return GetStruct(VT_POS); @@ -1649,6 +1680,18 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { MyGame::Example::Test *mutable_native_inline() { return GetStruct(VT_NATIVE_INLINE); } + MyGame::Example::LongEnum long_enum_non_enum_default() const { + return static_cast(GetField(VT_LONG_ENUM_NON_ENUM_DEFAULT, 0)); + } + bool mutate_long_enum_non_enum_default(MyGame::Example::LongEnum _long_enum_non_enum_default = static_cast(0)) { + return SetField(VT_LONG_ENUM_NON_ENUM_DEFAULT, static_cast(_long_enum_non_enum_default), 0); + } + MyGame::Example::LongEnum long_enum_normal_default() const { + return static_cast(GetField(VT_LONG_ENUM_NORMAL_DEFAULT, 2ULL)); + } + bool mutate_long_enum_normal_default(MyGame::Example::LongEnum _long_enum_normal_default = static_cast(2ULL)) { + return SetField(VT_LONG_ENUM_NORMAL_DEFAULT, static_cast(_long_enum_normal_default), 2ULL); + } template auto get_field() const { if constexpr (Index == 0) return pos(); @@ -1702,6 +1745,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { else if constexpr (Index == 48) return testrequirednestedflatbuffer(); else if constexpr (Index == 49) return scalar_key_sorted_tables(); else if constexpr (Index == 50) return native_inline(); + else if constexpr (Index == 51) return long_enum_non_enum_default(); + else if constexpr (Index == 52) return long_enum_normal_default(); else static_assert(Index != Index, "Invalid Field Index"); } bool Verify(flatbuffers::Verifier &verifier) const { @@ -1793,6 +1838,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.VerifyVector(scalar_key_sorted_tables()) && verifier.VerifyVectorOfTables(scalar_key_sorted_tables()) && VerifyField(verifier, VT_NATIVE_INLINE, 2) && + VerifyField(verifier, VT_LONG_ENUM_NON_ENUM_DEFAULT, 8) && + VerifyField(verifier, VT_LONG_ENUM_NORMAL_DEFAULT, 8) && verifier.EndTable(); } MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; @@ -1981,6 +2028,12 @@ struct MonsterBuilder { void add_native_inline(const MyGame::Example::Test *native_inline) { fbb_.AddStruct(Monster::VT_NATIVE_INLINE, native_inline); } + void add_long_enum_non_enum_default(MyGame::Example::LongEnum long_enum_non_enum_default) { + fbb_.AddElement(Monster::VT_LONG_ENUM_NON_ENUM_DEFAULT, static_cast(long_enum_non_enum_default), 0); + } + void add_long_enum_normal_default(MyGame::Example::LongEnum long_enum_normal_default) { + fbb_.AddElement(Monster::VT_LONG_ENUM_NORMAL_DEFAULT, static_cast(long_enum_normal_default), 2ULL); + } explicit MonsterBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); @@ -2045,8 +2098,12 @@ inline flatbuffers::Offset CreateMonster( MyGame::Example::Race signed_enum = MyGame::Example::Race::None, flatbuffers::Offset> testrequirednestedflatbuffer = 0, flatbuffers::Offset>> scalar_key_sorted_tables = 0, - const MyGame::Example::Test *native_inline = nullptr) { + const MyGame::Example::Test *native_inline = nullptr, + MyGame::Example::LongEnum long_enum_non_enum_default = static_cast(0), + MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum::LongOne) { MonsterBuilder builder_(_fbb); + builder_.add_long_enum_normal_default(long_enum_normal_default); + builder_.add_long_enum_non_enum_default(long_enum_non_enum_default); builder_.add_non_owning_reference(non_owning_reference); builder_.add_co_owning_reference(co_owning_reference); builder_.add_single_weak_reference(single_weak_reference); @@ -2106,7 +2163,7 @@ struct Monster::Traits { static auto constexpr Create = CreateMonster; static constexpr auto name = "Monster"; static constexpr auto fully_qualified_name = "MyGame.Example.Monster"; - static constexpr size_t fields_number = 51; + static constexpr size_t fields_number = 53; static constexpr std::array field_names = { "pos", "mana", @@ -2158,7 +2215,9 @@ struct Monster::Traits { "signed_enum", "testrequirednestedflatbuffer", "scalar_key_sorted_tables", - "native_inline" + "native_inline", + "long_enum_non_enum_default", + "long_enum_normal_default" }; template using FieldType = decltype(std::declval().get_field()); @@ -2216,7 +2275,9 @@ inline flatbuffers::Offset CreateMonsterDirect( MyGame::Example::Race signed_enum = MyGame::Example::Race::None, const std::vector *testrequirednestedflatbuffer = nullptr, std::vector> *scalar_key_sorted_tables = nullptr, - const MyGame::Example::Test *native_inline = nullptr) { + const MyGame::Example::Test *native_inline = nullptr, + MyGame::Example::LongEnum long_enum_non_enum_default = static_cast(0), + MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum::LongOne) { auto name__ = name ? _fbb.CreateString(name) : 0; auto inventory__ = inventory ? _fbb.CreateVector(*inventory) : 0; auto test4__ = test4 ? _fbb.CreateVectorOfStructs(*test4) : 0; @@ -2290,7 +2351,9 @@ inline flatbuffers::Offset CreateMonsterDirect( signed_enum, testrequirednestedflatbuffer__, scalar_key_sorted_tables__, - native_inline); + native_inline, + long_enum_non_enum_default, + long_enum_normal_default); } flatbuffers::Offset CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); @@ -2763,7 +2826,9 @@ inline MonsterT::MonsterT(const MonsterT &o) vector_of_enums(o.vector_of_enums), signed_enum(o.signed_enum), testrequirednestedflatbuffer(o.testrequirednestedflatbuffer), - native_inline(o.native_inline) { + native_inline(o.native_inline), + long_enum_non_enum_default(o.long_enum_non_enum_default), + long_enum_normal_default(o.long_enum_normal_default) { testarrayoftables.reserve(o.testarrayoftables.size()); for (const auto &testarrayoftables_ : o.testarrayoftables) { testarrayoftables.emplace_back((testarrayoftables_) ? new MyGame::Example::MonsterT(*testarrayoftables_) : nullptr); } vector_of_referrables.reserve(o.vector_of_referrables.size()); @@ -2825,6 +2890,8 @@ inline MonsterT &MonsterT::operator=(MonsterT o) FLATBUFFERS_NOEXCEPT { std::swap(testrequirednestedflatbuffer, o.testrequirednestedflatbuffer); std::swap(scalar_key_sorted_tables, o.scalar_key_sorted_tables); std::swap(native_inline, o.native_inline); + std::swap(long_enum_non_enum_default, o.long_enum_non_enum_default); + std::swap(long_enum_normal_default, o.long_enum_normal_default); return *this; } @@ -2895,6 +2962,8 @@ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_non_owning_ { auto _e = testrequirednestedflatbuffer(); if (_e) { _o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } } { auto _e = scalar_key_sorted_tables(); if (_e) { _o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->scalar_key_sorted_tables[_i]) { _e->Get(_i)->UnPackTo(_o->scalar_key_sorted_tables[_i].get(), _resolver); } else { _o->scalar_key_sorted_tables[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } } { auto _e = native_inline(); if (_e) _o->native_inline = *_e; } + { auto _e = long_enum_non_enum_default(); _o->long_enum_non_enum_default = _e; } + { auto _e = long_enum_normal_default(); _o->long_enum_normal_default = _e; } } inline flatbuffers::Offset Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -2956,6 +3025,8 @@ inline flatbuffers::Offset CreateMonster(flatbuffers::FlatBufferBuilder auto _testrequirednestedflatbuffer = _o->testrequirednestedflatbuffer.size() ? _fbb.CreateVector(_o->testrequirednestedflatbuffer) : 0; auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _native_inline = &_o->native_inline; + auto _long_enum_non_enum_default = _o->long_enum_non_enum_default; + auto _long_enum_normal_default = _o->long_enum_normal_default; return MyGame::Example::CreateMonster( _fbb, _pos, @@ -3008,7 +3079,9 @@ inline flatbuffers::Offset CreateMonster(flatbuffers::FlatBufferBuilder _signed_enum, _testrequirednestedflatbuffer, _scalar_key_sorted_tables, - _native_inline); + _native_inline, + _long_enum_non_enum_default, + _long_enum_normal_default); } inline TypeAliasesT *TypeAliases::UnPack(const flatbuffers::resolver_function_t *_resolver) const { @@ -3453,6 +3526,27 @@ inline const flatbuffers::TypeTable *RaceTypeTable() { return &tt; } +inline const flatbuffers::TypeTable *LongEnumTypeTable() { + static const flatbuffers::TypeCode type_codes[] = { + { flatbuffers::ET_ULONG, 0, 0 }, + { flatbuffers::ET_ULONG, 0, 0 }, + { flatbuffers::ET_ULONG, 0, 0 } + }; + static const flatbuffers::TypeFunction type_refs[] = { + MyGame::Example::LongEnumTypeTable + }; + static const int64_t values[] = { 2ULL, 4ULL, 1099511627776ULL }; + static const char * const names[] = { + "LongOne", + "LongTwo", + "LongBig" + }; + static const flatbuffers::TypeTable tt = { + flatbuffers::ST_ENUM, 3, type_codes, type_refs, nullptr, values, names + }; + return &tt; +} + inline const flatbuffers::TypeTable *AnyTypeTable() { static const flatbuffers::TypeCode type_codes[] = { { flatbuffers::ET_SEQUENCE, 0, -1 }, @@ -3726,7 +3820,9 @@ inline const flatbuffers::TypeTable *MonsterTypeTable() { { flatbuffers::ET_CHAR, 0, 11 }, { flatbuffers::ET_UCHAR, 1, -1 }, { flatbuffers::ET_SEQUENCE, 1, 5 }, - { flatbuffers::ET_SEQUENCE, 0, 3 } + { flatbuffers::ET_SEQUENCE, 0, 3 }, + { flatbuffers::ET_ULONG, 0, 12 }, + { flatbuffers::ET_ULONG, 0, 12 } }; static const flatbuffers::TypeFunction type_refs[] = { MyGame::Example::Vec3TypeTable, @@ -3740,7 +3836,8 @@ inline const flatbuffers::TypeTable *MonsterTypeTable() { MyGame::Example::ReferrableTypeTable, MyGame::Example::AnyUniqueAliasesTypeTable, MyGame::Example::AnyAmbiguousAliasesTypeTable, - MyGame::Example::RaceTypeTable + MyGame::Example::RaceTypeTable, + MyGame::Example::LongEnumTypeTable }; static const char * const names[] = { "pos", @@ -3794,10 +3891,12 @@ inline const flatbuffers::TypeTable *MonsterTypeTable() { "signed_enum", "testrequirednestedflatbuffer", "scalar_key_sorted_tables", - "native_inline" + "native_inline", + "long_enum_non_enum_default", + "long_enum_normal_default" }; static const flatbuffers::TypeTable tt = { - flatbuffers::ST_TABLE, 52, type_codes, type_refs, nullptr, nullptr, names + flatbuffers::ST_TABLE, 54, type_codes, type_refs, nullptr, nullptr, names }; return &tt; } diff --git a/tests/monster_extra_my_game_generated.dart b/tests/monster_extra_my_game_generated.dart index ed06ebba8..238ab8f28 100644 --- a/tests/monster_extra_my_game_generated.dart +++ b/tests/monster_extra_my_game_generated.dart @@ -83,7 +83,7 @@ class MonsterExtraT implements fb.Packable { : fbBuilder.writeListFloat64(dvec!); final int? fvecOffset = fvec == null ? null : fbBuilder.writeListFloat32(fvec!); - fbBuilder.startTable(10); + fbBuilder.startTable(11); fbBuilder.addFloat64(0, d0); fbBuilder.addFloat64(1, d1); fbBuilder.addFloat64(2, d2); @@ -117,7 +117,7 @@ class MonsterExtraBuilder { final fb.Builder fbBuilder; void begin() { - fbBuilder.startTable(10); + fbBuilder.startTable(11); } int addD0(double? d0) { @@ -208,7 +208,7 @@ class MonsterExtraObjectBuilder extends fb.ObjectBuilder { : fbBuilder.writeListFloat64(_dvec!); final int? fvecOffset = _fvec == null ? null : fbBuilder.writeListFloat32(_fvec!); - fbBuilder.startTable(10); + fbBuilder.startTable(11); fbBuilder.addFloat64(0, _d0); fbBuilder.addFloat64(1, _d1); fbBuilder.addFloat64(2, _d2); diff --git a/tests/monster_test.bfbs b/tests/monster_test.bfbs index f7bcb2fc6..0eb130a54 100644 Binary files a/tests/monster_test.bfbs and b/tests/monster_test.bfbs differ diff --git a/tests/monster_test.fbs b/tests/monster_test.fbs index f177bc179..b28ddc85a 100644 --- a/tests/monster_test.fbs +++ b/tests/monster_test.fbs @@ -31,6 +31,14 @@ enum Race:byte { 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 } @@ -125,6 +133,10 @@ table Monster { 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/tests/monster_test.schema.json b/tests/monster_test.schema.json index 246e8e196..7517269fa 100644 --- a/tests/monster_test.schema.json +++ b/tests/monster_test.schema.json @@ -13,6 +13,10 @@ "type" : "string", "enum": ["None", "Human", "Dwarf", "Elf"] }, + "MyGame_Example_LongEnum" : { + "type" : "string", + "enum": ["LongOne", "LongTwo", "LongBig"] + }, "MyGame_Example_Any" : { "type" : "string", "enum": ["NONE", "Monster", "TestSimpleTableWithEnum", "MyGame_Example2_Monster"] @@ -321,6 +325,12 @@ }, "native_inline" : { "$ref" : "#/definitions/MyGame_Example_Test" + }, + "long_enum_non_enum_default" : { + "$ref" : "#/definitions/MyGame_Example_LongEnum" + }, + "long_enum_normal_default" : { + "$ref" : "#/definitions/MyGame_Example_LongEnum" } }, "required" : ["name"], diff --git a/tests/monster_test/mod.rs b/tests/monster_test/mod.rs index 3a4f82125..fdbc26b99 100644 --- a/tests/monster_test/mod.rs +++ b/tests/monster_test/mod.rs @@ -7,6 +7,8 @@ pub mod my_game { pub use self::color_generated::*; mod race_generated; pub use self::race_generated::*; + mod long_enum_generated; + pub use self::long_enum_generated::*; mod any_generated; pub use self::any_generated::*; mod any_unique_aliases_generated; diff --git a/tests/monster_test/my_game/example/long_enum_generated.rs b/tests/monster_test/my_game/example/long_enum_generated.rs new file mode 100644 index 000000000..b22f82693 --- /dev/null +++ b/tests/monster_test/my_game/example/long_enum_generated.rs @@ -0,0 +1,63 @@ +// automatically generated by the FlatBuffers compiler, do not modify +extern crate flatbuffers; +use std::mem; +use std::cmp::Ordering; +use self::flatbuffers::{EndianScalar, Follow}; +use super::*; +#[allow(non_upper_case_globals)] +mod bitflags_long_enum { + flatbuffers::bitflags::bitflags! { + #[derive(Default)] + pub struct LongEnum: u64 { + const LongOne = 2; + const LongTwo = 4; + const LongBig = 1099511627776; + } + } +} +pub use self::bitflags_long_enum::LongEnum; + +impl<'a> flatbuffers::Follow<'a> for LongEnum { + type Inner = Self; + #[inline] + fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + let b = unsafe { + flatbuffers::read_scalar_at::(buf, loc) + }; + unsafe { Self::from_bits_unchecked(b) } + } +} + +impl flatbuffers::Push for LongEnum { + type Output = LongEnum; + #[inline] + fn push(&self, dst: &mut [u8], _rest: &[u8]) { + unsafe { flatbuffers::emplace_scalar::(dst, self.bits()); } + } +} + +impl flatbuffers::EndianScalar for LongEnum { + #[inline] + fn to_little_endian(self) -> Self { + let b = u64::to_le(self.bits()); + unsafe { Self::from_bits_unchecked(b) } + } + #[inline] + #[allow(clippy::wrong_self_convention)] + fn from_little_endian(self) -> Self { + let b = u64::from_le(self.bits()); + unsafe { Self::from_bits_unchecked(b) } + } +} + +impl<'a> flatbuffers::Verifiable for LongEnum { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + u64::run_verifier(v, pos) + } +} + +impl flatbuffers::SimpleToVerifyInSlice for LongEnum {} diff --git a/tests/monster_test/my_game/example/monster_generated.rs b/tests/monster_test/my_game/example/monster_generated.rs index cc567fdd8..58e762859 100644 --- a/tests/monster_test/my_game/example/monster_generated.rs +++ b/tests/monster_test/my_game/example/monster_generated.rs @@ -72,6 +72,8 @@ impl<'a> Monster<'a> { pub const VT_TESTREQUIREDNESTEDFLATBUFFER: flatbuffers::VOffsetT = 102; pub const VT_SCALAR_KEY_SORTED_TABLES: flatbuffers::VOffsetT = 104; pub const VT_NATIVE_INLINE: flatbuffers::VOffsetT = 106; + pub const VT_LONG_ENUM_NON_ENUM_DEFAULT: flatbuffers::VOffsetT = 108; + pub const VT_LONG_ENUM_NORMAL_DEFAULT: flatbuffers::VOffsetT = 110; pub const fn get_fully_qualified_name() -> &'static str { "MyGame.Example.Monster" @@ -87,6 +89,8 @@ impl<'a> Monster<'a> { args: &'args MonsterArgs<'args> ) -> flatbuffers::WIPOffset> { let mut builder = MonsterBuilder::new(_fbb); + builder.add_long_enum_normal_default(args.long_enum_normal_default); + builder.add_long_enum_non_enum_default(args.long_enum_non_enum_default); builder.add_non_owning_reference(args.non_owning_reference); builder.add_co_owning_reference(args.co_owning_reference); builder.add_single_weak_reference(args.single_weak_reference); @@ -297,6 +301,8 @@ impl<'a> Monster<'a> { let native_inline = self.native_inline().map(|x| { x.unpack() }); + let long_enum_non_enum_default = self.long_enum_non_enum_default(); + let long_enum_normal_default = self.long_enum_normal_default(); MonsterT { pos, mana, @@ -346,6 +352,8 @@ impl<'a> Monster<'a> { testrequirednestedflatbuffer, scalar_key_sorted_tables, native_inline, + long_enum_non_enum_default, + long_enum_normal_default, } } @@ -578,6 +586,14 @@ impl<'a> Monster<'a> { self._tab.get::(Monster::VT_NATIVE_INLINE, None) } #[inline] + pub fn long_enum_non_enum_default(&self) -> LongEnum { + self._tab.get::(Monster::VT_LONG_ENUM_NON_ENUM_DEFAULT, Some(Default::default())).unwrap() + } + #[inline] + pub fn long_enum_normal_default(&self) -> LongEnum { + self._tab.get::(Monster::VT_LONG_ENUM_NORMAL_DEFAULT, Some(LongEnum::LongOne)).unwrap() + } + #[inline] #[allow(non_snake_case)] pub fn test_as_monster(&self) -> Option> { if self.test_type() == Any::Monster { @@ -745,6 +761,8 @@ impl flatbuffers::Verifiable for Monster<'_> { .visit_field::>>("testrequirednestedflatbuffer", Self::VT_TESTREQUIREDNESTEDFLATBUFFER, false)? .visit_field::>>>("scalar_key_sorted_tables", Self::VT_SCALAR_KEY_SORTED_TABLES, false)? .visit_field::("native_inline", Self::VT_NATIVE_INLINE, false)? + .visit_field::("long_enum_non_enum_default", Self::VT_LONG_ENUM_NON_ENUM_DEFAULT, false)? + .visit_field::("long_enum_normal_default", Self::VT_LONG_ENUM_NORMAL_DEFAULT, false)? .finish(); Ok(()) } @@ -801,6 +819,8 @@ pub struct MonsterArgs<'a> { pub testrequirednestedflatbuffer: Option>>, pub scalar_key_sorted_tables: Option>>>>, pub native_inline: Option<&'a Test>, + pub long_enum_non_enum_default: LongEnum, + pub long_enum_normal_default: LongEnum, } impl<'a> Default for MonsterArgs<'a> { #[inline] @@ -857,6 +877,8 @@ impl<'a> Default for MonsterArgs<'a> { testrequirednestedflatbuffer: None, scalar_key_sorted_tables: None, native_inline: None, + long_enum_non_enum_default: Default::default(), + long_enum_normal_default: LongEnum::LongOne, } } } @@ -1071,6 +1093,14 @@ impl<'a: 'b, 'b> MonsterBuilder<'a, 'b> { self.fbb_.push_slot_always::<&Test>(Monster::VT_NATIVE_INLINE, native_inline); } #[inline] + pub fn add_long_enum_non_enum_default(&mut self, long_enum_non_enum_default: LongEnum) { + self.fbb_.push_slot::(Monster::VT_LONG_ENUM_NON_ENUM_DEFAULT, long_enum_non_enum_default, Default::default()); + } + #[inline] + pub fn add_long_enum_normal_default(&mut self, long_enum_normal_default: LongEnum) { + self.fbb_.push_slot::(Monster::VT_LONG_ENUM_NORMAL_DEFAULT, long_enum_normal_default, LongEnum::LongOne); + } + #[inline] pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MonsterBuilder<'a, 'b> { let start = _fbb.start_table(); MonsterBuilder { @@ -1218,6 +1248,8 @@ impl std::fmt::Debug for Monster<'_> { ds.field("testrequirednestedflatbuffer", &self.testrequirednestedflatbuffer()); ds.field("scalar_key_sorted_tables", &self.scalar_key_sorted_tables()); ds.field("native_inline", &self.native_inline()); + ds.field("long_enum_non_enum_default", &self.long_enum_non_enum_default()); + ds.field("long_enum_normal_default", &self.long_enum_normal_default()); ds.finish() } } @@ -1272,6 +1304,8 @@ pub struct MonsterT { pub testrequirednestedflatbuffer: Option>, pub scalar_key_sorted_tables: Option>, pub native_inline: Option, + pub long_enum_non_enum_default: LongEnum, + pub long_enum_normal_default: LongEnum, } impl Default for MonsterT { fn default() -> Self { @@ -1324,6 +1358,8 @@ impl Default for MonsterT { testrequirednestedflatbuffer: None, scalar_key_sorted_tables: None, native_inline: None, + long_enum_non_enum_default: Default::default(), + long_enum_normal_default: LongEnum::LongOne, } } } @@ -1434,6 +1470,8 @@ impl MonsterT { }); let native_inline_tmp = self.native_inline.as_ref().map(|x| x.pack()); let native_inline = native_inline_tmp.as_ref(); + let long_enum_non_enum_default = self.long_enum_non_enum_default; + let long_enum_normal_default = self.long_enum_normal_default; Monster::create(_fbb, &MonsterArgs{ pos, mana, @@ -1486,6 +1524,8 @@ impl MonsterT { testrequirednestedflatbuffer, scalar_key_sorted_tables, native_inline, + long_enum_non_enum_default, + long_enum_normal_default, }) } } diff --git a/tests/monster_test_bfbs_generated.h b/tests/monster_test_bfbs_generated.h index bf4e03159..fc611dbcd 100644 --- a/tests/monster_test_bfbs_generated.h +++ b/tests/monster_test_bfbs_generated.h @@ -12,198 +12,226 @@ namespace Example { struct MonsterBinarySchema { static const uint8_t *data() { // Buffer containing the binary schema. - static const uint8_t bfbsData[14088] = { - 0x1C,0x00,0x00,0x00,0x42,0x46,0x42,0x53,0x14,0x00,0x20,0x00,0x04,0x00,0x08,0x00,0x0C,0x00,0x10,0x00, - 0x14,0x00,0x18,0x00,0x00,0x00,0x1C,0x00,0x14,0x00,0x00,0x00,0x54,0x00,0x00,0x00,0x34,0x00,0x00,0x00, - 0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x68,0x0D,0x00,0x00,0x08,0x00,0x00,0x00,0x78,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0xD4,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x6D,0x6F,0x6E,0x00,0x04,0x00,0x00,0x00, - 0x4D,0x4F,0x4E,0x53,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x44,0x05,0x00,0x00,0xB0,0x02,0x00,0x00, - 0xF0,0x03,0x00,0x00,0xCC,0x07,0x00,0x00,0x88,0x06,0x00,0x00,0xB8,0x09,0x00,0x00,0x0E,0x00,0x00,0x00, - 0xE8,0x2E,0x00,0x00,0x1C,0x0D,0x00,0x00,0xBC,0x2B,0x00,0x00,0x98,0x2C,0x00,0x00,0xB0,0x2D,0x00,0x00, - 0xF0,0x32,0x00,0x00,0xD0,0x31,0x00,0x00,0x40,0x0A,0x00,0x00,0xC8,0x2F,0x00,0x00,0xB8,0x33,0x00,0x00, - 0xF0,0x33,0x00,0x00,0xE0,0x34,0x00,0x00,0x94,0x35,0x00,0x00,0x3C,0x34,0x00,0x00,0x03,0x00,0x00,0x00, - 0x38,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x14,0xCE,0xFF,0xFF,0xE4,0x33,0x00,0x00, - 0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x34,0x00,0x00,0x28,0xCE,0xFF,0xFF,0x84,0x35,0x00,0x00, - 0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x1C,0x34,0x00,0x00,0x74,0x35,0x00,0x00,0x40,0xCE,0xFF,0xFF, - 0x10,0x34,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x34,0x00,0x00,0x5C,0x35,0x00,0x00, - 0x00,0x00,0x0E,0x00,0x14,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x0C,0x00,0x10,0x00,0x0E,0x00,0x00,0x00, - 0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x84,0x33,0x00,0x00,0x00,0x00,0x00,0x00, - 0x04,0x00,0x00,0x00,0x88,0x01,0x00,0x00,0xF4,0x00,0x00,0x00,0x90,0x00,0x00,0x00,0x28,0x00,0x00,0x00, - 0x1D,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x4D, - 0x6F,0x6E,0x73,0x74,0x65,0x72,0x53,0x74,0x6F,0x72,0x61,0x67,0x65,0x00,0x00,0x00,0xBA,0xFE,0xFF,0xFF, - 0x48,0x00,0x00,0x00,0x2C,0x0C,0x00,0x00,0xAC,0x2B,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xDC,0xCE,0xFF,0xFF,0x14,0x00,0x00,0x00, - 0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x62,0x69,0x64,0x69,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00, - 0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x47,0x65,0x74,0x4D, - 0x69,0x6E,0x4D,0x61,0x78,0x48,0x69,0x74,0x50,0x6F,0x69,0x6E,0x74,0x73,0x00,0x00,0x1E,0xFF,0xFF,0xFF, - 0x48,0x00,0x00,0x00,0xC8,0x0B,0x00,0x00,0x48,0x2B,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x40,0xCF,0xFF,0xFF,0x14,0x00,0x00,0x00, - 0x04,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x63,0x6C,0x69,0x65,0x6E,0x74,0x00,0x00,0x09,0x00,0x00,0x00, - 0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x47,0x65,0x74,0x4D, - 0x61,0x78,0x48,0x69,0x74,0x50,0x6F,0x69,0x6E,0x74,0x00,0x00,0x7E,0xFF,0xFF,0xFF,0x70,0x00,0x00,0x00, - 0xEC,0x2A,0x00,0x00,0x64,0x0B,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x02,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xA4,0xCF,0xFF,0xFF,0x14,0x00,0x00,0x00, - 0x04,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x73,0x65,0x72,0x76,0x65,0x72,0x00,0x00,0x09,0x00,0x00,0x00, - 0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00,0xCC,0xCF,0xFF,0xFF,0x10,0x00,0x00,0x00, - 0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x69,0x64,0x65,0x6D, - 0x70,0x6F,0x74,0x65,0x6E,0x74,0x00,0x00,0x08,0x00,0x00,0x00,0x52,0x65,0x74,0x72,0x69,0x65,0x76,0x65, - 0x00,0x00,0x0E,0x00,0x18,0x00,0x04,0x00,0x08,0x00,0x0C,0x00,0x10,0x00,0x14,0x00,0x0E,0x00,0x00,0x00, - 0x48,0x00,0x00,0x00,0xD8,0x0A,0x00,0x00,0x58,0x2A,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x30,0xD0,0xFF,0xFF,0x14,0x00,0x00,0x00, - 0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x6E,0x6F,0x6E,0x65,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00, - 0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x53,0x74,0x6F,0x72, - 0x65,0x00,0x00,0x00,0x82,0xFD,0xFF,0xFF,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x28,0x00,0x00,0x00, - 0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x80,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0xE4,0xCF,0xFF,0xFF, - 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00, - 0xE0,0x00,0x00,0x00,0xA4,0x00,0x00,0x00,0x68,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x22,0x00,0x00,0x00, - 0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x41,0x6E,0x79,0x41,0x6D, - 0x62,0x69,0x67,0x75,0x6F,0x75,0x73,0x41,0x6C,0x69,0x61,0x73,0x65,0x73,0x00,0x00,0xAE,0xF9,0xFF,0xFF, - 0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0xCD,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x4D,0x33,0x00,0x00,0xE6,0xF9,0xFF,0xFF,0x2C,0x00,0x00,0x00, - 0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xD8,0xCD,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x02,0x00,0x00,0x00,0x4D,0x32,0x00,0x00,0x1E,0xFA,0xFF,0xFF,0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00, - 0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x10,0xCE,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00, - 0x4D,0x31,0x00,0x00,0xA2,0xF9,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x94,0xF9,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00, - 0x4E,0x4F,0x4E,0x45,0x00,0x00,0x00,0x00,0xC6,0xFE,0xFF,0xFF,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00, - 0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x3C,0x30,0x00,0x00,0x00,0x00,0x00,0x00, - 0x28,0xD1,0xFF,0xFF,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x04,0x00,0x00,0x00,0xD8,0x00,0x00,0x00,0xA0,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x28,0x00,0x00,0x00, - 0x1F,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x41, - 0x6E,0x79,0x55,0x6E,0x69,0x71,0x75,0x65,0x41,0x6C,0x69,0x61,0x73,0x65,0x73,0x00,0xEE,0xFA,0xFF,0xFF, - 0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xCE,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x09,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x4D,0x32,0x00,0x00,0x26,0xFB,0xFF,0xFF,0x2C,0x00,0x00,0x00, - 0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x18,0xCF,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x02,0x00,0x00,0x00,0x54,0x53,0x00,0x00,0x4E,0xFD,0xFF,0xFF,0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00, - 0x0C,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0xCF,0xFF,0xFF, - 0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x4D,0x00,0x00,0x00, - 0xDE,0xFA,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xD0,0xFA,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x4E,0x4F,0x4E,0x45, - 0x00,0x00,0x12,0x00,0x1C,0x00,0x08,0x00,0x0C,0x00,0x07,0x00,0x10,0x00,0x00,0x00,0x14,0x00,0x18,0x00, - 0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00, - 0x08,0x00,0x00,0x00,0xF0,0x2E,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0xD2,0xFF,0xFF,0x00,0x00,0x00,0x01, - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xF0,0x00,0x00,0x00, - 0xB4,0x00,0x00,0x00,0x68,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x4D,0x79,0x47,0x61, - 0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x41,0x6E,0x79,0x00,0x00,0x1E,0xFE,0xFF,0xFF, - 0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x1C,0xD0,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x09,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x17,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x5F,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x32,0x5F, - 0x4D,0x6F,0x6E,0x73,0x74,0x65,0x72,0x00,0x66,0xFE,0xFF,0xFF,0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00, - 0x0C,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0xD0,0xFF,0xFF, - 0x00,0x00,0x00,0x0F,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x54,0x65,0x73,0x74, - 0x53,0x69,0x6D,0x70,0x6C,0x65,0x54,0x61,0x62,0x6C,0x65,0x57,0x69,0x74,0x68,0x45,0x6E,0x75,0x6D,0x00, - 0xAE,0xFE,0xFF,0xFF,0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xAC,0xD0,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x4D,0x6F,0x6E,0x73,0x74,0x65,0x72,0x00,0x42,0xFC,0xFF,0xFF, - 0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0xFC,0xFF,0xFF, - 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x4E,0x4F,0x4E,0x45,0x00,0x00,0x00,0x00, - 0xDE,0xFC,0xFF,0xFF,0x40,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00, - 0xA0,0x2D,0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0xD3,0xFF,0xFF,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xC8,0x00,0x00,0x00,0x8C,0x00,0x00,0x00, - 0x50,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45, - 0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x52,0x61,0x63,0x65,0x00,0x6E,0xFF,0xFF,0xFF,0x24,0x00,0x00,0x00, - 0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xC4,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x45,0x6C,0x66,0x00, - 0xAE,0xFD,0xFF,0xFF,0x28,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x44,0x77,0x61,0x72,0x66,0x00,0x00,0x00,0x32,0xFD,0xFF,0xFF, - 0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0xFD,0xFF,0xFF, - 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x48,0x75,0x6D,0x61,0x6E,0x00,0x0E,0x00, - 0x18,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x0C,0x00,0x0E,0x00,0x00,0x00,0x24,0x00,0x00,0x00, - 0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, - 0x64,0xFD,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x4E,0x6F,0x6E,0x65, - 0x00,0x00,0x12,0x00,0x1C,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x0C,0x00,0x10,0x00,0x14,0x00,0x18,0x00, - 0x12,0x00,0x00,0x00,0x9C,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x40,0x00,0x00,0x00, - 0x08,0x00,0x00,0x00,0x5C,0x2C,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x27,0x00,0x00,0x00, - 0x20,0x43,0x6F,0x6D,0x70,0x6F,0x73,0x69,0x74,0x65,0x20,0x63,0x6F,0x6D,0x70,0x6F,0x6E,0x65,0x6E,0x74, - 0x73,0x20,0x6F,0x66,0x20,0x4D,0x6F,0x6E,0x73,0x74,0x65,0x72,0x20,0x63,0x6F,0x6C,0x6F,0x72,0x2E,0x00, - 0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xE0,0xD5,0xFF,0xFF,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + static const uint8_t bfbsData[14648] = { + 0x20,0x00,0x00,0x00,0x42,0x46,0x42,0x53,0x00,0x00,0x00,0x00,0x14,0x00,0x20,0x00,0x04,0x00,0x08,0x00, + 0x0C,0x00,0x10,0x00,0x14,0x00,0x18,0x00,0x00,0x00,0x1C,0x00,0x14,0x00,0x00,0x00,0x58,0x00,0x00,0x00, + 0x34,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x9C,0x0E,0x00,0x00,0x08,0x00,0x00,0x00, + 0x7C,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xD8,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x6D,0x6F,0x6E,0x00, + 0x04,0x00,0x00,0x00,0x4D,0x4F,0x4E,0x53,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x48,0x05,0x00,0x00, + 0xB4,0x02,0x00,0x00,0xF4,0x03,0x00,0x00,0x00,0x09,0x00,0x00,0x8C,0x06,0x00,0x00,0xB8,0x07,0x00,0x00, + 0xE8,0x0A,0x00,0x00,0x0E,0x00,0x00,0x00,0x10,0x31,0x00,0x00,0x4C,0x0E,0x00,0x00,0xE4,0x2D,0x00,0x00, + 0xC0,0x2E,0x00,0x00,0xD8,0x2F,0x00,0x00,0x18,0x35,0x00,0x00,0xF8,0x33,0x00,0x00,0x70,0x0B,0x00,0x00, + 0xF0,0x31,0x00,0x00,0xE0,0x35,0x00,0x00,0x18,0x36,0x00,0x00,0x08,0x37,0x00,0x00,0xBC,0x37,0x00,0x00, + 0x64,0x36,0x00,0x00,0x03,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0xEC,0xCB,0xFF,0xFF,0x0C,0x36,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x58,0x36,0x00,0x00, + 0x00,0xCC,0xFF,0xFF,0xAC,0x37,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x44,0x36,0x00,0x00, + 0x9C,0x37,0x00,0x00,0x18,0xCC,0xFF,0xFF,0x38,0x36,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x2C,0x36,0x00,0x00,0x84,0x37,0x00,0x00,0x00,0x00,0x0E,0x00,0x14,0x00,0x04,0x00,0x08,0x00,0x00,0x00, + 0x0C,0x00,0x10,0x00,0x0E,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0xAC,0x35,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x88,0x01,0x00,0x00,0xF4,0x00,0x00,0x00, + 0x90,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45, + 0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x4D,0x6F,0x6E,0x73,0x74,0x65,0x72,0x53,0x74,0x6F,0x72,0x61,0x67, + 0x65,0x00,0x00,0x00,0xBA,0xFE,0xFF,0xFF,0x48,0x00,0x00,0x00,0x5C,0x0D,0x00,0x00,0xD4,0x2D,0x00,0x00, + 0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0xB4,0xCC,0xFF,0xFF,0x14,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x62,0x69,0x64,0x69, + 0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00, + 0x12,0x00,0x00,0x00,0x47,0x65,0x74,0x4D,0x69,0x6E,0x4D,0x61,0x78,0x48,0x69,0x74,0x50,0x6F,0x69,0x6E, + 0x74,0x73,0x00,0x00,0x1E,0xFF,0xFF,0xFF,0x48,0x00,0x00,0x00,0xF8,0x0C,0x00,0x00,0x70,0x2D,0x00,0x00, + 0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x18,0xCD,0xFF,0xFF,0x14,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x63,0x6C,0x69,0x65, + 0x6E,0x74,0x00,0x00,0x09,0x00,0x00,0x00,0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00, + 0x0E,0x00,0x00,0x00,0x47,0x65,0x74,0x4D,0x61,0x78,0x48,0x69,0x74,0x50,0x6F,0x69,0x6E,0x74,0x00,0x00, + 0x7E,0xFF,0xFF,0xFF,0x70,0x00,0x00,0x00,0x14,0x2D,0x00,0x00,0x94,0x0C,0x00,0x00,0x0C,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x7C,0xCD,0xFF,0xFF,0x14,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x73,0x65,0x72,0x76, + 0x65,0x72,0x00,0x00,0x09,0x00,0x00,0x00,0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00, + 0xA4,0xCD,0xFF,0xFF,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00, + 0x0A,0x00,0x00,0x00,0x69,0x64,0x65,0x6D,0x70,0x6F,0x74,0x65,0x6E,0x74,0x00,0x00,0x08,0x00,0x00,0x00, + 0x52,0x65,0x74,0x72,0x69,0x65,0x76,0x65,0x00,0x00,0x0E,0x00,0x18,0x00,0x04,0x00,0x08,0x00,0x0C,0x00, + 0x10,0x00,0x14,0x00,0x0E,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x08,0x0C,0x00,0x00,0x80,0x2C,0x00,0x00, + 0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x08,0xCE,0xFF,0xFF,0x14,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x6E,0x6F,0x6E,0x65, + 0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x73,0x74,0x72,0x65,0x61,0x6D,0x69,0x6E,0x67,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x53,0x74,0x6F,0x72,0x65,0x00,0x00,0x00,0x82,0xFD,0xFF,0xFF,0x00,0x00,0x00,0x01, + 0x40,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xA8,0x33,0x00,0x00, + 0x00,0x00,0x00,0x00,0xBC,0xCD,0xFF,0xFF,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xA4,0x00,0x00,0x00,0x68,0x00,0x00,0x00, + 0x2C,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70, + 0x6C,0x65,0x2E,0x41,0x6E,0x79,0x41,0x6D,0x62,0x69,0x67,0x75,0x6F,0x75,0x73,0x41,0x6C,0x69,0x61,0x73, + 0x65,0x73,0x00,0x00,0x7E,0xF8,0xFF,0xFF,0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xCB,0xFF,0xFF, + 0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x4D,0x33,0x00,0x00, + 0xB6,0xF8,0xFF,0xFF,0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xCB,0xFF,0xFF,0x00,0x00,0x00,0x0F, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x4D,0x32,0x00,0x00,0xEE,0xF8,0xFF,0xFF, + 0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE8,0xCB,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x4D,0x31,0x00,0x00,0x72,0xF8,0xFF,0xFF,0x1C,0x00,0x00,0x00, + 0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0xF8,0xFF,0xFF,0x01,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x4E,0x4F,0x4E,0x45,0x00,0x00,0x00,0x00,0xC6,0xFE,0xFF,0xFF, + 0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x64,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCF,0xFF,0xFF,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xD8,0x00,0x00,0x00,0xA0,0x00,0x00,0x00, + 0x64,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45, + 0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x41,0x6E,0x79,0x55,0x6E,0x69,0x71,0x75,0x65,0x41,0x6C,0x69,0x61, + 0x73,0x65,0x73,0x00,0xBE,0xF9,0xFF,0xFF,0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB8,0xCC,0xFF,0xFF, + 0x00,0x00,0x00,0x0F,0x09,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x4D,0x32,0x00,0x00, + 0xF6,0xF9,0xFF,0xFF,0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xCC,0xFF,0xFF,0x00,0x00,0x00,0x0F, + 0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x54,0x53,0x00,0x00,0x1E,0xFC,0xFF,0xFF, + 0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x24,0xCD,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x4D,0x00,0x00,0x00,0xAE,0xF9,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0xF9,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x4E,0x4F,0x4E,0x45,0x00,0x00,0x12,0x00,0x1C,0x00,0x08,0x00,0x0C,0x00,0x07,0x00, + 0x10,0x00,0x00,0x00,0x14,0x00,0x18,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00, + 0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x31,0x00,0x00,0x00,0x00,0x00,0x00, + 0x4C,0xD0,0xFF,0xFF,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xB4,0x00,0x00,0x00,0x68,0x00,0x00,0x00,0x1C,0x00,0x00,0x00, + 0x12,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x41, + 0x6E,0x79,0x00,0x00,0xEE,0xFC,0xFF,0xFF,0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF4,0xCD,0xFF,0xFF,0x00,0x00,0x00,0x0F, + 0x09,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x5F,0x45, + 0x78,0x61,0x6D,0x70,0x6C,0x65,0x32,0x5F,0x4D,0x6F,0x6E,0x73,0x74,0x65,0x72,0x00,0x36,0xFD,0xFF,0xFF, + 0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x3C,0xCE,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x17,0x00,0x00,0x00,0x54,0x65,0x73,0x74,0x53,0x69,0x6D,0x70,0x6C,0x65,0x54,0x61,0x62,0x6C,0x65,0x57, + 0x69,0x74,0x68,0x45,0x6E,0x75,0x6D,0x00,0x7E,0xFD,0xFF,0xFF,0x28,0x00,0x00,0x00,0x14,0x00,0x00,0x00, + 0x0C,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0xCE,0xFF,0xFF, + 0x00,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x4D,0x6F,0x6E,0x73, + 0x74,0x65,0x72,0x00,0x12,0xFB,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0xFB,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x4E,0x4F,0x4E,0x45,0x00,0x00,0x00,0x00,0xA2,0xFD,0xFF,0xFF,0x6C,0x00,0x00,0x00,0x58,0x00,0x00,0x00, + 0x40,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xC4,0x2F,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x48,0xD2,0xFF,0xFF,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00, 0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x62,0x69,0x74,0x5F,0x66,0x6C,0x61,0x67, - 0x73,0x00,0x00,0x00,0x64,0xD5,0xFF,0xFF,0x00,0x00,0x00,0x04,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x18,0x01,0x00,0x00,0x84,0x00,0x00,0x00,0x20,0x00,0x00,0x00, - 0x14,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x43, - 0x6F,0x6C,0x6F,0x72,0x00,0x00,0x00,0x00,0x1E,0xFF,0xFF,0xFF,0x50,0x00,0x00,0x00,0x40,0x00,0x00,0x00, - 0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x04,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x20,0x5C,0x62,0x72,0x69,0x65,0x66,0x20,0x63,0x6F,0x6C,0x6F, - 0x72,0x20,0x42,0x6C,0x75,0x65,0x20,0x28,0x31,0x75,0x20,0x3C,0x3C,0x20,0x33,0x29,0x00,0x00,0x00,0x00, - 0x90,0xFE,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x42,0x6C,0x75,0x65, - 0x00,0x00,0x00,0x00,0x7E,0xFF,0xFF,0xFF,0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x10,0x00,0x00,0x00, - 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x34,0x00,0x00,0x00, - 0x04,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x20,0x47,0x72,0x65,0x65,0x6E,0x20,0x69,0x73,0x20,0x62,0x69, - 0x74,0x5F,0x66,0x6C,0x61,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x76,0x61,0x6C,0x75,0x65,0x20,0x28,0x31, - 0x75,0x20,0x3C,0x3C,0x20,0x31,0x29,0x00,0x13,0x00,0x00,0x00,0x20,0x5C,0x62,0x72,0x69,0x65,0x66,0x20, - 0x63,0x6F,0x6C,0x6F,0x72,0x20,0x47,0x72,0x65,0x65,0x6E,0x00,0x14,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x47,0x72,0x65,0x65,0x6E,0x00,0x0E,0x00,0x1C,0x00,0x04,0x00, - 0x10,0x00,0x00,0x00,0x08,0x00,0x0C,0x00,0x0E,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x18,0x00,0x00,0x00, - 0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x58,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x52,0x65,0x64,0x00, - 0x00,0x00,0x12,0x00,0x18,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x10,0x00,0x14,0x00, - 0x12,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00, - 0x20,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xD6,0xFF,0xFF,0x00,0x00,0x00,0x09,0x05,0x00,0x00,0x00, - 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x21,0x00,0x00,0x00, - 0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x4F,0x74,0x68,0x65,0x72,0x4E,0x61,0x6D,0x65,0x53,0x70,0x61,0x63, - 0x65,0x2E,0x46,0x72,0x6F,0x6D,0x49,0x6E,0x63,0x6C,0x75,0x64,0x65,0x00,0x0E,0x00,0x10,0x00,0x04,0x00, - 0x00,0x00,0x00,0x00,0x08,0x00,0x0C,0x00,0x0E,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x1C,0x00,0x00,0x00, - 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x04,0x00,0x08,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0A,0x00,0x00,0x00, - 0x49,0x6E,0x63,0x6C,0x75,0x64,0x65,0x56,0x61,0x6C,0x00,0x00,0x64,0xD5,0xFF,0xFF,0x4C,0x00,0x00,0x00, - 0x14,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xC0,0x29,0x00,0x00,0x00,0x00,0x00,0x00, - 0x0C,0x00,0x00,0x00,0xE4,0x00,0x00,0x00,0xB0,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x90,0x01,0x00,0x00, - 0x30,0x01,0x00,0x00,0x60,0x02,0x00,0x00,0xB0,0x01,0x00,0x00,0x54,0x01,0x00,0x00,0xF0,0x00,0x00,0x00, - 0x04,0x02,0x00,0x00,0x5C,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x4D,0x79,0x47,0x61, - 0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x54,0x79,0x70,0x65,0x41,0x6C,0x69,0x61,0x73, - 0x65,0x73,0x00,0x00,0x80,0xDC,0xFF,0xFF,0x00,0x00,0x00,0x01,0x0B,0x00,0x1A,0x00,0x1C,0x00,0x00,0x00, - 0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0xE2,0xFF,0xFF,0x00,0x00,0x0E,0x0C, - 0x08,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x76,0x66,0x36,0x34,0x00,0x00,0x00,0x00,0xB4,0xDC,0xFF,0xFF, - 0x00,0x00,0x00,0x01,0x0A,0x00,0x18,0x00,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x40,0xE2,0xFF,0xFF,0x00,0x00,0x0E,0x03,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00, - 0x76,0x38,0x00,0x00,0xCA,0xD9,0xFF,0xFF,0x09,0x00,0x16,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00, - 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x94,0xD7,0xFF,0xFF,0x00,0x00,0x00,0x0C,0x08,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x66,0x36,0x34,0x00,0xFA,0xD9,0xFF,0xFF,0x08,0x00,0x14,0x00, - 0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0xD5,0xFF,0xFF, - 0x00,0x00,0x00,0x0B,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x66,0x33,0x32,0x00,0x26,0xDA,0xFF,0xFF, - 0x07,0x00,0x12,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xF0,0xD7,0xFF,0xFF,0x00,0x00,0x00,0x0A,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00, - 0x75,0x36,0x34,0x00,0x56,0xDA,0xFF,0xFF,0x06,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00, - 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xD8,0xFF,0xFF,0x00,0x00,0x00,0x09,0x08,0x00,0x00,0x00, - 0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x69,0x36,0x34,0x00,0x86,0xDA,0xFF,0xFF,0x05,0x00,0x0E,0x00, - 0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0xD5,0xFF,0xFF, - 0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x75,0x33,0x32,0x00,0xB2,0xDA,0xFF,0xFF, - 0x04,0x00,0x0C,0x00,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xC4,0xD5,0xFF,0xFF,0x00,0x00,0x00,0x07,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x69,0x33,0x32,0x00, - 0xDE,0xDA,0xFF,0xFF,0x03,0x00,0x0A,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xA8,0xD8,0xFF,0xFF,0x00,0x00,0x00,0x06,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00, - 0x03,0x00,0x00,0x00,0x75,0x31,0x36,0x00,0x0E,0xDB,0xFF,0xFF,0x02,0x00,0x08,0x00,0x20,0x00,0x00,0x00, - 0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0xFF,0xFF,0x00,0x00,0x00,0x05, - 0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x69,0x31,0x36,0x00,0x3E,0xDB,0xFF,0xFF, - 0x01,0x00,0x06,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x08,0xD9,0xFF,0xFF,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00, - 0x75,0x38,0x00,0x00,0x00,0x00,0x1A,0x00,0x14,0x00,0x08,0x00,0x0C,0x00,0x00,0x00,0x06,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x1A,0x00,0x00,0x00,0x00,0x00,0x04,0x00, - 0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x54,0xD9,0xFF,0xFF, - 0x00,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x69,0x38,0x00,0x00, - 0x28,0xD8,0xFF,0xFF,0x28,0x01,0x00,0x00,0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00, - 0xFC,0x26,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x20,0x61,0x6E,0x20, - 0x65,0x78,0x61,0x6D,0x70,0x6C,0x65,0x20,0x64,0x6F,0x63,0x75,0x6D,0x65,0x6E,0x74,0x61,0x74,0x69,0x6F, - 0x6E,0x20,0x63,0x6F,0x6D,0x6D,0x65,0x6E,0x74,0x3A,0x20,0x22,0x6D,0x6F,0x6E,0x73,0x74,0x65,0x72,0x20, - 0x6F,0x62,0x6A,0x65,0x63,0x74,0x22,0x00,0x34,0x00,0x00,0x00,0x88,0x03,0x00,0x00,0xEC,0x03,0x00,0x00, - 0x54,0x04,0x00,0x00,0xB4,0x04,0x00,0x00,0xB0,0x08,0x00,0x00,0x80,0x1A,0x00,0x00,0x90,0x17,0x00,0x00, - 0x4C,0x0E,0x00,0x00,0x84,0x1B,0x00,0x00,0xC8,0x1C,0x00,0x00,0xF4,0x1A,0x00,0x00,0x40,0x1D,0x00,0x00, - 0x40,0x1C,0x00,0x00,0xB8,0x00,0x00,0x00,0x20,0x06,0x00,0x00,0x90,0x0C,0x00,0x00,0xB0,0x1D,0x00,0x00, - 0x3C,0x01,0x00,0x00,0x6C,0x02,0x00,0x00,0x18,0x0B,0x00,0x00,0x68,0x19,0x00,0x00,0xF4,0x18,0x00,0x00, - 0xB0,0x0D,0x00,0x00,0xD4,0x19,0x00,0x00,0xA0,0x10,0x00,0x00,0x88,0x0E,0x00,0x00,0x78,0x18,0x00,0x00, - 0xF0,0x0E,0x00,0x00,0x98,0x17,0x00,0x00,0xD0,0x15,0x00,0x00,0x2C,0x16,0x00,0x00,0x20,0x10,0x00,0x00, - 0x9C,0x0F,0x00,0x00,0x40,0x0F,0x00,0x00,0x30,0x15,0x00,0x00,0xF0,0x12,0x00,0x00,0x0C,0x14,0x00,0x00, - 0x68,0x11,0x00,0x00,0x94,0x14,0x00,0x00,0xF4,0x11,0x00,0x00,0x6C,0x13,0x00,0x00,0xC4,0x10,0x00,0x00, - 0x60,0x16,0x00,0x00,0x48,0x01,0x00,0x00,0xD0,0x06,0x00,0x00,0x88,0x0C,0x00,0x00,0x68,0x02,0x00,0x00, - 0xE8,0x0C,0x00,0x00,0x68,0x04,0x00,0x00,0x98,0x0B,0x00,0x00,0xEC,0x08,0x00,0x00,0x9C,0x09,0x00,0x00, + 0x73,0x00,0x00,0x00,0xCC,0xD1,0xFF,0xFF,0x00,0x00,0x00,0x0A,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x98,0x00,0x00,0x00,0x5C,0x00,0x00,0x00,0x20,0x00,0x00,0x00, + 0x17,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x4C, + 0x6F,0x6E,0x67,0x45,0x6E,0x75,0x6D,0x00,0x7E,0xFC,0xFF,0xFF,0x28,0x00,0x00,0x00,0x18,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xC8,0xFB,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x4C,0x6F,0x6E,0x67, + 0x42,0x69,0x67,0x00,0xB6,0xFC,0xFF,0xFF,0x28,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x4C,0x6F,0x6E,0x67,0x54,0x77,0x6F,0x00, + 0xDE,0xFE,0xFF,0xFF,0x24,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x07,0x00,0x00,0x00,0x4C,0x6F,0x6E,0x67,0x4F,0x6E,0x65,0x00,0xDE,0xFC,0xFF,0xFF,0x40,0x00,0x00,0x00, + 0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x98,0x2E,0x00,0x00,0x00,0x00,0x00,0x00, + 0xCC,0xD2,0xFF,0xFF,0x00,0x00,0x00,0x03,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0xC8,0x00,0x00,0x00,0x8C,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x1C,0x00,0x00,0x00, + 0x13,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x52, + 0x61,0x63,0x65,0x00,0x6E,0xFF,0xFF,0xFF,0x24,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x45,0x6C,0x66,0x00,0xAE,0xFD,0xFF,0xFF,0x28,0x00,0x00,0x00, + 0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xF8,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x05,0x00,0x00,0x00, + 0x44,0x77,0x61,0x72,0x66,0x00,0x00,0x00,0x32,0xFD,0xFF,0xFF,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0xFD,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x05,0x00,0x00,0x00,0x48,0x75,0x6D,0x61,0x6E,0x00,0x0E,0x00,0x18,0x00,0x04,0x00,0x10,0x00,0x00,0x00, + 0x08,0x00,0x0C,0x00,0x0E,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x64,0xFD,0xFF,0xFF,0x01,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x4E,0x6F,0x6E,0x65,0x00,0x00,0x12,0x00,0x1C,0x00,0x04,0x00, + 0x08,0x00,0x00,0x00,0x0C,0x00,0x10,0x00,0x14,0x00,0x18,0x00,0x12,0x00,0x00,0x00,0x9C,0x00,0x00,0x00, + 0x88,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x54,0x2D,0x00,0x00, + 0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x27,0x00,0x00,0x00,0x20,0x43,0x6F,0x6D,0x70,0x6F,0x73,0x69, + 0x74,0x65,0x20,0x63,0x6F,0x6D,0x70,0x6F,0x6E,0x65,0x6E,0x74,0x73,0x20,0x6F,0x66,0x20,0x4D,0x6F,0x6E, + 0x73,0x74,0x65,0x72,0x20,0x63,0x6F,0x6C,0x6F,0x72,0x2E,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0xE8,0xD4,0xFF,0xFF,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00, + 0x09,0x00,0x00,0x00,0x62,0x69,0x74,0x5F,0x66,0x6C,0x61,0x67,0x73,0x00,0x00,0x00,0x6C,0xD4,0xFF,0xFF, + 0x00,0x00,0x00,0x04,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x18,0x01,0x00,0x00,0x84,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x4D,0x79,0x47,0x61, + 0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x43,0x6F,0x6C,0x6F,0x72,0x00,0x00,0x00,0x00, + 0x1E,0xFF,0xFF,0xFF,0x50,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x1C,0x00,0x00,0x00, + 0x20,0x5C,0x62,0x72,0x69,0x65,0x66,0x20,0x63,0x6F,0x6C,0x6F,0x72,0x20,0x42,0x6C,0x75,0x65,0x20,0x28, + 0x31,0x75,0x20,0x3C,0x3C,0x20,0x33,0x29,0x00,0x00,0x00,0x00,0x90,0xFE,0xFF,0xFF,0x01,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x42,0x6C,0x75,0x65,0x00,0x00,0x00,0x00,0x7E,0xFF,0xFF,0xFF, + 0x74,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x27,0x00,0x00,0x00, + 0x20,0x47,0x72,0x65,0x65,0x6E,0x20,0x69,0x73,0x20,0x62,0x69,0x74,0x5F,0x66,0x6C,0x61,0x67,0x20,0x77, + 0x69,0x74,0x68,0x20,0x76,0x61,0x6C,0x75,0x65,0x20,0x28,0x31,0x75,0x20,0x3C,0x3C,0x20,0x31,0x29,0x00, + 0x13,0x00,0x00,0x00,0x20,0x5C,0x62,0x72,0x69,0x65,0x66,0x20,0x63,0x6F,0x6C,0x6F,0x72,0x20,0x47,0x72, + 0x65,0x65,0x6E,0x00,0x14,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x05,0x00,0x00,0x00, + 0x47,0x72,0x65,0x65,0x6E,0x00,0x0E,0x00,0x1C,0x00,0x04,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x0C,0x00, + 0x0E,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x52,0x65,0x64,0x00,0x00,0x00,0x12,0x00,0x18,0x00,0x04,0x00, + 0x08,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x10,0x00,0x14,0x00,0x12,0x00,0x00,0x00,0x34,0x00,0x00,0x00, + 0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x2D,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xD6,0xFF,0xFF,0x00,0x00,0x00,0x09,0x06,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x4F, + 0x74,0x68,0x65,0x72,0x4E,0x61,0x6D,0x65,0x53,0x70,0x61,0x63,0x65,0x2E,0x46,0x72,0x6F,0x6D,0x49,0x6E, + 0x63,0x6C,0x75,0x64,0x65,0x00,0x0E,0x00,0x10,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x0C,0x00, + 0x0E,0x00,0x00,0x00,0x2C,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x10,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x49,0x6E,0x63,0x6C,0x75,0x64,0x65,0x56, + 0x61,0x6C,0x00,0x00,0x6C,0xD4,0xFF,0xFF,0x4C,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0xB8,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0xE4,0x00,0x00,0x00, + 0xB0,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x90,0x01,0x00,0x00,0x30,0x01,0x00,0x00,0x60,0x02,0x00,0x00, + 0xB0,0x01,0x00,0x00,0x54,0x01,0x00,0x00,0xF0,0x00,0x00,0x00,0x04,0x02,0x00,0x00,0x5C,0x00,0x00,0x00, + 0x24,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70, + 0x6C,0x65,0x2E,0x54,0x79,0x70,0x65,0x41,0x6C,0x69,0x61,0x73,0x65,0x73,0x00,0x00,0x88,0xDB,0xFF,0xFF, + 0x00,0x00,0x00,0x01,0x0B,0x00,0x1A,0x00,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x14,0xE1,0xFF,0xFF,0x00,0x00,0x0E,0x0C,0x08,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x76,0x66,0x36,0x34,0x00,0x00,0x00,0x00,0xBC,0xDB,0xFF,0xFF,0x00,0x00,0x00,0x01,0x0A,0x00,0x18,0x00, + 0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0xE1,0xFF,0xFF, + 0x00,0x00,0x0E,0x03,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x76,0x38,0x00,0x00,0xD2,0xD8,0xFF,0xFF, + 0x09,0x00,0x16,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x9C,0xD6,0xFF,0xFF,0x00,0x00,0x00,0x0C,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x66,0x36,0x34,0x00,0x02,0xD9,0xFF,0xFF,0x08,0x00,0x14,0x00,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0xD4,0xFF,0xFF,0x00,0x00,0x00,0x0B,0x01,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x66,0x33,0x32,0x00,0x2E,0xD9,0xFF,0xFF,0x07,0x00,0x12,0x00,0x20,0x00,0x00,0x00, + 0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xD6,0xFF,0xFF,0x00,0x00,0x00,0x0A, + 0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x75,0x36,0x34,0x00,0x5E,0xD9,0xFF,0xFF, + 0x06,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x28,0xD7,0xFF,0xFF,0x00,0x00,0x00,0x09,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x69,0x36,0x34,0x00,0x8E,0xD9,0xFF,0xFF,0x05,0x00,0x0E,0x00,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0xD4,0xFF,0xFF,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x75,0x33,0x32,0x00,0xBA,0xD9,0xFF,0xFF,0x04,0x00,0x0C,0x00,0x1C,0x00,0x00,0x00, + 0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0xD4,0xFF,0xFF,0x00,0x00,0x00,0x07, + 0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x69,0x33,0x32,0x00,0xE6,0xD9,0xFF,0xFF,0x03,0x00,0x0A,0x00, + 0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xD7,0xFF,0xFF, + 0x00,0x00,0x00,0x06,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x75,0x31,0x36,0x00, + 0x16,0xDA,0xFF,0xFF,0x02,0x00,0x08,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xE0,0xD7,0xFF,0xFF,0x00,0x00,0x00,0x05,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x03,0x00,0x00,0x00,0x69,0x31,0x36,0x00,0x46,0xDA,0xFF,0xFF,0x01,0x00,0x06,0x00,0x20,0x00,0x00,0x00, + 0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xD8,0xFF,0xFF,0x00,0x00,0x00,0x04, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x75,0x38,0x00,0x00,0x00,0x00,0x1A,0x00, + 0x14,0x00,0x08,0x00,0x0C,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x10,0x00,0x1A,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x00,0x00,0x0C,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5C,0xD8,0xFF,0xFF,0x00,0x00,0x00,0x03,0x01,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x69,0x38,0x00,0x00,0x30,0xD7,0xFF,0xFF,0x30,0x01,0x00,0x00, + 0x50,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xF4,0x27,0x00,0x00,0x01,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x20,0x61,0x6E,0x20,0x65,0x78,0x61,0x6D,0x70,0x6C,0x65,0x20, + 0x64,0x6F,0x63,0x75,0x6D,0x65,0x6E,0x74,0x61,0x74,0x69,0x6F,0x6E,0x20,0x63,0x6F,0x6D,0x6D,0x65,0x6E, + 0x74,0x3A,0x20,0x22,0x6D,0x6F,0x6E,0x73,0x74,0x65,0x72,0x20,0x6F,0x62,0x6A,0x65,0x63,0x74,0x22,0x00, + 0x36,0x00,0x00,0x00,0x80,0x04,0x00,0x00,0xE4,0x04,0x00,0x00,0x4C,0x05,0x00,0x00,0xAC,0x05,0x00,0x00, + 0xA8,0x09,0x00,0x00,0x78,0x1B,0x00,0x00,0x88,0x18,0x00,0x00,0x44,0x0F,0x00,0x00,0x7C,0x1C,0x00,0x00, + 0xC0,0x1D,0x00,0x00,0xEC,0x1B,0x00,0x00,0x44,0x01,0x00,0x00,0xC4,0x00,0x00,0x00,0x30,0x1E,0x00,0x00, + 0x30,0x1D,0x00,0x00,0xA8,0x01,0x00,0x00,0x10,0x07,0x00,0x00,0x80,0x0D,0x00,0x00,0xA0,0x1E,0x00,0x00, + 0x2C,0x02,0x00,0x00,0x5C,0x03,0x00,0x00,0x08,0x0C,0x00,0x00,0x58,0x1A,0x00,0x00,0xE4,0x19,0x00,0x00, + 0xA0,0x0E,0x00,0x00,0xC4,0x1A,0x00,0x00,0x90,0x11,0x00,0x00,0x78,0x0F,0x00,0x00,0x68,0x19,0x00,0x00, + 0xE0,0x0F,0x00,0x00,0x88,0x18,0x00,0x00,0xC0,0x16,0x00,0x00,0x1C,0x17,0x00,0x00,0x10,0x11,0x00,0x00, + 0x8C,0x10,0x00,0x00,0x30,0x10,0x00,0x00,0x20,0x16,0x00,0x00,0xE0,0x13,0x00,0x00,0xFC,0x14,0x00,0x00, + 0x58,0x12,0x00,0x00,0x84,0x15,0x00,0x00,0xE4,0x12,0x00,0x00,0x5C,0x14,0x00,0x00,0xB4,0x11,0x00,0x00, + 0x50,0x17,0x00,0x00,0x38,0x02,0x00,0x00,0xC0,0x07,0x00,0x00,0x78,0x0D,0x00,0x00,0x58,0x03,0x00,0x00, + 0xD8,0x0D,0x00,0x00,0x58,0x05,0x00,0x00,0x88,0x0C,0x00,0x00,0xDC,0x09,0x00,0x00,0x8C,0x0A,0x00,0x00, 0x16,0x00,0x00,0x00,0x4D,0x79,0x47,0x61,0x6D,0x65,0x2E,0x45,0x78,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x4D, - 0x6F,0x6E,0x73,0x74,0x65,0x72,0x00,0x00,0xEC,0xE5,0xFF,0xFF,0x00,0x00,0x00,0x01,0x33,0x00,0x6A,0x00, + 0x6F,0x6E,0x73,0x74,0x65,0x72,0x00,0x00,0x62,0xFD,0xFF,0xFF,0x35,0x00,0x6E,0x00,0x54,0x00,0x00,0x00, + 0x3C,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x70,0xDB,0xFF,0xFF,0x10,0x00,0x00,0x00, + 0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x35,0x33,0x00,0x00,0x02,0x00,0x00,0x00,0x69,0x64,0x00,0x00, + 0xEC,0xDA,0xFF,0xFF,0x00,0x00,0x00,0x0A,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x18,0x00,0x00,0x00,0x6C,0x6F,0x6E,0x67,0x5F,0x65,0x6E,0x75,0x6D,0x5F,0x6E,0x6F,0x72,0x6D,0x61,0x6C, + 0x5F,0x64,0x65,0x66,0x61,0x75,0x6C,0x74,0x00,0x00,0x00,0x00,0x62,0xE6,0xFF,0xFF,0x34,0x00,0x6C,0x00, + 0x4C,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xE4,0xDB,0xFF,0xFF,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x35,0x32,0x00,0x00,0x02,0x00,0x00,0x00,0x69,0x64,0x00,0x00,0x60,0xDB,0xFF,0xFF, + 0x00,0x00,0x00,0x0A,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1A,0x00,0x00,0x00, + 0x6C,0x6F,0x6E,0x67,0x5F,0x65,0x6E,0x75,0x6D,0x5F,0x6E,0x6F,0x6E,0x5F,0x65,0x6E,0x75,0x6D,0x5F,0x64, + 0x65,0x66,0x61,0x75,0x6C,0x74,0x00,0x00,0xEC,0xE5,0xFF,0xFF,0x00,0x00,0x00,0x01,0x33,0x00,0x6A,0x00, 0x74,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x02,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x60,0xDC,0xFF,0xFF,0x10,0x00,0x00,0x00, 0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x6E,0x61,0x74,0x69, @@ -230,7 +258,7 @@ struct MonsterBinarySchema { 0x14,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, 0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x28,0xDE,0xFF,0xFF,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x00, 0x02,0x00,0x00,0x00,0x34,0x38,0x00,0x00,0x02,0x00,0x00,0x00,0x69,0x64,0x00,0x00,0xA4,0xDD,0xFF,0xFF, - 0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0B,0x00,0x00,0x00, + 0x00,0x00,0x00,0x03,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0B,0x00,0x00,0x00, 0x73,0x69,0x67,0x6E,0x65,0x64,0x5F,0x65,0x6E,0x75,0x6D,0x00,0x20,0xE8,0xFF,0xFF,0x00,0x00,0x00,0x01, 0x2F,0x00,0x62,0x00,0x48,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x90,0xDE,0xFF,0xFF,0x10,0x00,0x00,0x00, @@ -722,7 +750,7 @@ struct MonsterBinarySchema { return bfbsData; } static size_t size() { - return 14088; + return 14648; } const uint8_t *begin() { return data(); diff --git a/tests/monster_test_generated.h b/tests/monster_test_generated.h index c074ea396..eeaa341ec 100644 --- a/tests/monster_test_generated.h +++ b/tests/monster_test_generated.h @@ -190,6 +190,32 @@ inline const char *EnumNameRace(Race e) { return EnumNamesRace()[index]; } +enum LongEnum : uint64_t { + LongEnum_LongOne = 2ULL, + LongEnum_LongTwo = 4ULL, + LongEnum_LongBig = 1099511627776ULL, + LongEnum_NONE = 0, + LongEnum_ANY = 1099511627782ULL +}; + +inline const LongEnum (&EnumValuesLongEnum())[3] { + static const LongEnum values[] = { + LongEnum_LongOne, + LongEnum_LongTwo, + LongEnum_LongBig + }; + return values; +} + +inline const char *EnumNameLongEnum(LongEnum e) { + switch (e) { + case LongEnum_LongOne: return "LongOne"; + case LongEnum_LongTwo: return "LongTwo"; + case LongEnum_LongBig: return "LongBig"; + default: return ""; + } +} + enum Any : uint8_t { Any_NONE = 0, Any_Monster = 1, @@ -1234,6 +1260,8 @@ struct MonsterT : public flatbuffers::NativeTable { std::vector testrequirednestedflatbuffer{}; std::vector> scalar_key_sorted_tables{}; MyGame::Example::Test native_inline{}; + MyGame::Example::LongEnum long_enum_non_enum_default = static_cast(0); + MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum_LongOne; MonsterT() = default; MonsterT(const MonsterT &o); MonsterT(MonsterT&&) FLATBUFFERS_NOEXCEPT = default; @@ -1298,7 +1326,9 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { VT_SIGNED_ENUM = 100, VT_TESTREQUIREDNESTEDFLATBUFFER = 102, VT_SCALAR_KEY_SORTED_TABLES = 104, - VT_NATIVE_INLINE = 106 + VT_NATIVE_INLINE = 106, + VT_LONG_ENUM_NON_ENUM_DEFAULT = 108, + VT_LONG_ENUM_NORMAL_DEFAULT = 110 }; const MyGame::Example::Vec3 *pos() const { return GetStruct(VT_POS); @@ -1643,6 +1673,18 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { MyGame::Example::Test *mutable_native_inline() { return GetStruct(VT_NATIVE_INLINE); } + MyGame::Example::LongEnum long_enum_non_enum_default() const { + return static_cast(GetField(VT_LONG_ENUM_NON_ENUM_DEFAULT, 0)); + } + bool mutate_long_enum_non_enum_default(MyGame::Example::LongEnum _long_enum_non_enum_default = static_cast(0)) { + return SetField(VT_LONG_ENUM_NON_ENUM_DEFAULT, static_cast(_long_enum_non_enum_default), 0); + } + MyGame::Example::LongEnum long_enum_normal_default() const { + return static_cast(GetField(VT_LONG_ENUM_NORMAL_DEFAULT, 2ULL)); + } + bool mutate_long_enum_normal_default(MyGame::Example::LongEnum _long_enum_normal_default = static_cast(2ULL)) { + return SetField(VT_LONG_ENUM_NORMAL_DEFAULT, static_cast(_long_enum_normal_default), 2ULL); + } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_POS, 8) && @@ -1732,6 +1774,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.VerifyVector(scalar_key_sorted_tables()) && verifier.VerifyVectorOfTables(scalar_key_sorted_tables()) && VerifyField(verifier, VT_NATIVE_INLINE, 2) && + VerifyField(verifier, VT_LONG_ENUM_NON_ENUM_DEFAULT, 8) && + VerifyField(verifier, VT_LONG_ENUM_NORMAL_DEFAULT, 8) && verifier.EndTable(); } MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; @@ -1920,6 +1964,12 @@ struct MonsterBuilder { void add_native_inline(const MyGame::Example::Test *native_inline) { fbb_.AddStruct(Monster::VT_NATIVE_INLINE, native_inline); } + void add_long_enum_non_enum_default(MyGame::Example::LongEnum long_enum_non_enum_default) { + fbb_.AddElement(Monster::VT_LONG_ENUM_NON_ENUM_DEFAULT, static_cast(long_enum_non_enum_default), 0); + } + void add_long_enum_normal_default(MyGame::Example::LongEnum long_enum_normal_default) { + fbb_.AddElement(Monster::VT_LONG_ENUM_NORMAL_DEFAULT, static_cast(long_enum_normal_default), 2ULL); + } explicit MonsterBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); @@ -1984,8 +2034,12 @@ inline flatbuffers::Offset CreateMonster( MyGame::Example::Race signed_enum = MyGame::Example::Race_None, flatbuffers::Offset> testrequirednestedflatbuffer = 0, flatbuffers::Offset>> scalar_key_sorted_tables = 0, - const MyGame::Example::Test *native_inline = nullptr) { + const MyGame::Example::Test *native_inline = nullptr, + MyGame::Example::LongEnum long_enum_non_enum_default = static_cast(0), + MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum_LongOne) { MonsterBuilder builder_(_fbb); + builder_.add_long_enum_normal_default(long_enum_normal_default); + builder_.add_long_enum_non_enum_default(long_enum_non_enum_default); builder_.add_non_owning_reference(non_owning_reference); builder_.add_co_owning_reference(co_owning_reference); builder_.add_single_weak_reference(single_weak_reference); @@ -2092,7 +2146,9 @@ inline flatbuffers::Offset CreateMonsterDirect( MyGame::Example::Race signed_enum = MyGame::Example::Race_None, const std::vector *testrequirednestedflatbuffer = nullptr, std::vector> *scalar_key_sorted_tables = nullptr, - const MyGame::Example::Test *native_inline = nullptr) { + const MyGame::Example::Test *native_inline = nullptr, + MyGame::Example::LongEnum long_enum_non_enum_default = static_cast(0), + MyGame::Example::LongEnum long_enum_normal_default = MyGame::Example::LongEnum_LongOne) { auto name__ = name ? _fbb.CreateString(name) : 0; auto inventory__ = inventory ? _fbb.CreateVector(*inventory) : 0; auto test4__ = test4 ? _fbb.CreateVectorOfStructs(*test4) : 0; @@ -2166,7 +2222,9 @@ inline flatbuffers::Offset CreateMonsterDirect( signed_enum, testrequirednestedflatbuffer__, scalar_key_sorted_tables__, - native_inline); + native_inline, + long_enum_non_enum_default, + long_enum_normal_default); } flatbuffers::Offset CreateMonster(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); @@ -2660,7 +2718,9 @@ inline bool operator==(const MonsterT &lhs, const MonsterT &rhs) { (lhs.signed_enum == rhs.signed_enum) && (lhs.testrequirednestedflatbuffer == rhs.testrequirednestedflatbuffer) && (lhs.scalar_key_sorted_tables == rhs.scalar_key_sorted_tables) && - (lhs.native_inline == rhs.native_inline); + (lhs.native_inline == rhs.native_inline) && + (lhs.long_enum_non_enum_default == rhs.long_enum_non_enum_default) && + (lhs.long_enum_normal_default == rhs.long_enum_normal_default); } inline bool operator!=(const MonsterT &lhs, const MonsterT &rhs) { @@ -2711,7 +2771,9 @@ inline MonsterT::MonsterT(const MonsterT &o) vector_of_enums(o.vector_of_enums), signed_enum(o.signed_enum), testrequirednestedflatbuffer(o.testrequirednestedflatbuffer), - native_inline(o.native_inline) { + native_inline(o.native_inline), + long_enum_non_enum_default(o.long_enum_non_enum_default), + long_enum_normal_default(o.long_enum_normal_default) { testarrayoftables.reserve(o.testarrayoftables.size()); for (const auto &testarrayoftables_ : o.testarrayoftables) { testarrayoftables.emplace_back((testarrayoftables_) ? new MyGame::Example::MonsterT(*testarrayoftables_) : nullptr); } vector_of_referrables.reserve(o.vector_of_referrables.size()); @@ -2773,6 +2835,8 @@ inline MonsterT &MonsterT::operator=(MonsterT o) FLATBUFFERS_NOEXCEPT { std::swap(testrequirednestedflatbuffer, o.testrequirednestedflatbuffer); std::swap(scalar_key_sorted_tables, o.scalar_key_sorted_tables); std::swap(native_inline, o.native_inline); + std::swap(long_enum_non_enum_default, o.long_enum_non_enum_default); + std::swap(long_enum_normal_default, o.long_enum_normal_default); return *this; } @@ -2843,6 +2907,8 @@ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_non_owning_ { auto _e = testrequirednestedflatbuffer(); if (_e) { _o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } } { auto _e = scalar_key_sorted_tables(); if (_e) { _o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->scalar_key_sorted_tables[_i]) { _e->Get(_i)->UnPackTo(_o->scalar_key_sorted_tables[_i].get(), _resolver); } else { _o->scalar_key_sorted_tables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } } { auto _e = native_inline(); if (_e) _o->native_inline = *_e; } + { auto _e = long_enum_non_enum_default(); _o->long_enum_non_enum_default = _e; } + { auto _e = long_enum_normal_default(); _o->long_enum_normal_default = _e; } } inline flatbuffers::Offset Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -2904,6 +2970,8 @@ inline flatbuffers::Offset CreateMonster(flatbuffers::FlatBufferBuilder auto _testrequirednestedflatbuffer = _o->testrequirednestedflatbuffer.size() ? _fbb.CreateVector(_o->testrequirednestedflatbuffer) : 0; auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _native_inline = &_o->native_inline; + auto _long_enum_non_enum_default = _o->long_enum_non_enum_default; + auto _long_enum_normal_default = _o->long_enum_normal_default; return MyGame::Example::CreateMonster( _fbb, _pos, @@ -2956,7 +3024,9 @@ inline flatbuffers::Offset CreateMonster(flatbuffers::FlatBufferBuilder _signed_enum, _testrequirednestedflatbuffer, _scalar_key_sorted_tables, - _native_inline); + _native_inline, + _long_enum_non_enum_default, + _long_enum_normal_default); } @@ -3423,6 +3493,27 @@ inline const flatbuffers::TypeTable *RaceTypeTable() { return &tt; } +inline const flatbuffers::TypeTable *LongEnumTypeTable() { + static const flatbuffers::TypeCode type_codes[] = { + { flatbuffers::ET_ULONG, 0, 0 }, + { flatbuffers::ET_ULONG, 0, 0 }, + { flatbuffers::ET_ULONG, 0, 0 } + }; + static const flatbuffers::TypeFunction type_refs[] = { + MyGame::Example::LongEnumTypeTable + }; + static const int64_t values[] = { 2ULL, 4ULL, 1099511627776ULL }; + static const char * const names[] = { + "LongOne", + "LongTwo", + "LongBig" + }; + static const flatbuffers::TypeTable tt = { + flatbuffers::ST_ENUM, 3, type_codes, type_refs, nullptr, values, names + }; + return &tt; +} + inline const flatbuffers::TypeTable *AnyTypeTable() { static const flatbuffers::TypeCode type_codes[] = { { flatbuffers::ET_SEQUENCE, 0, -1 }, @@ -3696,7 +3787,9 @@ inline const flatbuffers::TypeTable *MonsterTypeTable() { { flatbuffers::ET_CHAR, 0, 11 }, { flatbuffers::ET_UCHAR, 1, -1 }, { flatbuffers::ET_SEQUENCE, 1, 5 }, - { flatbuffers::ET_SEQUENCE, 0, 3 } + { flatbuffers::ET_SEQUENCE, 0, 3 }, + { flatbuffers::ET_ULONG, 0, 12 }, + { flatbuffers::ET_ULONG, 0, 12 } }; static const flatbuffers::TypeFunction type_refs[] = { MyGame::Example::Vec3TypeTable, @@ -3710,7 +3803,8 @@ inline const flatbuffers::TypeTable *MonsterTypeTable() { MyGame::Example::ReferrableTypeTable, MyGame::Example::AnyUniqueAliasesTypeTable, MyGame::Example::AnyAmbiguousAliasesTypeTable, - MyGame::Example::RaceTypeTable + MyGame::Example::RaceTypeTable, + MyGame::Example::LongEnumTypeTable }; static const char * const names[] = { "pos", @@ -3764,10 +3858,12 @@ inline const flatbuffers::TypeTable *MonsterTypeTable() { "signed_enum", "testrequirednestedflatbuffer", "scalar_key_sorted_tables", - "native_inline" + "native_inline", + "long_enum_non_enum_default", + "long_enum_normal_default" }; static const flatbuffers::TypeTable tt = { - flatbuffers::ST_TABLE, 52, type_codes, type_refs, nullptr, nullptr, names + flatbuffers::ST_TABLE, 54, type_codes, type_refs, nullptr, nullptr, names }; return &tt; } diff --git a/tests/monster_test_generated.lobster b/tests/monster_test_generated.lobster index d67ebc452..525478b88 100644 --- a/tests/monster_test_generated.lobster +++ b/tests/monster_test_generated.lobster @@ -18,6 +18,11 @@ enum Race: Race_Dwarf = 1 Race_Elf = 2 +enum LongEnum: + LongEnum_LongOne = 2 + LongEnum_LongTwo = 4 + LongEnum_LongBig = 1099511627776 + enum Any: Any_NONE = 0 Any_Monster = 1 @@ -395,13 +400,17 @@ class Monster : flatbuffers_handle def native_inline(): let o = buf_.flatbuffers_field_struct(pos_, 106) return if o: MyGame_Example_Test { buf_, o } else: nil + def long_enum_non_enum_default(): + return LongEnum(buf_.flatbuffers_field_int64(pos_, 108, 0)) + def long_enum_normal_default(): + return LongEnum(buf_.flatbuffers_field_int64(pos_, 110, 2)) def GetRootAsMonster(buf:string): return Monster { buf, buf.flatbuffers_indirect(0) } struct MonsterBuilder: b_:flatbuffers_builder def start(): - b_.StartObject(52) + b_.StartObject(54) return this def add_pos(pos:flatbuffers_offset): b_.PrependStructSlot(0, pos) @@ -556,6 +565,12 @@ struct MonsterBuilder: def add_native_inline(native_inline:flatbuffers_offset): b_.PrependStructSlot(51, native_inline) return this + def add_long_enum_non_enum_default(long_enum_non_enum_default:LongEnum): + b_.PrependUint64Slot(52, long_enum_non_enum_default, 0) + return this + def add_long_enum_normal_default(long_enum_normal_default:LongEnum): + b_.PrependUint64Slot(53, long_enum_normal_default, 2) + return this def end(): return b_.EndObject() diff --git a/tests/monster_test_generated.py b/tests/monster_test_generated.py index 49b9fe089..71e266de3 100644 --- a/tests/monster_test_generated.py +++ b/tests/monster_test_generated.py @@ -23,6 +23,12 @@ class Race(object): Elf = 2 +class LongEnum(object): + LongOne = 2 + LongTwo = 4 + LongBig = 1099511627776 + + class Any(object): NONE = 0 Monster = 1 @@ -1478,7 +1484,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 MonsterAddPos(builder, pos): builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pos), 0) def MonsterAddMana(builder, mana): builder.PrependInt16Slot(1, mana, 150) def MonsterAddHp(builder, hp): builder.PrependInt16Slot(2, hp, 100) @@ -1560,6 +1580,8 @@ def MonsterMakeTestrequirednestedflatbufferVectorFromBytes(builder, bytes): def MonsterAddScalarKeySortedTables(builder, scalarKeySortedTables): builder.PrependUOffsetTRelativeSlot(50, flatbuffers.number_types.UOffsetTFlags.py_type(scalarKeySortedTables), 0) def MonsterStartScalarKeySortedTablesVector(builder, numElems): return builder.StartVector(4, numElems, 4) def MonsterAddNativeInline(builder, nativeInline): builder.PrependStructSlot(51, flatbuffers.number_types.UOffsetTFlags.py_type(nativeInline), 0) +def MonsterAddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault): builder.PrependUint64Slot(52, longEnumNonEnumDefault, 0) +def MonsterAddLongEnumNormalDefault(builder, longEnumNormalDefault): builder.PrependUint64Slot(53, longEnumNormalDefault, 2) def MonsterEnd(builder): return builder.EndObject() try: @@ -1622,6 +1644,8 @@ class MonsterT(object): self.testrequirednestedflatbuffer = None # type: List[int] self.scalarKeySortedTables = None # type: List[StatT] self.nativeInline = None # type: Optional[TestT] + self.longEnumNonEnumDefault = 0 # type: int + self.longEnumNormalDefault = 2 # type: int @classmethod def InitFromBuf(cls, buf, pos): @@ -1816,6 +1840,8 @@ class MonsterT(object): self.scalarKeySortedTables.append(stat_) if monster.NativeInline() is not None: self.nativeInline = TestT.InitFromObj(monster.NativeInline()) + self.longEnumNonEnumDefault = monster.LongEnumNonEnumDefault() + self.longEnumNormalDefault = monster.LongEnumNormalDefault() # MonsterT def Pack(self, builder): @@ -2067,6 +2093,8 @@ 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 diff --git a/tests/monster_test_my_game.example_generated.dart b/tests/monster_test_my_game.example_generated.dart index d91bf066b..dd816d97b 100644 --- a/tests/monster_test_my_game.example_generated.dart +++ b/tests/monster_test_my_game.example_generated.dart @@ -17,7 +17,11 @@ class Color { 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 @@ class Race { 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 @@ class _RaceReader extends fb.Reader { 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 values = { + 2: LongOne, + 4: LongTwo, + 1099511627776: LongBig}; + + static const fb.Reader reader = _LongEnumReader(); + + @override + String toString() { + return 'LongEnum{value: $value}'; + } +} + +class _LongEnumReader extends fb.Reader { + const _LongEnumReader(); + + @override + int get size => 1; + + @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 @@ class AnyTypeId { 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 @@ class AnyUniqueAliasesTypeId { 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 @@ class AnyAmbiguousAliasesTypeId { 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; } @@ -1116,10 +1168,12 @@ class Monster { 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)); @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, nativeInline: $nativeInline}'; + 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( @@ -1173,7 +1227,9 @@ class Monster { signedEnum: signedEnum, testrequirednestedflatbuffer: const fb.Uint8ListReader(lazy: false).vTableGetNullable(_bc, _bcOffset, 102), scalarKeySortedTables: scalarKeySortedTables?.map((e) => e.unpack()).toList(), - nativeInline: nativeInline?.unpack()); + nativeInline: nativeInline?.unpack(), + longEnumNonEnumDefault: longEnumNonEnumDefault, + longEnumNormalDefault: longEnumNormalDefault); static int pack(fb.Builder fbBuilder, MonsterT? object) { if (object == null) return 0; @@ -1236,6 +1292,8 @@ class MonsterT implements fb.Packable { List? testrequirednestedflatbuffer; List? scalarKeySortedTables; TestT? nativeInline; + LongEnum longEnumNonEnumDefault; + LongEnum longEnumNormalDefault; MonsterT({ this.pos, @@ -1288,7 +1346,9 @@ class MonsterT implements fb.Packable { this.signedEnum = Race.None, this.testrequirednestedflatbuffer, this.scalarKeySortedTables, - this.nativeInline}); + this.nativeInline, + this.longEnumNonEnumDefault = const LongEnum._(0), + this.longEnumNormalDefault = LongEnum.LongOne}); @override int pack(fb.Builder fbBuilder) { @@ -1349,7 +1409,7 @@ class MonsterT implements fb.Packable { : fbBuilder.writeListUint8(testrequirednestedflatbuffer!); final int? scalarKeySortedTablesOffset = scalarKeySortedTables == null ? null : fbBuilder.writeList(scalarKeySortedTables!.map((b) => b.pack(fbBuilder)).toList()); - fbBuilder.startTable(51); + fbBuilder.startTable(54); if (pos != null) { fbBuilder.addStruct(0, pos!.pack(fbBuilder)); } @@ -1405,12 +1465,14 @@ class MonsterT implements fb.Packable { 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, nativeInline: $nativeInline}'; + 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}'; } } @@ -1428,7 +1490,7 @@ class MonsterBuilder { final fb.Builder fbBuilder; void begin() { - fbBuilder.startTable(51); + fbBuilder.startTable(54); } int addPos(int offset) { @@ -1635,6 +1697,14 @@ class MonsterBuilder { 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(); @@ -1693,6 +1763,8 @@ class MonsterObjectBuilder extends fb.ObjectBuilder { final List? _testrequirednestedflatbuffer; final List? _scalarKeySortedTables; final TestObjectBuilder? _nativeInline; + final LongEnum? _longEnumNonEnumDefault; + final LongEnum? _longEnumNormalDefault; MonsterObjectBuilder({ Vec3ObjectBuilder? pos, @@ -1746,6 +1818,8 @@ class MonsterObjectBuilder extends fb.ObjectBuilder { List? testrequirednestedflatbuffer, List? scalarKeySortedTables, TestObjectBuilder? nativeInline, + LongEnum? longEnumNonEnumDefault, + LongEnum? longEnumNormalDefault, }) : _pos = pos, _mana = mana, @@ -1797,7 +1871,9 @@ class MonsterObjectBuilder extends fb.ObjectBuilder { _signedEnum = signedEnum, _testrequirednestedflatbuffer = testrequirednestedflatbuffer, _scalarKeySortedTables = scalarKeySortedTables, - _nativeInline = nativeInline; + _nativeInline = nativeInline, + _longEnumNonEnumDefault = longEnumNonEnumDefault, + _longEnumNormalDefault = longEnumNormalDefault; /// Finish building, and store into the [fbBuilder]. @override @@ -1850,7 +1926,7 @@ class MonsterObjectBuilder extends fb.ObjectBuilder { : fbBuilder.writeListUint8(_testrequirednestedflatbuffer!); final int? scalarKeySortedTablesOffset = _scalarKeySortedTables == null ? null : fbBuilder.writeList(_scalarKeySortedTables!.map((b) => b.getOrCreateOffset(fbBuilder)).toList()); - fbBuilder.startTable(51); + fbBuilder.startTable(54); if (_pos != null) { fbBuilder.addStruct(0, _pos!.finish(fbBuilder)); } @@ -1906,6 +1982,8 @@ class MonsterObjectBuilder extends fb.ObjectBuilder { if (_nativeInline != null) { fbBuilder.addStruct(51, _nativeInline!.finish(fbBuilder)); } + fbBuilder.addUint64(52, _longEnumNonEnumDefault?.value); + fbBuilder.addUint64(53, _longEnumNormalDefault?.value); return fbBuilder.endTable(); } diff --git a/tests/monster_test_serialize/mod.rs b/tests/monster_test_serialize/mod.rs index 3a4f82125..fdbc26b99 100644 --- a/tests/monster_test_serialize/mod.rs +++ b/tests/monster_test_serialize/mod.rs @@ -7,6 +7,8 @@ pub mod my_game { pub use self::color_generated::*; mod race_generated; pub use self::race_generated::*; + mod long_enum_generated; + pub use self::long_enum_generated::*; mod any_generated; pub use self::any_generated::*; mod any_unique_aliases_generated; diff --git a/tests/monster_test_serialize/my_game/example/long_enum_generated.rs b/tests/monster_test_serialize/my_game/example/long_enum_generated.rs new file mode 100644 index 000000000..f513d29b3 --- /dev/null +++ b/tests/monster_test_serialize/my_game/example/long_enum_generated.rs @@ -0,0 +1,74 @@ +// automatically generated by the FlatBuffers compiler, do not modify +extern crate flatbuffers; +use std::mem; +use std::cmp::Ordering; +extern crate serde; +use self::serde::ser::{Serialize, Serializer, SerializeStruct}; +use self::flatbuffers::{EndianScalar, Follow}; +use super::*; +#[allow(non_upper_case_globals)] +mod bitflags_long_enum { + flatbuffers::bitflags::bitflags! { + #[derive(Default)] + pub struct LongEnum: u64 { + const LongOne = 2; + const LongTwo = 4; + const LongBig = 1099511627776; + } + } +} +pub use self::bitflags_long_enum::LongEnum; + +impl Serialize for LongEnum { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + serializer.serialize_u32(self.bits() as u32) + } +} + +impl<'a> flatbuffers::Follow<'a> for LongEnum { + type Inner = Self; + #[inline] + fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + let b = unsafe { + flatbuffers::read_scalar_at::(buf, loc) + }; + unsafe { Self::from_bits_unchecked(b) } + } +} + +impl flatbuffers::Push for LongEnum { + type Output = LongEnum; + #[inline] + fn push(&self, dst: &mut [u8], _rest: &[u8]) { + unsafe { flatbuffers::emplace_scalar::(dst, self.bits()); } + } +} + +impl flatbuffers::EndianScalar for LongEnum { + #[inline] + fn to_little_endian(self) -> Self { + let b = u64::to_le(self.bits()); + unsafe { Self::from_bits_unchecked(b) } + } + #[inline] + #[allow(clippy::wrong_self_convention)] + fn from_little_endian(self) -> Self { + let b = u64::from_le(self.bits()); + unsafe { Self::from_bits_unchecked(b) } + } +} + +impl<'a> flatbuffers::Verifiable for LongEnum { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + u64::run_verifier(v, pos) + } +} + +impl flatbuffers::SimpleToVerifyInSlice for LongEnum {} diff --git a/tests/monster_test_serialize/my_game/example/monster_generated.rs b/tests/monster_test_serialize/my_game/example/monster_generated.rs index 34fd3bed2..cd5730f5b 100644 --- a/tests/monster_test_serialize/my_game/example/monster_generated.rs +++ b/tests/monster_test_serialize/my_game/example/monster_generated.rs @@ -74,6 +74,8 @@ impl<'a> Monster<'a> { pub const VT_TESTREQUIREDNESTEDFLATBUFFER: flatbuffers::VOffsetT = 102; pub const VT_SCALAR_KEY_SORTED_TABLES: flatbuffers::VOffsetT = 104; pub const VT_NATIVE_INLINE: flatbuffers::VOffsetT = 106; + pub const VT_LONG_ENUM_NON_ENUM_DEFAULT: flatbuffers::VOffsetT = 108; + pub const VT_LONG_ENUM_NORMAL_DEFAULT: flatbuffers::VOffsetT = 110; pub const fn get_fully_qualified_name() -> &'static str { "MyGame.Example.Monster" @@ -89,6 +91,8 @@ impl<'a> Monster<'a> { args: &'args MonsterArgs<'args> ) -> flatbuffers::WIPOffset> { let mut builder = MonsterBuilder::new(_fbb); + builder.add_long_enum_normal_default(args.long_enum_normal_default); + builder.add_long_enum_non_enum_default(args.long_enum_non_enum_default); builder.add_non_owning_reference(args.non_owning_reference); builder.add_co_owning_reference(args.co_owning_reference); builder.add_single_weak_reference(args.single_weak_reference); @@ -299,6 +303,8 @@ impl<'a> Monster<'a> { let native_inline = self.native_inline().map(|x| { x.unpack() }); + let long_enum_non_enum_default = self.long_enum_non_enum_default(); + let long_enum_normal_default = self.long_enum_normal_default(); MonsterT { pos, mana, @@ -348,6 +354,8 @@ impl<'a> Monster<'a> { testrequirednestedflatbuffer, scalar_key_sorted_tables, native_inline, + long_enum_non_enum_default, + long_enum_normal_default, } } @@ -580,6 +588,14 @@ impl<'a> Monster<'a> { self._tab.get::(Monster::VT_NATIVE_INLINE, None) } #[inline] + pub fn long_enum_non_enum_default(&self) -> LongEnum { + self._tab.get::(Monster::VT_LONG_ENUM_NON_ENUM_DEFAULT, Some(Default::default())).unwrap() + } + #[inline] + pub fn long_enum_normal_default(&self) -> LongEnum { + self._tab.get::(Monster::VT_LONG_ENUM_NORMAL_DEFAULT, Some(LongEnum::LongOne)).unwrap() + } + #[inline] #[allow(non_snake_case)] pub fn test_as_monster(&self) -> Option> { if self.test_type() == Any::Monster { @@ -747,6 +763,8 @@ impl flatbuffers::Verifiable for Monster<'_> { .visit_field::>>("testrequirednestedflatbuffer", Self::VT_TESTREQUIREDNESTEDFLATBUFFER, false)? .visit_field::>>>("scalar_key_sorted_tables", Self::VT_SCALAR_KEY_SORTED_TABLES, false)? .visit_field::("native_inline", Self::VT_NATIVE_INLINE, false)? + .visit_field::("long_enum_non_enum_default", Self::VT_LONG_ENUM_NON_ENUM_DEFAULT, false)? + .visit_field::("long_enum_normal_default", Self::VT_LONG_ENUM_NORMAL_DEFAULT, false)? .finish(); Ok(()) } @@ -803,6 +821,8 @@ pub struct MonsterArgs<'a> { pub testrequirednestedflatbuffer: Option>>, pub scalar_key_sorted_tables: Option>>>>, pub native_inline: Option<&'a Test>, + pub long_enum_non_enum_default: LongEnum, + pub long_enum_normal_default: LongEnum, } impl<'a> Default for MonsterArgs<'a> { #[inline] @@ -859,6 +879,8 @@ impl<'a> Default for MonsterArgs<'a> { testrequirednestedflatbuffer: None, scalar_key_sorted_tables: None, native_inline: None, + long_enum_non_enum_default: Default::default(), + long_enum_normal_default: LongEnum::LongOne, } } } @@ -868,7 +890,7 @@ impl Serialize for Monster<'_> { where S: Serializer, { - let mut s = serializer.serialize_struct("Monster", 52)?; + let mut s = serializer.serialize_struct("Monster", 54)?; if let Some(f) = self.pos() { s.serialize_field("pos", &f)?; } else { @@ -1074,6 +1096,8 @@ impl Serialize for Monster<'_> { } else { s.skip_field("native_inline")?; } + s.serialize_field("long_enum_non_enum_default", &self.long_enum_non_enum_default())?; + s.serialize_field("long_enum_normal_default", &self.long_enum_normal_default())?; s.end() } } @@ -1288,6 +1312,14 @@ impl<'a: 'b, 'b> MonsterBuilder<'a, 'b> { self.fbb_.push_slot_always::<&Test>(Monster::VT_NATIVE_INLINE, native_inline); } #[inline] + pub fn add_long_enum_non_enum_default(&mut self, long_enum_non_enum_default: LongEnum) { + self.fbb_.push_slot::(Monster::VT_LONG_ENUM_NON_ENUM_DEFAULT, long_enum_non_enum_default, Default::default()); + } + #[inline] + pub fn add_long_enum_normal_default(&mut self, long_enum_normal_default: LongEnum) { + self.fbb_.push_slot::(Monster::VT_LONG_ENUM_NORMAL_DEFAULT, long_enum_normal_default, LongEnum::LongOne); + } + #[inline] pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MonsterBuilder<'a, 'b> { let start = _fbb.start_table(); MonsterBuilder { @@ -1435,6 +1467,8 @@ impl std::fmt::Debug for Monster<'_> { ds.field("testrequirednestedflatbuffer", &self.testrequirednestedflatbuffer()); ds.field("scalar_key_sorted_tables", &self.scalar_key_sorted_tables()); ds.field("native_inline", &self.native_inline()); + ds.field("long_enum_non_enum_default", &self.long_enum_non_enum_default()); + ds.field("long_enum_normal_default", &self.long_enum_normal_default()); ds.finish() } } @@ -1489,6 +1523,8 @@ pub struct MonsterT { pub testrequirednestedflatbuffer: Option>, pub scalar_key_sorted_tables: Option>, pub native_inline: Option, + pub long_enum_non_enum_default: LongEnum, + pub long_enum_normal_default: LongEnum, } impl Default for MonsterT { fn default() -> Self { @@ -1541,6 +1577,8 @@ impl Default for MonsterT { testrequirednestedflatbuffer: None, scalar_key_sorted_tables: None, native_inline: None, + long_enum_non_enum_default: Default::default(), + long_enum_normal_default: LongEnum::LongOne, } } } @@ -1651,6 +1689,8 @@ impl MonsterT { }); let native_inline_tmp = self.native_inline.as_ref().map(|x| x.pack()); let native_inline = native_inline_tmp.as_ref(); + let long_enum_non_enum_default = self.long_enum_non_enum_default; + let long_enum_normal_default = self.long_enum_normal_default; Monster::create(_fbb, &MonsterArgs{ pos, mana, @@ -1703,6 +1743,8 @@ impl MonsterT { testrequirednestedflatbuffer, scalar_key_sorted_tables, native_inline, + long_enum_non_enum_default, + long_enum_normal_default, }) } } diff --git a/tests/my-game/example/long-enum.ts b/tests/my-game/example/long-enum.ts new file mode 100644 index 000000000..be418192d --- /dev/null +++ b/tests/my-game/example/long-enum.ts @@ -0,0 +1,8 @@ +// automatically generated by the FlatBuffers compiler, do not modify + +export enum LongEnum{ + LongOne = '2', + LongTwo = '4', + LongBig = '1099511627776' +} + diff --git a/tests/my-game/example/monster.ts b/tests/my-game/example/monster.ts index 92a8d6419..c6cb33ee0 100644 --- a/tests/my-game/example/monster.ts +++ b/tests/my-game/example/monster.ts @@ -651,12 +651,44 @@ nativeInline(obj?:Test):Test|null { return offset ? (obj || new Test()).__init(this.bb_pos + offset, this.bb!) : null; } +longEnumNonEnumDefault():bigint { + const offset = this.bb!.__offset(this.bb_pos, 108); + return offset ? this.bb!.readUint64(this.bb_pos + offset) : BigInt('0'); +} + +mutate_long_enum_non_enum_default(value:bigint):boolean { + const offset = this.bb!.__offset(this.bb_pos, 108); + + if (offset === 0) { + return false; + } + + this.bb!.writeUint64(this.bb_pos + offset, value); + return true; +} + +longEnumNormalDefault():bigint { + const offset = this.bb!.__offset(this.bb_pos, 110); + return offset ? this.bb!.readUint64(this.bb_pos + offset) : BigInt('2'); +} + +mutate_long_enum_normal_default(value:bigint):boolean { + const offset = this.bb!.__offset(this.bb_pos, 110); + + if (offset === 0) { + return false; + } + + this.bb!.writeUint64(this.bb_pos + offset, value); + return true; +} + static getFullyQualifiedName():string { return 'MyGame.Example.Monster'; } static startMonster(builder:flatbuffers.Builder) { - builder.startObject(52); + builder.startObject(54); } static addPos(builder:flatbuffers.Builder, posOffset:flatbuffers.Offset) { @@ -1084,6 +1116,14 @@ static addNativeInline(builder:flatbuffers.Builder, nativeInlineOffset:flatbuffe builder.addFieldStruct(51, nativeInlineOffset, 0); } +static addLongEnumNonEnumDefault(builder:flatbuffers.Builder, longEnumNonEnumDefault:bigint) { + builder.addFieldInt64(52, longEnumNonEnumDefault, BigInt('0')); +} + +static addLongEnumNormalDefault(builder:flatbuffers.Builder, longEnumNormalDefault:bigint) { + builder.addFieldInt64(53, longEnumNormalDefault, BigInt('2')); +} + static endMonster(builder:flatbuffers.Builder):flatbuffers.Offset { const offset = builder.endObject(); builder.requiredField(offset, 10) // name @@ -1171,7 +1211,9 @@ unpack(): MonsterT { this.signedEnum(), this.bb!.createScalarList(this.testrequirednestedflatbuffer.bind(this), this.testrequirednestedflatbufferLength()), this.bb!.createObjList(this.scalarKeySortedTables.bind(this), this.scalarKeySortedTablesLength()), - (this.nativeInline() !== null ? this.nativeInline()!.unpack() : null) + (this.nativeInline() !== null ? this.nativeInline()!.unpack() : null), + this.longEnumNonEnumDefault(), + this.longEnumNormalDefault() ); } @@ -1240,6 +1282,8 @@ unpackTo(_o: MonsterT): void { _o.testrequirednestedflatbuffer = this.bb!.createScalarList(this.testrequirednestedflatbuffer.bind(this), this.testrequirednestedflatbufferLength()); _o.scalarKeySortedTables = this.bb!.createObjList(this.scalarKeySortedTables.bind(this), this.scalarKeySortedTablesLength()); _o.nativeInline = (this.nativeInline() !== null ? this.nativeInline()!.unpack() : null); + _o.longEnumNonEnumDefault = this.longEnumNonEnumDefault(); + _o.longEnumNormalDefault = this.longEnumNormalDefault(); } } @@ -1295,7 +1339,9 @@ constructor( public signedEnum: Race = Race.None, public testrequirednestedflatbuffer: (number)[] = [], public scalarKeySortedTables: (StatT)[] = [], - public nativeInline: TestT|null = null + public nativeInline: TestT|null = null, + public longEnumNonEnumDefault: bigint = BigInt('0'), + public longEnumNormalDefault: bigint = BigInt('2') ){} @@ -1380,6 +1426,8 @@ pack(builder:flatbuffers.Builder): flatbuffers.Offset { Monster.addTestrequirednestedflatbuffer(builder, testrequirednestedflatbuffer); Monster.addScalarKeySortedTables(builder, scalarKeySortedTables); Monster.addNativeInline(builder, (this.nativeInline !== null ? this.nativeInline!.pack(builder) : 0)); + Monster.addLongEnumNonEnumDefault(builder, this.longEnumNonEnumDefault); + Monster.addLongEnumNormalDefault(builder, this.longEnumNormalDefault); return Monster.endMonster(builder); } diff --git a/tests/rust_usage_test/tests/integration_test.rs b/tests/rust_usage_test/tests/integration_test.rs index 5f47db540..9a4c8b3a3 100644 --- a/tests/rust_usage_test/tests/integration_test.rs +++ b/tests/rust_usage_test/tests/integration_test.rs @@ -191,6 +191,8 @@ fn object_api_defaults() { testrequirednestedflatbuffer: None, // despite the name, it is not required. scalar_key_sorted_tables: None, native_inline: None, + long_enum_non_enum_default: Default::default(), + long_enum_normal_default: LongEnum::LongOne, } ); } @@ -1832,7 +1834,8 @@ mod write_and_read_examples { any_unique: None, any_ambiguous_type: NONE, any_ambiguous: None, \ vector_of_enums: None, signed_enum: None, \ testrequirednestedflatbuffer: None, scalar_key_sorted_tables: None, \ - native_inline: None }, \ + native_inline: None, long_enum_non_enum_default: (empty), \ + long_enum_normal_default: LongOne }, \ test4: Some([Test { a: 10, b: 20 }, Test { a: 30, b: 40 }]), \ testarrayofstring: Some([\"test1\", \"test2\"]), \ testarrayoftables: None, enemy: None, testnestedflatbuffer: None, \ @@ -1851,7 +1854,8 @@ mod write_and_read_examples { any_unique: None, any_ambiguous_type: NONE, any_ambiguous: None, \ vector_of_enums: None, signed_enum: None, \ testrequirednestedflatbuffer: None, scalar_key_sorted_tables: None, \ - native_inline: None }" + native_inline: None, long_enum_non_enum_default: (empty), \ + long_enum_normal_default: LongOne }" ); }