[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():
return buf_.flatbuffers_field_string(pos_, 10)
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():
return buf_.flatbuffers_field_vector_len(pos_, 14)
def color():
@@ -54,7 +54,7 @@ class Monster : flatbuffers_handle
def weapons_length():
return buf_.flatbuffers_field_vector_len(pos_, 18)
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():
return MyGame_Sample_Weapon { buf_, buf_.flatbuffers_field_table(pos_, 22) }
def path(i:int):

View File

@@ -60,7 +60,10 @@ class LobsterGenerator : public BaseGenerator {
std::string GenTypeName(const Type &type) {
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 (IsString(type)) return "string";
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
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) }
@@ -139,7 +139,7 @@ class Vec3 : flatbuffers_handle
def test1():
return buf_.read_float64_le(pos_ + 16)
def test2():
return Color(buf_.read_int8_le(pos_ + 24))
return Color(buf_.read_uint8_le(pos_ + 24))
def test3():
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
def id():
return buf_.read_int32_le(pos_ + 0)
return buf_.read_uint32_le(pos_ + 0)
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):
b_.Prep(4, 8)
@@ -199,7 +199,7 @@ class Stat : flatbuffers_handle
def val():
return buf_.flatbuffers_field_int64(pos_, 6, 0)
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) }
@@ -222,7 +222,7 @@ struct StatBuilder:
class Referrable : flatbuffers_handle
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) }
@@ -249,13 +249,13 @@ class Monster : flatbuffers_handle
def name():
return buf_.flatbuffers_field_string(pos_, 10)
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():
return buf_.flatbuffers_field_vector_len(pos_, 14)
def color():
return Color(buf_.flatbuffers_field_int8(pos_, 16, 8))
return Color(buf_.flatbuffers_field_uint8(pos_, 16, 8))
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():
return MyGame_Example_Monster { buf_, buf_.flatbuffers_field_table(pos_, 20) }
def test_as_TestSimpleTableWithEnum():
@@ -280,7 +280,7 @@ class Monster : flatbuffers_handle
let o = buf_.flatbuffers_field_table(pos_, 28)
return if o: MyGame_Example_Monster { buf_, o } else: nil
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():
return buf_.flatbuffers_field_vector_len(pos_, 30)
def testempty():
@@ -291,19 +291,19 @@ class Monster : flatbuffers_handle
def testhashs32_fnv1():
return buf_.flatbuffers_field_int32(pos_, 36, 0)
def testhashu32_fnv1():
return buf_.flatbuffers_field_int32(pos_, 38, 0)
return buf_.flatbuffers_field_uint32(pos_, 38, 0)
def testhashs64_fnv1():
return buf_.flatbuffers_field_int64(pos_, 40, 0)
def testhashu64_fnv1():
return buf_.flatbuffers_field_int64(pos_, 42, 0)
return buf_.flatbuffers_field_uint64(pos_, 42, 0)
def testhashs32_fnv1a():
return buf_.flatbuffers_field_int32(pos_, 44, 0)
def testhashu32_fnv1a():
return buf_.flatbuffers_field_int32(pos_, 46, 0)
return buf_.flatbuffers_field_uint32(pos_, 46, 0)
def testhashs64_fnv1a():
return buf_.flatbuffers_field_int64(pos_, 48, 0)
def testhashu64_fnv1a():
return buf_.flatbuffers_field_int64(pos_, 50, 0)
return buf_.flatbuffers_field_uint64(pos_, 50, 0)
def testarrayofbools(i:int):
return buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 52) + i * 1)
def testarrayofbools_length():
@@ -323,7 +323,7 @@ class Monster : flatbuffers_handle
def testarrayofsortedstruct_length():
return buf_.flatbuffers_field_vector_len(pos_, 62)
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():
return buf_.flatbuffers_field_vector_len(pos_, 64)
def test5(i:int):
@@ -346,9 +346,9 @@ class Monster : flatbuffers_handle
def vector_of_referrables_length():
return buf_.flatbuffers_field_vector_len(pos_, 74)
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):
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():
return buf_.flatbuffers_field_vector_len(pos_, 78)
def vector_of_strong_referrables(i:int):
@@ -356,19 +356,19 @@ class Monster : flatbuffers_handle
def vector_of_strong_referrables_length():
return buf_.flatbuffers_field_vector_len(pos_, 80)
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):
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():
return buf_.flatbuffers_field_vector_len(pos_, 84)
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):
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():
return buf_.flatbuffers_field_vector_len(pos_, 88)
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():
return MyGame_Example_Monster { buf_, buf_.flatbuffers_field_table(pos_, 92) }
def any_unique_as_TS():
@@ -376,7 +376,7 @@ class Monster : flatbuffers_handle
def any_unique_as_M2():
return MyGame_Example2_Monster { buf_, buf_.flatbuffers_field_table(pos_, 92) }
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():
return MyGame_Example_Monster { buf_, buf_.flatbuffers_field_table(pos_, 96) }
def any_ambiguous_as_M2():
@@ -384,13 +384,13 @@ class Monster : flatbuffers_handle
def any_ambiguous_as_M3():
return MyGame_Example_Monster { buf_, buf_.flatbuffers_field_table(pos_, 96) }
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():
return buf_.flatbuffers_field_vector_len(pos_, 98)
def signed_enum():
return Race(buf_.flatbuffers_field_int8(pos_, 100, -1))
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():
return buf_.flatbuffers_field_vector_len(pos_, 102)
def scalar_key_sorted_tables(i:int):
@@ -401,9 +401,9 @@ class Monster : flatbuffers_handle
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))
return LongEnum(buf_.flatbuffers_field_uint64(pos_, 108, 0))
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) }
@@ -706,19 +706,19 @@ class TypeAliases : flatbuffers_handle
def i8():
return buf_.flatbuffers_field_int8(pos_, 4, 0)
def u8():
return buf_.flatbuffers_field_int8(pos_, 6, 0)
return buf_.flatbuffers_field_uint8(pos_, 6, 0)
def i16():
return buf_.flatbuffers_field_int16(pos_, 8, 0)
def u16():
return buf_.flatbuffers_field_int16(pos_, 10, 0)
return buf_.flatbuffers_field_uint16(pos_, 10, 0)
def i32():
return buf_.flatbuffers_field_int32(pos_, 12, 0)
def u32():
return buf_.flatbuffers_field_int32(pos_, 14, 0)
return buf_.flatbuffers_field_uint32(pos_, 14, 0)
def i64():
return buf_.flatbuffers_field_int64(pos_, 16, 0)
def u64():
return buf_.flatbuffers_field_int64(pos_, 18, 0)
return buf_.flatbuffers_field_uint64(pos_, 18, 0)
def f32():
return buf_.flatbuffers_field_float32(pos_, 20, 0.0)
def f64():

View File

@@ -18,11 +18,11 @@ class ScalarStuff : flatbuffers_handle
def default_i8():
return buf_.flatbuffers_field_int8(pos_, 8, 42)
def just_u8():
return buf_.flatbuffers_field_int8(pos_, 10, 0)
return buf_.flatbuffers_field_uint8(pos_, 10, 0)
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():
return buf_.flatbuffers_field_int8(pos_, 14, 42)
return buf_.flatbuffers_field_uint8(pos_, 14, 42)
def just_i16():
return buf_.flatbuffers_field_int16(pos_, 16, 0)
def maybe_i16():
@@ -30,11 +30,11 @@ class ScalarStuff : flatbuffers_handle
def default_i16():
return buf_.flatbuffers_field_int16(pos_, 20, 42)
def just_u16():
return buf_.flatbuffers_field_int16(pos_, 22, 0)
return buf_.flatbuffers_field_uint16(pos_, 22, 0)
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():
return buf_.flatbuffers_field_int16(pos_, 26, 42)
return buf_.flatbuffers_field_uint16(pos_, 26, 42)
def just_i32():
return buf_.flatbuffers_field_int32(pos_, 28, 0)
def maybe_i32():
@@ -42,11 +42,11 @@ class ScalarStuff : flatbuffers_handle
def default_i32():
return buf_.flatbuffers_field_int32(pos_, 32, 42)
def just_u32():
return buf_.flatbuffers_field_int32(pos_, 34, 0)
return buf_.flatbuffers_field_uint32(pos_, 34, 0)
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():
return buf_.flatbuffers_field_int32(pos_, 38, 42)
return buf_.flatbuffers_field_uint32(pos_, 38, 42)
def just_i64():
return buf_.flatbuffers_field_int64(pos_, 40, 0)
def maybe_i64():
@@ -54,11 +54,11 @@ class ScalarStuff : flatbuffers_handle
def default_i64():
return buf_.flatbuffers_field_int64(pos_, 44, 42)
def just_u64():
return buf_.flatbuffers_field_int64(pos_, 46, 0)
return buf_.flatbuffers_field_uint64(pos_, 46, 0)
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():
return buf_.flatbuffers_field_int64(pos_, 50, 42)
return buf_.flatbuffers_field_uint64(pos_, 50, 42)
def just_f32():
return buf_.flatbuffers_field_float32(pos_, 52, 0.0)
def maybe_f32():