Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
flatbuffers
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
flatbuffers
Commits
563dcd68
Commit
563dcd68
authored
May 22, 2019
by
aardappel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Made Lobster API use strongly typed enums
parent
30ac512a
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
32 additions
and
26 deletions
+32
-26
monster_generated.lobster
samples/monster_generated.lobster
+4
-4
idl_gen_lobster.cpp
src/idl_gen_lobster.cpp
+11
-6
lobstertest.lobster
tests/lobstertest.lobster
+2
-1
monster_test_generated.lobster
tests/monster_test_generated.lobster
+13
-13
namespace_test2_generated.lobster
tests/namespace_test/namespace_test2_generated.lobster
+2
-2
No files found.
samples/monster_generated.lobster
View file @
563dcd68
...
@@ -48,13 +48,13 @@ class Monster : flatbuffers_handle
...
@@ -48,13 +48,13 @@ class Monster : flatbuffers_handle
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
buf_.flatbuffers_field_int8(pos_, 16, 2
)
return
Color(buf_.flatbuffers_field_int8(pos_, 16, 2)
)
def weapons(i:int):
def weapons(i:int):
return MyGame_Sample_Weapon { buf_, buf_.flatbuffers_indirect(buf_.flatbuffers_field_vector(pos_, 18) + i * 4) }
return MyGame_Sample_Weapon { buf_, buf_.flatbuffers_indirect(buf_.flatbuffers_field_vector(pos_, 18) + i * 4) }
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
buf_.flatbuffers_field_int8(pos_, 20, 0
)
return
Equipment(buf_.flatbuffers_field_int8(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):
...
@@ -82,7 +82,7 @@ def MonsterCreateInventoryVector(b_:flatbuffers_builder, v_:[int]):
...
@@ -82,7 +82,7 @@ def MonsterCreateInventoryVector(b_:flatbuffers_builder, v_:[int]):
b_.StartVector(1, v_.length, 1)
b_.StartVector(1, v_.length, 1)
reverse(v_) e_: b_.PrependUint8(e_)
reverse(v_) e_: b_.PrependUint8(e_)
return b_.EndVector(v_.length)
return b_.EndVector(v_.length)
def MonsterAddColor(b_:flatbuffers_builder, color:
int
):
def MonsterAddColor(b_:flatbuffers_builder, color:
Color
):
b_.PrependInt8Slot(6, color, 2)
b_.PrependInt8Slot(6, color, 2)
def MonsterAddWeapons(b_:flatbuffers_builder, weapons:int):
def MonsterAddWeapons(b_:flatbuffers_builder, weapons:int):
b_.PrependUOffsetTRelativeSlot(7, weapons, 0)
b_.PrependUOffsetTRelativeSlot(7, weapons, 0)
...
@@ -92,7 +92,7 @@ def MonsterCreateWeaponsVector(b_:flatbuffers_builder, v_:[int]):
...
@@ -92,7 +92,7 @@ def MonsterCreateWeaponsVector(b_:flatbuffers_builder, v_:[int]):
b_.StartVector(4, v_.length, 4)
b_.StartVector(4, v_.length, 4)
reverse(v_) e_: b_.PrependUOffsetTRelative(e_)
reverse(v_) e_: b_.PrependUOffsetTRelative(e_)
return b_.EndVector(v_.length)
return b_.EndVector(v_.length)
def MonsterAddEquippedType(b_:flatbuffers_builder, equipped_type:
i
nt):
def MonsterAddEquippedType(b_:flatbuffers_builder, equipped_type:
Equipme
nt):
b_.PrependUint8Slot(8, equipped_type, 0)
b_.PrependUint8Slot(8, equipped_type, 0)
def MonsterAddEquipped(b_:flatbuffers_builder, equipped:int):
def MonsterAddEquipped(b_:flatbuffers_builder, equipped:int):
b_.PrependUOffsetTRelativeSlot(9, equipped, 0)
b_.PrependUOffsetTRelativeSlot(9, equipped, 0)
...
...
src/idl_gen_lobster.cpp
View file @
563dcd68
...
@@ -66,6 +66,7 @@ class LobsterGenerator : public BaseGenerator {
...
@@ -66,6 +66,7 @@ class LobsterGenerator : public BaseGenerator {
std
::
string
LobsterType
(
const
Type
&
type
)
{
std
::
string
LobsterType
(
const
Type
&
type
)
{
if
(
IsFloat
(
type
.
base_type
))
return
"float"
;
if
(
IsFloat
(
type
.
base_type
))
return
"float"
;
if
(
IsScalar
(
type
.
base_type
)
&&
type
.
enum_def
)
return
NormalizedName
(
*
type
.
enum_def
);
return
"int"
;
return
"int"
;
}
}
...
@@ -98,15 +99,19 @@ class LobsterGenerator : public BaseGenerator {
...
@@ -98,15 +99,19 @@ class LobsterGenerator : public BaseGenerator {
auto
offsets
=
NumToString
(
field
.
value
.
offset
);
auto
offsets
=
NumToString
(
field
.
value
.
offset
);
auto
def
=
" def "
+
NormalizedName
(
field
);
auto
def
=
" def "
+
NormalizedName
(
field
);
if
(
IsScalar
(
field
.
value
.
type
.
base_type
))
{
if
(
IsScalar
(
field
.
value
.
type
.
base_type
))
{
std
::
string
acc
;
if
(
struct_def
.
fixed
)
{
if
(
struct_def
.
fixed
)
{
code
+=
def
+
"():
\n
return buf_.read_"
+
acc
=
"buf_.read_"
+
GenTypeName
(
field
.
value
.
type
)
+
GenTypeName
(
field
.
value
.
type
)
+
"_le(pos_ + "
+
offsets
+
"_le(pos_ + "
+
offsets
+
")"
;
")
\n
"
;
}
else
{
}
else
{
code
+=
def
+
"():
\n
return
buf_.flatbuffers_field_"
+
acc
=
"
buf_.flatbuffers_field_"
+
GenTypeName
(
field
.
value
.
type
)
+
"(pos_, "
+
offsets
+
", "
+
GenTypeName
(
field
.
value
.
type
)
+
"(pos_, "
+
offsets
+
", "
+
field
.
value
.
constant
+
")
\n
"
;
field
.
value
.
constant
+
")
"
;
}
}
if
(
field
.
value
.
type
.
enum_def
)
acc
=
NormalizedName
(
*
field
.
value
.
type
.
enum_def
)
+
"("
+
acc
+
")"
;
code
+=
def
+
"():
\n
return "
+
acc
+
"
\n
"
;
return
;
return
;
}
}
switch
(
field
.
value
.
type
.
base_type
)
{
switch
(
field
.
value
.
type
.
base_type
)
{
...
...
tests/lobstertest.lobster
View file @
563dcd68
...
@@ -89,7 +89,8 @@ def make_monster_from_generated_code():
...
@@ -89,7 +89,8 @@ def make_monster_from_generated_code():
[ -1.7976931348623157e+308, 0, 1.7976931348623157e+308 ])
[ -1.7976931348623157e+308, 0, 1.7976931348623157e+308 ])
b.MyGame_Example_MonsterStart()
b.MyGame_Example_MonsterStart()
b.MyGame_Example_MonsterAddPos(b.MyGame_Example_CreateVec3(1.0, 2.0, 3.0, 3.0, 2, 5, 6))
b.MyGame_Example_MonsterAddPos(b.MyGame_Example_CreateVec3(1.0, 2.0, 3.0, 3.0,
MyGame_Example_Color_Green, 5, 6))
b.MyGame_Example_MonsterAddHp(80)
b.MyGame_Example_MonsterAddHp(80)
b.MyGame_Example_MonsterAddName(name)
b.MyGame_Example_MonsterAddName(name)
b.MyGame_Example_MonsterAddInventory(inv)
b.MyGame_Example_MonsterAddInventory(inv)
...
...
tests/monster_test_generated.lobster
View file @
563dcd68
...
@@ -91,13 +91,13 @@ def CreateTest(b_:flatbuffers_builder, a:int, b:int):
...
@@ -91,13 +91,13 @@ def CreateTest(b_:flatbuffers_builder, a:int, b:int):
class TestSimpleTableWithEnum : flatbuffers_handle
class TestSimpleTableWithEnum : flatbuffers_handle
def color():
def color():
return
buf_.flatbuffers_field_int8(pos_, 4, 2
)
return
Color(buf_.flatbuffers_field_int8(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) }
def TestSimpleTableWithEnumStart(b_:flatbuffers_builder):
def TestSimpleTableWithEnumStart(b_:flatbuffers_builder):
b_.StartObject(1)
b_.StartObject(1)
def TestSimpleTableWithEnumAddColor(b_:flatbuffers_builder, color:
int
):
def TestSimpleTableWithEnumAddColor(b_:flatbuffers_builder, color:
Color
):
b_.PrependUint8Slot(0, color, 2)
b_.PrependUint8Slot(0, color, 2)
def TestSimpleTableWithEnumEnd(b_:flatbuffers_builder):
def TestSimpleTableWithEnumEnd(b_:flatbuffers_builder):
return b_.EndObject()
return b_.EndObject()
...
@@ -112,11 +112,11 @@ class Vec3 : flatbuffers_handle
...
@@ -112,11 +112,11 @@ 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
buf_.read_int8_le(pos_ + 24
)
return
Color(buf_.read_int8_le(pos_ + 24)
)
def test3():
def test3():
return MyGame_Example_Test{ buf_, pos_ + 26 }
return MyGame_Example_Test{ buf_, pos_ + 26 }
def CreateVec3(b_:flatbuffers_builder, x:float, y:float, z:float, test1:float, test2:
int
, test3_a:int, test3_b:int):
def CreateVec3(b_:flatbuffers_builder, x:float, y:float, z:float, test1:float, test2:
Color
, test3_a:int, test3_b:int):
b_.Prep(8, 32)
b_.Prep(8, 32)
b_.Pad(2)
b_.Pad(2)
b_.Prep(2, 4)
b_.Prep(2, 4)
...
@@ -194,9 +194,9 @@ class Monster : flatbuffers_handle
...
@@ -194,9 +194,9 @@ class Monster : flatbuffers_handle
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
buf_.flatbuffers_field_int8(pos_, 16, 8
)
return
Color(buf_.flatbuffers_field_int8(pos_, 16, 8)
)
def test_type():
def test_type():
return
buf_.flatbuffers_field_int8(pos_, 18, 0
)
return
Any(buf_.flatbuffers_field_int8(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():
...
@@ -309,7 +309,7 @@ class Monster : flatbuffers_handle
...
@@ -309,7 +309,7 @@ class Monster : flatbuffers_handle
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
buf_.flatbuffers_field_int8(pos_, 90, 0
)
return
AnyUniqueAliases(buf_.flatbuffers_field_int8(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_T():
def any_unique_as_T():
...
@@ -317,7 +317,7 @@ class Monster : flatbuffers_handle
...
@@ -317,7 +317,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
buf_.flatbuffers_field_int8(pos_, 94, 0
)
return
AnyAmbiguousAliases(buf_.flatbuffers_field_int8(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():
...
@@ -349,9 +349,9 @@ def MonsterCreateInventoryVector(b_:flatbuffers_builder, v_:[int]):
...
@@ -349,9 +349,9 @@ def MonsterCreateInventoryVector(b_:flatbuffers_builder, v_:[int]):
b_.StartVector(1, v_.length, 1)
b_.StartVector(1, v_.length, 1)
reverse(v_) e_: b_.PrependUint8(e_)
reverse(v_) e_: b_.PrependUint8(e_)
return b_.EndVector(v_.length)
return b_.EndVector(v_.length)
def MonsterAddColor(b_:flatbuffers_builder, color:
int
):
def MonsterAddColor(b_:flatbuffers_builder, color:
Color
):
b_.PrependUint8Slot(6, color, 8)
b_.PrependUint8Slot(6, color, 8)
def MonsterAddTestType(b_:flatbuffers_builder, test_type:
int
):
def MonsterAddTestType(b_:flatbuffers_builder, test_type:
Any
):
b_.PrependUint8Slot(7, test_type, 0)
b_.PrependUint8Slot(7, test_type, 0)
def MonsterAddTest(b_:flatbuffers_builder, test:int):
def MonsterAddTest(b_:flatbuffers_builder, test:int):
b_.PrependUOffsetTRelativeSlot(8, test, 0)
b_.PrependUOffsetTRelativeSlot(8, test, 0)
...
@@ -507,11 +507,11 @@ def MonsterCreateVectorOfNonOwningReferencesVector(b_:flatbuffers_builder, v_:[i
...
@@ -507,11 +507,11 @@ def MonsterCreateVectorOfNonOwningReferencesVector(b_:flatbuffers_builder, v_:[i
b_.StartVector(8, v_.length, 8)
b_.StartVector(8, v_.length, 8)
reverse(v_) e_: b_.PrependUint64(e_)
reverse(v_) e_: b_.PrependUint64(e_)
return b_.EndVector(v_.length)
return b_.EndVector(v_.length)
def MonsterAddAnyUniqueType(b_:flatbuffers_builder, any_unique_type:
int
):
def MonsterAddAnyUniqueType(b_:flatbuffers_builder, any_unique_type:
AnyUniqueAliases
):
b_.PrependUint8Slot(43, any_unique_type, 0)
b_.PrependUint8Slot(43, any_unique_type, 0)
def MonsterAddAnyUnique(b_:flatbuffers_builder, any_unique:int):
def MonsterAddAnyUnique(b_:flatbuffers_builder, any_unique:int):
b_.PrependUOffsetTRelativeSlot(44, any_unique, 0)
b_.PrependUOffsetTRelativeSlot(44, any_unique, 0)
def MonsterAddAnyAmbiguousType(b_:flatbuffers_builder, any_ambiguous_type:
int
):
def MonsterAddAnyAmbiguousType(b_:flatbuffers_builder, any_ambiguous_type:
AnyAmbiguousAliases
):
b_.PrependUint8Slot(45, any_ambiguous_type, 0)
b_.PrependUint8Slot(45, any_ambiguous_type, 0)
def MonsterAddAnyAmbiguous(b_:flatbuffers_builder, any_ambiguous:int):
def MonsterAddAnyAmbiguous(b_:flatbuffers_builder, any_ambiguous:int):
b_.PrependUOffsetTRelativeSlot(46, any_ambiguous, 0)
b_.PrependUOffsetTRelativeSlot(46, any_ambiguous, 0)
...
@@ -519,7 +519,7 @@ def MonsterAddVectorOfEnums(b_:flatbuffers_builder, vector_of_enums:int):
...
@@ -519,7 +519,7 @@ def MonsterAddVectorOfEnums(b_:flatbuffers_builder, vector_of_enums:int):
b_.PrependUOffsetTRelativeSlot(47, vector_of_enums, 0)
b_.PrependUOffsetTRelativeSlot(47, vector_of_enums, 0)
def MonsterStartVectorOfEnumsVector(b_:flatbuffers_builder, n_:int):
def MonsterStartVectorOfEnumsVector(b_:flatbuffers_builder, n_:int):
b_.StartVector(1, n_, 1)
b_.StartVector(1, n_, 1)
def MonsterCreateVectorOfEnumsVector(b_:flatbuffers_builder, v_:[
int
]):
def MonsterCreateVectorOfEnumsVector(b_:flatbuffers_builder, v_:[
Color
]):
b_.StartVector(1, v_.length, 1)
b_.StartVector(1, v_.length, 1)
reverse(v_) e_: b_.PrependUint8(e_)
reverse(v_) e_: b_.PrependUint8(e_)
return b_.EndVector(v_.length)
return b_.EndVector(v_.length)
...
...
tests/namespace_test/namespace_test2_generated.lobster
View file @
563dcd68
...
@@ -18,7 +18,7 @@ class TableInFirstNS : flatbuffers_handle
...
@@ -18,7 +18,7 @@ class TableInFirstNS : flatbuffers_handle
let o = buf_.flatbuffers_field_table(pos_, 4)
let o = buf_.flatbuffers_field_table(pos_, 4)
return if o: NamespaceA_NamespaceB_TableInNestedNS { buf_, o } else: nil
return if o: NamespaceA_NamespaceB_TableInNestedNS { buf_, o } else: nil
def foo_enum():
def foo_enum():
return
buf_.flatbuffers_field_int8(pos_, 6, 0
)
return
EnumInNestedNS(buf_.flatbuffers_field_int8(pos_, 6, 0)
)
def foo_struct():
def foo_struct():
let o = buf_.flatbuffers_field_struct(pos_, 8)
let o = buf_.flatbuffers_field_struct(pos_, 8)
return if o: NamespaceA_NamespaceB_StructInNestedNS { buf_, o } else: nil
return if o: NamespaceA_NamespaceB_StructInNestedNS { buf_, o } else: nil
...
@@ -29,7 +29,7 @@ def TableInFirstNSStart(b_:flatbuffers_builder):
...
@@ -29,7 +29,7 @@ def TableInFirstNSStart(b_:flatbuffers_builder):
b_.StartObject(3)
b_.StartObject(3)
def TableInFirstNSAddFooTable(b_:flatbuffers_builder, foo_table:int):
def TableInFirstNSAddFooTable(b_:flatbuffers_builder, foo_table:int):
b_.PrependUOffsetTRelativeSlot(0, foo_table, 0)
b_.PrependUOffsetTRelativeSlot(0, foo_table, 0)
def TableInFirstNSAddFooEnum(b_:flatbuffers_builder, foo_enum:
int
):
def TableInFirstNSAddFooEnum(b_:flatbuffers_builder, foo_enum:
EnumInNestedNS
):
b_.PrependInt8Slot(1, foo_enum, 0)
b_.PrependInt8Slot(1, foo_enum, 0)
def TableInFirstNSAddFooStruct(b_:flatbuffers_builder, foo_struct:int):
def TableInFirstNSAddFooStruct(b_:flatbuffers_builder, foo_struct:int):
b_.PrependStructSlot(2, foo_struct, 0)
b_.PrependStructSlot(2, foo_struct, 0)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment