[Lobster] support unsigned integer reads

(depends on the latest Lobster version)
This commit is contained in:
Wouter van Oortmerssen
2022-03-08 15:13:13 -08:00
parent 4016c549d3
commit 777e78d8dd
4 changed files with 49 additions and 46 deletions

View File

@@ -44,7 +44,7 @@ class Monster : flatbuffers_handle
def name(): def name():
return buf_.flatbuffers_field_string(pos_, 10) return buf_.flatbuffers_field_string(pos_, 10)
def inventory(i:int): def inventory(i:int):
return buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 14) + i * 1) return buf_.read_uint8_le(buf_.flatbuffers_field_vector(pos_, 14) + i * 1)
def inventory_length(): def inventory_length():
return buf_.flatbuffers_field_vector_len(pos_, 14) return buf_.flatbuffers_field_vector_len(pos_, 14)
def color(): def color():
@@ -54,7 +54,7 @@ class Monster : flatbuffers_handle
def weapons_length(): def weapons_length():
return buf_.flatbuffers_field_vector_len(pos_, 18) return buf_.flatbuffers_field_vector_len(pos_, 18)
def equipped_type(): def equipped_type():
return Equipment(buf_.flatbuffers_field_int8(pos_, 20, 0)) return Equipment(buf_.flatbuffers_field_uint8(pos_, 20, 0))
def equipped_as_Weapon(): def equipped_as_Weapon():
return MyGame_Sample_Weapon { buf_, buf_.flatbuffers_field_table(pos_, 22) } return MyGame_Sample_Weapon { buf_, buf_.flatbuffers_field_table(pos_, 22) }
def path(i:int): def path(i:int):

View File

@@ -60,7 +60,10 @@ class LobsterGenerator : public BaseGenerator {
std::string GenTypeName(const Type &type) { std::string GenTypeName(const Type &type) {
auto bits = NumToString(SizeOf(type.base_type) * 8); auto bits = NumToString(SizeOf(type.base_type) * 8);
if (IsInteger(type.base_type)) return "int" + bits; if (IsInteger(type.base_type)) {
if (IsUnsigned(type.base_type)) return "uint" + bits;
else return "int" + bits;
}
if (IsFloat(type.base_type)) return "float" + bits; if (IsFloat(type.base_type)) return "float" + bits;
if (IsString(type)) return "string"; if (IsString(type)) return "string";
if (type.base_type == BASE_TYPE_STRUCT) return "table"; if (type.base_type == BASE_TYPE_STRUCT) return "table";

View File

@@ -114,7 +114,7 @@ def CreateTest(b_:flatbuffers_builder, a:int, b:int):
class TestSimpleTableWithEnum : flatbuffers_handle class TestSimpleTableWithEnum : flatbuffers_handle
def color(): def color():
return Color(buf_.flatbuffers_field_int8(pos_, 4, 2)) return Color(buf_.flatbuffers_field_uint8(pos_, 4, 2))
def GetRootAsTestSimpleTableWithEnum(buf:string): return TestSimpleTableWithEnum { buf, buf.flatbuffers_indirect(0) } def GetRootAsTestSimpleTableWithEnum(buf:string): return TestSimpleTableWithEnum { buf, buf.flatbuffers_indirect(0) }
@@ -139,7 +139,7 @@ class Vec3 : flatbuffers_handle
def test1(): def test1():
return buf_.read_float64_le(pos_ + 16) return buf_.read_float64_le(pos_ + 16)
def test2(): def test2():
return Color(buf_.read_int8_le(pos_ + 24)) return Color(buf_.read_uint8_le(pos_ + 24))
def test3(): def test3():
return MyGame_Example_Test{ buf_, pos_ + 26 } return MyGame_Example_Test{ buf_, pos_ + 26 }
@@ -161,9 +161,9 @@ def CreateVec3(b_:flatbuffers_builder, x:float, y:float, z:float, test1:float, t
class Ability : flatbuffers_handle class Ability : flatbuffers_handle
def id(): def id():
return buf_.read_int32_le(pos_ + 0) return buf_.read_uint32_le(pos_ + 0)
def distance(): def distance():
return buf_.read_int32_le(pos_ + 4) return buf_.read_uint32_le(pos_ + 4)
def CreateAbility(b_:flatbuffers_builder, id:int, distance:int): def CreateAbility(b_:flatbuffers_builder, id:int, distance:int):
b_.Prep(4, 8) b_.Prep(4, 8)
@@ -199,7 +199,7 @@ class Stat : flatbuffers_handle
def val(): def val():
return buf_.flatbuffers_field_int64(pos_, 6, 0) return buf_.flatbuffers_field_int64(pos_, 6, 0)
def count(): def count():
return buf_.flatbuffers_field_int16(pos_, 8, 0) return buf_.flatbuffers_field_uint16(pos_, 8, 0)
def GetRootAsStat(buf:string): return Stat { buf, buf.flatbuffers_indirect(0) } def GetRootAsStat(buf:string): return Stat { buf, buf.flatbuffers_indirect(0) }
@@ -222,7 +222,7 @@ struct StatBuilder:
class Referrable : flatbuffers_handle class Referrable : flatbuffers_handle
def id(): def id():
return buf_.flatbuffers_field_int64(pos_, 4, 0) return buf_.flatbuffers_field_uint64(pos_, 4, 0)
def GetRootAsReferrable(buf:string): return Referrable { buf, buf.flatbuffers_indirect(0) } def GetRootAsReferrable(buf:string): return Referrable { buf, buf.flatbuffers_indirect(0) }
@@ -249,13 +249,13 @@ class Monster : flatbuffers_handle
def name(): def name():
return buf_.flatbuffers_field_string(pos_, 10) return buf_.flatbuffers_field_string(pos_, 10)
def inventory(i:int): def inventory(i:int):
return buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 14) + i * 1) return buf_.read_uint8_le(buf_.flatbuffers_field_vector(pos_, 14) + i * 1)
def inventory_length(): def inventory_length():
return buf_.flatbuffers_field_vector_len(pos_, 14) return buf_.flatbuffers_field_vector_len(pos_, 14)
def color(): def color():
return Color(buf_.flatbuffers_field_int8(pos_, 16, 8)) return Color(buf_.flatbuffers_field_uint8(pos_, 16, 8))
def test_type(): def test_type():
return Any(buf_.flatbuffers_field_int8(pos_, 18, 0)) return Any(buf_.flatbuffers_field_uint8(pos_, 18, 0))
def test_as_Monster(): def test_as_Monster():
return MyGame_Example_Monster { buf_, buf_.flatbuffers_field_table(pos_, 20) } return MyGame_Example_Monster { buf_, buf_.flatbuffers_field_table(pos_, 20) }
def test_as_TestSimpleTableWithEnum(): def test_as_TestSimpleTableWithEnum():
@@ -280,7 +280,7 @@ class Monster : flatbuffers_handle
let o = buf_.flatbuffers_field_table(pos_, 28) let o = buf_.flatbuffers_field_table(pos_, 28)
return if o: MyGame_Example_Monster { buf_, o } else: nil return if o: MyGame_Example_Monster { buf_, o } else: nil
def testnestedflatbuffer(i:int): def testnestedflatbuffer(i:int):
return buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 30) + i * 1) return buf_.read_uint8_le(buf_.flatbuffers_field_vector(pos_, 30) + i * 1)
def testnestedflatbuffer_length(): def testnestedflatbuffer_length():
return buf_.flatbuffers_field_vector_len(pos_, 30) return buf_.flatbuffers_field_vector_len(pos_, 30)
def testempty(): def testempty():
@@ -291,19 +291,19 @@ class Monster : flatbuffers_handle
def testhashs32_fnv1(): def testhashs32_fnv1():
return buf_.flatbuffers_field_int32(pos_, 36, 0) return buf_.flatbuffers_field_int32(pos_, 36, 0)
def testhashu32_fnv1(): def testhashu32_fnv1():
return buf_.flatbuffers_field_int32(pos_, 38, 0) return buf_.flatbuffers_field_uint32(pos_, 38, 0)
def testhashs64_fnv1(): def testhashs64_fnv1():
return buf_.flatbuffers_field_int64(pos_, 40, 0) return buf_.flatbuffers_field_int64(pos_, 40, 0)
def testhashu64_fnv1(): def testhashu64_fnv1():
return buf_.flatbuffers_field_int64(pos_, 42, 0) return buf_.flatbuffers_field_uint64(pos_, 42, 0)
def testhashs32_fnv1a(): def testhashs32_fnv1a():
return buf_.flatbuffers_field_int32(pos_, 44, 0) return buf_.flatbuffers_field_int32(pos_, 44, 0)
def testhashu32_fnv1a(): def testhashu32_fnv1a():
return buf_.flatbuffers_field_int32(pos_, 46, 0) return buf_.flatbuffers_field_uint32(pos_, 46, 0)
def testhashs64_fnv1a(): def testhashs64_fnv1a():
return buf_.flatbuffers_field_int64(pos_, 48, 0) return buf_.flatbuffers_field_int64(pos_, 48, 0)
def testhashu64_fnv1a(): def testhashu64_fnv1a():
return buf_.flatbuffers_field_int64(pos_, 50, 0) return buf_.flatbuffers_field_uint64(pos_, 50, 0)
def testarrayofbools(i:int): def testarrayofbools(i:int):
return buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 52) + i * 1) return buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 52) + i * 1)
def testarrayofbools_length(): def testarrayofbools_length():
@@ -323,7 +323,7 @@ class Monster : flatbuffers_handle
def testarrayofsortedstruct_length(): def testarrayofsortedstruct_length():
return buf_.flatbuffers_field_vector_len(pos_, 62) return buf_.flatbuffers_field_vector_len(pos_, 62)
def flex(i:int): def flex(i:int):
return buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 64) + i * 1) return buf_.read_uint8_le(buf_.flatbuffers_field_vector(pos_, 64) + i * 1)
def flex_length(): def flex_length():
return buf_.flatbuffers_field_vector_len(pos_, 64) return buf_.flatbuffers_field_vector_len(pos_, 64)
def test5(i:int): def test5(i:int):
@@ -346,9 +346,9 @@ class Monster : flatbuffers_handle
def vector_of_referrables_length(): def vector_of_referrables_length():
return buf_.flatbuffers_field_vector_len(pos_, 74) return buf_.flatbuffers_field_vector_len(pos_, 74)
def single_weak_reference(): def single_weak_reference():
return buf_.flatbuffers_field_int64(pos_, 76, 0) return buf_.flatbuffers_field_uint64(pos_, 76, 0)
def vector_of_weak_references(i:int): def vector_of_weak_references(i:int):
return buf_.read_int64_le(buf_.flatbuffers_field_vector(pos_, 78) + i * 8) return buf_.read_uint64_le(buf_.flatbuffers_field_vector(pos_, 78) + i * 8)
def vector_of_weak_references_length(): def vector_of_weak_references_length():
return buf_.flatbuffers_field_vector_len(pos_, 78) return buf_.flatbuffers_field_vector_len(pos_, 78)
def vector_of_strong_referrables(i:int): def vector_of_strong_referrables(i:int):
@@ -356,19 +356,19 @@ class Monster : flatbuffers_handle
def vector_of_strong_referrables_length(): def vector_of_strong_referrables_length():
return buf_.flatbuffers_field_vector_len(pos_, 80) return buf_.flatbuffers_field_vector_len(pos_, 80)
def co_owning_reference(): def co_owning_reference():
return buf_.flatbuffers_field_int64(pos_, 82, 0) return buf_.flatbuffers_field_uint64(pos_, 82, 0)
def vector_of_co_owning_references(i:int): def vector_of_co_owning_references(i:int):
return buf_.read_int64_le(buf_.flatbuffers_field_vector(pos_, 84) + i * 8) return buf_.read_uint64_le(buf_.flatbuffers_field_vector(pos_, 84) + i * 8)
def vector_of_co_owning_references_length(): def vector_of_co_owning_references_length():
return buf_.flatbuffers_field_vector_len(pos_, 84) return buf_.flatbuffers_field_vector_len(pos_, 84)
def non_owning_reference(): def non_owning_reference():
return buf_.flatbuffers_field_int64(pos_, 86, 0) return buf_.flatbuffers_field_uint64(pos_, 86, 0)
def vector_of_non_owning_references(i:int): def vector_of_non_owning_references(i:int):
return buf_.read_int64_le(buf_.flatbuffers_field_vector(pos_, 88) + i * 8) return buf_.read_uint64_le(buf_.flatbuffers_field_vector(pos_, 88) + i * 8)
def vector_of_non_owning_references_length(): def vector_of_non_owning_references_length():
return buf_.flatbuffers_field_vector_len(pos_, 88) return buf_.flatbuffers_field_vector_len(pos_, 88)
def any_unique_type(): def any_unique_type():
return AnyUniqueAliases(buf_.flatbuffers_field_int8(pos_, 90, 0)) return AnyUniqueAliases(buf_.flatbuffers_field_uint8(pos_, 90, 0))
def any_unique_as_M(): def any_unique_as_M():
return MyGame_Example_Monster { buf_, buf_.flatbuffers_field_table(pos_, 92) } return MyGame_Example_Monster { buf_, buf_.flatbuffers_field_table(pos_, 92) }
def any_unique_as_TS(): def any_unique_as_TS():
@@ -376,7 +376,7 @@ class Monster : flatbuffers_handle
def any_unique_as_M2(): def any_unique_as_M2():
return MyGame_Example2_Monster { buf_, buf_.flatbuffers_field_table(pos_, 92) } return MyGame_Example2_Monster { buf_, buf_.flatbuffers_field_table(pos_, 92) }
def any_ambiguous_type(): def any_ambiguous_type():
return AnyAmbiguousAliases(buf_.flatbuffers_field_int8(pos_, 94, 0)) return AnyAmbiguousAliases(buf_.flatbuffers_field_uint8(pos_, 94, 0))
def any_ambiguous_as_M1(): def any_ambiguous_as_M1():
return MyGame_Example_Monster { buf_, buf_.flatbuffers_field_table(pos_, 96) } return MyGame_Example_Monster { buf_, buf_.flatbuffers_field_table(pos_, 96) }
def any_ambiguous_as_M2(): def any_ambiguous_as_M2():
@@ -384,13 +384,13 @@ class Monster : flatbuffers_handle
def any_ambiguous_as_M3(): def any_ambiguous_as_M3():
return MyGame_Example_Monster { buf_, buf_.flatbuffers_field_table(pos_, 96) } return MyGame_Example_Monster { buf_, buf_.flatbuffers_field_table(pos_, 96) }
def vector_of_enums(i:int): def vector_of_enums(i:int):
return buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 98) + i * 1) return buf_.read_uint8_le(buf_.flatbuffers_field_vector(pos_, 98) + i * 1)
def vector_of_enums_length(): def vector_of_enums_length():
return buf_.flatbuffers_field_vector_len(pos_, 98) return buf_.flatbuffers_field_vector_len(pos_, 98)
def signed_enum(): def signed_enum():
return Race(buf_.flatbuffers_field_int8(pos_, 100, -1)) return Race(buf_.flatbuffers_field_int8(pos_, 100, -1))
def testrequirednestedflatbuffer(i:int): def testrequirednestedflatbuffer(i:int):
return buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 102) + i * 1) return buf_.read_uint8_le(buf_.flatbuffers_field_vector(pos_, 102) + i * 1)
def testrequirednestedflatbuffer_length(): def testrequirednestedflatbuffer_length():
return buf_.flatbuffers_field_vector_len(pos_, 102) return buf_.flatbuffers_field_vector_len(pos_, 102)
def scalar_key_sorted_tables(i:int): def scalar_key_sorted_tables(i:int):
@@ -401,9 +401,9 @@ class Monster : flatbuffers_handle
let o = buf_.flatbuffers_field_struct(pos_, 106) let o = buf_.flatbuffers_field_struct(pos_, 106)
return if o: MyGame_Example_Test { buf_, o } else: nil return if o: MyGame_Example_Test { buf_, o } else: nil
def long_enum_non_enum_default(): def long_enum_non_enum_default():
return LongEnum(buf_.flatbuffers_field_int64(pos_, 108, 0)) return LongEnum(buf_.flatbuffers_field_uint64(pos_, 108, 0))
def long_enum_normal_default(): def long_enum_normal_default():
return LongEnum(buf_.flatbuffers_field_int64(pos_, 110, 2)) return LongEnum(buf_.flatbuffers_field_uint64(pos_, 110, 2))
def GetRootAsMonster(buf:string): return Monster { buf, buf.flatbuffers_indirect(0) } def GetRootAsMonster(buf:string): return Monster { buf, buf.flatbuffers_indirect(0) }
@@ -706,19 +706,19 @@ class TypeAliases : flatbuffers_handle
def i8(): def i8():
return buf_.flatbuffers_field_int8(pos_, 4, 0) return buf_.flatbuffers_field_int8(pos_, 4, 0)
def u8(): def u8():
return buf_.flatbuffers_field_int8(pos_, 6, 0) return buf_.flatbuffers_field_uint8(pos_, 6, 0)
def i16(): def i16():
return buf_.flatbuffers_field_int16(pos_, 8, 0) return buf_.flatbuffers_field_int16(pos_, 8, 0)
def u16(): def u16():
return buf_.flatbuffers_field_int16(pos_, 10, 0) return buf_.flatbuffers_field_uint16(pos_, 10, 0)
def i32(): def i32():
return buf_.flatbuffers_field_int32(pos_, 12, 0) return buf_.flatbuffers_field_int32(pos_, 12, 0)
def u32(): def u32():
return buf_.flatbuffers_field_int32(pos_, 14, 0) return buf_.flatbuffers_field_uint32(pos_, 14, 0)
def i64(): def i64():
return buf_.flatbuffers_field_int64(pos_, 16, 0) return buf_.flatbuffers_field_int64(pos_, 16, 0)
def u64(): def u64():
return buf_.flatbuffers_field_int64(pos_, 18, 0) return buf_.flatbuffers_field_uint64(pos_, 18, 0)
def f32(): def f32():
return buf_.flatbuffers_field_float32(pos_, 20, 0.0) return buf_.flatbuffers_field_float32(pos_, 20, 0.0)
def f64(): def f64():

View File

@@ -18,11 +18,11 @@ class ScalarStuff : flatbuffers_handle
def default_i8(): def default_i8():
return buf_.flatbuffers_field_int8(pos_, 8, 42) return buf_.flatbuffers_field_int8(pos_, 8, 42)
def just_u8(): def just_u8():
return buf_.flatbuffers_field_int8(pos_, 10, 0) return buf_.flatbuffers_field_uint8(pos_, 10, 0)
def maybe_u8(): def maybe_u8():
return buf_.flatbuffers_field_int8(pos_, 12, 0), buf_.flatbuffers_field_present(pos_, 12) return buf_.flatbuffers_field_uint8(pos_, 12, 0), buf_.flatbuffers_field_present(pos_, 12)
def default_u8(): def default_u8():
return buf_.flatbuffers_field_int8(pos_, 14, 42) return buf_.flatbuffers_field_uint8(pos_, 14, 42)
def just_i16(): def just_i16():
return buf_.flatbuffers_field_int16(pos_, 16, 0) return buf_.flatbuffers_field_int16(pos_, 16, 0)
def maybe_i16(): def maybe_i16():
@@ -30,11 +30,11 @@ class ScalarStuff : flatbuffers_handle
def default_i16(): def default_i16():
return buf_.flatbuffers_field_int16(pos_, 20, 42) return buf_.flatbuffers_field_int16(pos_, 20, 42)
def just_u16(): def just_u16():
return buf_.flatbuffers_field_int16(pos_, 22, 0) return buf_.flatbuffers_field_uint16(pos_, 22, 0)
def maybe_u16(): def maybe_u16():
return buf_.flatbuffers_field_int16(pos_, 24, 0), buf_.flatbuffers_field_present(pos_, 24) return buf_.flatbuffers_field_uint16(pos_, 24, 0), buf_.flatbuffers_field_present(pos_, 24)
def default_u16(): def default_u16():
return buf_.flatbuffers_field_int16(pos_, 26, 42) return buf_.flatbuffers_field_uint16(pos_, 26, 42)
def just_i32(): def just_i32():
return buf_.flatbuffers_field_int32(pos_, 28, 0) return buf_.flatbuffers_field_int32(pos_, 28, 0)
def maybe_i32(): def maybe_i32():
@@ -42,11 +42,11 @@ class ScalarStuff : flatbuffers_handle
def default_i32(): def default_i32():
return buf_.flatbuffers_field_int32(pos_, 32, 42) return buf_.flatbuffers_field_int32(pos_, 32, 42)
def just_u32(): def just_u32():
return buf_.flatbuffers_field_int32(pos_, 34, 0) return buf_.flatbuffers_field_uint32(pos_, 34, 0)
def maybe_u32(): def maybe_u32():
return buf_.flatbuffers_field_int32(pos_, 36, 0), buf_.flatbuffers_field_present(pos_, 36) return buf_.flatbuffers_field_uint32(pos_, 36, 0), buf_.flatbuffers_field_present(pos_, 36)
def default_u32(): def default_u32():
return buf_.flatbuffers_field_int32(pos_, 38, 42) return buf_.flatbuffers_field_uint32(pos_, 38, 42)
def just_i64(): def just_i64():
return buf_.flatbuffers_field_int64(pos_, 40, 0) return buf_.flatbuffers_field_int64(pos_, 40, 0)
def maybe_i64(): def maybe_i64():
@@ -54,11 +54,11 @@ class ScalarStuff : flatbuffers_handle
def default_i64(): def default_i64():
return buf_.flatbuffers_field_int64(pos_, 44, 42) return buf_.flatbuffers_field_int64(pos_, 44, 42)
def just_u64(): def just_u64():
return buf_.flatbuffers_field_int64(pos_, 46, 0) return buf_.flatbuffers_field_uint64(pos_, 46, 0)
def maybe_u64(): def maybe_u64():
return buf_.flatbuffers_field_int64(pos_, 48, 0), buf_.flatbuffers_field_present(pos_, 48) return buf_.flatbuffers_field_uint64(pos_, 48, 0), buf_.flatbuffers_field_present(pos_, 48)
def default_u64(): def default_u64():
return buf_.flatbuffers_field_int64(pos_, 50, 42) return buf_.flatbuffers_field_uint64(pos_, 50, 42)
def just_f32(): def just_f32():
return buf_.flatbuffers_field_float32(pos_, 52, 0.0) return buf_.flatbuffers_field_float32(pos_, 52, 0.0)
def maybe_f32(): def maybe_f32():