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
43dbac5d
Commit
43dbac5d
authored
May 23, 2019
by
aardappel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Lobster: added builder API for tables
parent
53ea1ab1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
170 additions
and
120 deletions
+170
-120
Tutorial.md
docs/source/Tutorial.md
+19
-17
flatbuffers.lobster
lobster/flatbuffers.lobster
+0
-1
monster_generated.lobster
samples/monster_generated.lobster
+53
-32
sample_binary.lobster
samples/sample_binary.lobster
+16
-14
idl_gen_lobster.cpp
src/idl_gen_lobster.cpp
+15
-10
lobstertest.lobster
tests/lobstertest.lobster
+18
-16
monster_test_generated.lobster
tests/monster_test_generated.lobster
+0
-0
namespace_test1_generated.lobster
tests/namespace_test/namespace_test1_generated.lobster
+10
-6
namespace_test2_generated.lobster
tests/namespace_test/namespace_test2_generated.lobster
+39
-24
No files found.
docs/source/Tutorial.md
View file @
43dbac5d
...
@@ -815,10 +815,11 @@ our `orc` Monster, lets create some `Weapon`s: a `Sword` and an `Axe`.
...
@@ -815,10 +815,11 @@ our `orc` Monster, lets create some `Weapon`s: a `Sword` and an `Axe`.
let weapon_offsets = map(weapon_names) name, i:
let weapon_offsets = map(weapon_names) name, i:
let ns = builder.CreateString(name)
let ns = builder.CreateString(name)
builder.MyGame_Sample_WeaponStart()
MyGame_Sample_WeaponBuilder { b }
builder.MyGame_Sample_WeaponAddName(ns)
.start()
builder.MyGame_Sample_WeaponAddDamage(weapon_damages[i])
.add_name(ns)
builder.MyGame_Sample_WeaponEnd()
.add_damage(weapon_damages[i])
.end()
~~~
~~~
</div>
</div>
<div
class=
"language-rust"
>
<div
class=
"language-rust"
>
...
@@ -1503,17 +1504,18 @@ can serialize the monster itself:
...
@@ -1503,17 +1504,18 @@ can serialize the monster itself:
</div>
</div>
<div
class=
"language-lobster"
>
<div
class=
"language-lobster"
>
~~~
{.lobster}
~~~
{.lobster}
builder.MyGame_Sample_MonsterStart()
let orc = MyGame_Sample_MonsterBuilder { b }
builder.MyGame_Sample_MonsterAddPos(builder.MyGame_Sample_CreateVec3(1.0, 2.0, 3.0))
.start()
builder.MyGame_Sample_MonsterAddHp(300)
.add_pos(b.MyGame_Sample_CreateVec3(1.0, 2.0, 3.0))
builder.MyGame_Sample_MonsterAddName(name)
.add_hp(300)
builder.MyGame_Sample_MonsterAddInventory(inv)
.add_name(name)
builder.MyGame_Sample_MonsterAddColor(MyGame_Sample_Color_Red)
.add_inventory(inv)
builder.MyGame_Sample_MonsterAddWeapons(weapons)
.add_color(MyGame_Sample_Color_Red)
builder.MyGame_Sample_MonsterAddEquippedType(MyGame_Sample_Equipment_Weapon)
.add_weapons(weapons)
builder.MyGame_Sample_MonsterAddEquipped(weapon_offsets[1])
.add_equipped_type(MyGame_Sample_Equipment_Weapon)
builder.MyGame_Sample_MonsterAddPath(path)
.add_equipped(weapon_offsets[1])
let orc = builder.MyGame_Sample_MonsterEnd()
.add_path(path)
.end()
~~~
~~~
</div>
</div>
<div
class=
"language-rust"
>
<div
class=
"language-rust"
>
...
@@ -1687,8 +1689,8 @@ Here is a repetition these lines, to help highlight them more clearly:
...
@@ -1687,8 +1689,8 @@ Here is a repetition these lines, to help highlight them more clearly:
</div>
</div>
<div class="language-lobster">
<div class="language-lobster">
~~~
{.lobster}
~~~
{.lobster}
builder.MyGame_Sample_MonsterAddEquippedT
ype(MyGame_Sample_Equipment_Weapon)
.add_equipped_t
ype(MyGame_Sample_Equipment_Weapon)
builder.MyGame_Sample_MonsterAddE
quipped(axe)
.add_e
quipped(axe)
~~~
~~~
</div>
</div>
<div class="language-rust">
<div class="language-rust">
...
...
lobster/flatbuffers.lobster
View file @
43dbac5d
...
@@ -282,4 +282,3 @@ class builder:
...
@@ -282,4 +282,3 @@ class builder:
// elsewhere.
// elsewhere.
assert x.o == head
assert x.o == head
Slot(v)
Slot(v)
samples/monster_generated.lobster
View file @
43dbac5d
...
@@ -64,44 +64,60 @@ class Monster : flatbuffers_handle
...
@@ -64,44 +64,60 @@ class Monster : flatbuffers_handle
def GetRootAsMonster(buf:string): return Monster { buf, buf.flatbuffers_indirect(0) }
def GetRootAsMonster(buf:string): return Monster { buf, buf.flatbuffers_indirect(0) }
def MonsterStart(b_:flatbuffers_builder):
struct MonsterBuilder:
b_.StartObject(11)
b_:flatbuffers_builder
def MonsterAddPos(b_:flatbuffers_builder, pos:flatbuffers_offset):
def start():
b_.PrependStructSlot(0, pos)
b_.StartObject(11)
def MonsterAddMana(b_:flatbuffers_builder, mana:int):
return this
b_.PrependInt16Slot(1, mana, 150)
def add_pos(pos:flatbuffers_offset):
def MonsterAddHp(b_:flatbuffers_builder, hp:int):
b_.PrependStructSlot(0, pos)
b_.PrependInt16Slot(2, hp, 100)
return this
def MonsterAddName(b_:flatbuffers_builder, name:flatbuffers_offset):
def add_mana(mana:int):
b_.PrependUOffsetTRelativeSlot(3, name)
b_.PrependInt16Slot(1, mana, 150)
def MonsterAddInventory(b_:flatbuffers_builder, inventory:flatbuffers_offset):
return this
b_.PrependUOffsetTRelativeSlot(5, inventory)
def add_hp(hp:int):
b_.PrependInt16Slot(2, hp, 100)
return this
def add_name(name:flatbuffers_offset):
b_.PrependUOffsetTRelativeSlot(3, name)
return this
def add_inventory(inventory:flatbuffers_offset):
b_.PrependUOffsetTRelativeSlot(5, inventory)
return this
def add_color(color:Color):
b_.PrependInt8Slot(6, color, 2)
return this
def add_weapons(weapons:flatbuffers_offset):
b_.PrependUOffsetTRelativeSlot(7, weapons)
return this
def add_equipped_type(equipped_type:Equipment):
b_.PrependUint8Slot(8, equipped_type, 0)
return this
def add_equipped(equipped:flatbuffers_offset):
b_.PrependUOffsetTRelativeSlot(9, equipped)
return this
def add_path(path:flatbuffers_offset):
b_.PrependUOffsetTRelativeSlot(10, path)
return this
def end():
return b_.EndObject()
def MonsterStartInventoryVector(b_:flatbuffers_builder, n_:int):
def MonsterStartInventoryVector(b_:flatbuffers_builder, n_:int):
b_.StartVector(1, n_, 1)
b_.StartVector(1, n_, 1)
def MonsterCreateInventoryVector(b_:flatbuffers_builder, v_:[int]):
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:Color):
b_.PrependInt8Slot(6, color, 2)
def MonsterAddWeapons(b_:flatbuffers_builder, weapons:flatbuffers_offset):
b_.PrependUOffsetTRelativeSlot(7, weapons)
def MonsterStartWeaponsVector(b_:flatbuffers_builder, n_:int):
def MonsterStartWeaponsVector(b_:flatbuffers_builder, n_:int):
b_.StartVector(4, n_, 4)
b_.StartVector(4, n_, 4)
def MonsterCreateWeaponsVector(b_:flatbuffers_builder, v_:[flatbuffers_offset]):
def MonsterCreateWeaponsVector(b_:flatbuffers_builder, v_:[flatbuffers_offset]):
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:Equipment):
b_.PrependUint8Slot(8, equipped_type, 0)
def MonsterAddEquipped(b_:flatbuffers_builder, equipped:flatbuffers_offset):
b_.PrependUOffsetTRelativeSlot(9, equipped)
def MonsterAddPath(b_:flatbuffers_builder, path:flatbuffers_offset):
b_.PrependUOffsetTRelativeSlot(10, path)
def MonsterStartPathVector(b_:flatbuffers_builder, n_:int):
def MonsterStartPathVector(b_:flatbuffers_builder, n_:int):
b_.StartVector(12, n_, 4)
b_.StartVector(12, n_, 4)
def MonsterEnd(b_:flatbuffers_builder):
return b_.EndObject()
class Weapon : flatbuffers_handle
class Weapon : flatbuffers_handle
def name():
def name():
...
@@ -111,12 +127,17 @@ class Weapon : flatbuffers_handle
...
@@ -111,12 +127,17 @@ class Weapon : flatbuffers_handle
def GetRootAsWeapon(buf:string): return Weapon { buf, buf.flatbuffers_indirect(0) }
def GetRootAsWeapon(buf:string): return Weapon { buf, buf.flatbuffers_indirect(0) }
def WeaponStart(b_:flatbuffers_builder):
struct WeaponBuilder:
b_.StartObject(2)
b_:flatbuffers_builder
def WeaponAddName(b_:flatbuffers_builder, name:flatbuffers_offset):
def start():
b_.PrependUOffsetTRelativeSlot(0, name)
b_.StartObject(2)
def WeaponAddDamage(b_:flatbuffers_builder, damage:int):
return this
b_.PrependInt16Slot(1, damage, 0)
def add_name(name:flatbuffers_offset):
def WeaponEnd(b_:flatbuffers_builder):
b_.PrependUOffsetTRelativeSlot(0, name)
return b_.EndObject()
return this
def add_damage(damage:int):
b_.PrependInt16Slot(1, damage, 0)
return this
def end():
return b_.EndObject()
samples/sample_binary.lobster
View file @
43dbac5d
...
@@ -26,10 +26,11 @@ let weapon_damages = [ 3, 5 ]
...
@@ -26,10 +26,11 @@ let weapon_damages = [ 3, 5 ]
let weapon_offsets = map(weapon_names) name, i:
let weapon_offsets = map(weapon_names) name, i:
let ns = b.CreateString(name)
let ns = b.CreateString(name)
b.MyGame_Sample_WeaponStart()
MyGame_Sample_WeaponBuilder { b }
b.MyGame_Sample_WeaponAddName(ns)
.start()
b.MyGame_Sample_WeaponAddDamage(weapon_damages[i])
.add_name(ns)
b.MyGame_Sample_WeaponEnd()
.add_damage(weapon_damages[i])
.end()
let weapons = b.MyGame_Sample_MonsterCreateWeaponsVector(weapon_offsets)
let weapons = b.MyGame_Sample_MonsterCreateWeaponsVector(weapon_offsets)
...
@@ -40,16 +41,17 @@ let name = b.CreateString("Orc")
...
@@ -40,16 +41,17 @@ let name = b.CreateString("Orc")
let inv = b.MyGame_Sample_MonsterCreateInventoryVector(map(10): _)
let inv = b.MyGame_Sample_MonsterCreateInventoryVector(map(10): _)
// Now pack it all together in our root monster object.
// Now pack it all together in our root monster object.
b.MyGame_Sample_MonsterStart()
let orc = MyGame_Sample_MonsterBuilder { b }
b.MyGame_Sample_MonsterAddPos(b.MyGame_Sample_CreateVec3(1.0, 2.0, 3.0))
.start()
b.MyGame_Sample_MonsterAddHp(300)
.add_pos(b.MyGame_Sample_CreateVec3(1.0, 2.0, 3.0))
b.MyGame_Sample_MonsterAddName(name)
.add_hp(300)
b.MyGame_Sample_MonsterAddInventory(inv)
.add_name(name)
b.MyGame_Sample_MonsterAddColor(MyGame_Sample_Color_Red)
.add_inventory(inv)
b.MyGame_Sample_MonsterAddWeapons(weapons)
.add_color(MyGame_Sample_Color_Red)
b.MyGame_Sample_MonsterAddEquippedType(MyGame_Sample_Equipment_Weapon)
.add_weapons(weapons)
b.MyGame_Sample_MonsterAddEquipped(weapon_offsets[1])
.add_equipped_type(MyGame_Sample_Equipment_Weapon)
let orc = b.MyGame_Sample_MonsterEnd()
.add_equipped(weapon_offsets[1])
.end()
// Finish the buffer!
// Finish the buffer!
b.Finish(orc)
b.Finish(orc)
...
...
src/idl_gen_lobster.cpp
View file @
43dbac5d
...
@@ -180,22 +180,28 @@ class LobsterGenerator : public BaseGenerator {
...
@@ -180,22 +180,28 @@ class LobsterGenerator : public BaseGenerator {
void
GenTableBuilders
(
const
StructDef
&
struct_def
,
void
GenTableBuilders
(
const
StructDef
&
struct_def
,
std
::
string
*
code_ptr
)
{
std
::
string
*
code_ptr
)
{
std
::
string
&
code
=
*
code_ptr
;
std
::
string
&
code
=
*
code_ptr
;
code
+=
"def "
+
NormalizedName
(
struct_def
)
+
code
+=
"struct "
+
NormalizedName
(
struct_def
)
+
"Start(b_:flatbuffers_builder):
\n
b_.StartObject("
+
"Builder:
\n
b_:flatbuffers_builder
\n
"
;
NumToString
(
struct_def
.
fields
.
vec
.
size
())
+
")
\n
"
;
code
+=
" def start():
\n
b_.StartObject("
+
NumToString
(
struct_def
.
fields
.
vec
.
size
())
+
")
\n
return this
\n
"
;
for
(
auto
it
=
struct_def
.
fields
.
vec
.
begin
();
for
(
auto
it
=
struct_def
.
fields
.
vec
.
begin
();
it
!=
struct_def
.
fields
.
vec
.
end
();
++
it
)
{
it
!=
struct_def
.
fields
.
vec
.
end
();
++
it
)
{
auto
&
field
=
**
it
;
auto
&
field
=
**
it
;
if
(
field
.
deprecated
)
continue
;
if
(
field
.
deprecated
)
continue
;
auto
offset
=
it
-
struct_def
.
fields
.
vec
.
begin
();
auto
offset
=
it
-
struct_def
.
fields
.
vec
.
begin
();
code
+=
"def "
+
NormalizedName
(
struct_def
)
+
"Add"
+
code
+=
" def add_"
+
NormalizedName
(
field
)
+
"("
+
MakeCamel
(
NormalizedName
(
field
))
+
"(b_:flatbuffers_builder, "
+
NormalizedName
(
field
)
+
":"
+
LobsterType
(
field
.
value
.
type
)
+
NormalizedName
(
field
)
+
":"
+
LobsterType
(
field
.
value
.
type
)
+
"):
\n
b_.Prepend"
+
GenMethod
(
field
.
value
.
type
)
+
"Slot("
+
"):
\n
b_.Prepend"
+
GenMethod
(
field
.
value
.
type
)
+
"Slot("
+
NumToString
(
offset
)
+
", "
+
NormalizedName
(
field
);
NumToString
(
offset
)
+
", "
+
NormalizedName
(
field
);
if
(
IsScalar
(
field
.
value
.
type
.
base_type
))
if
(
IsScalar
(
field
.
value
.
type
.
base_type
))
code
+=
", "
+
field
.
value
.
constant
;
code
+=
", "
+
field
.
value
.
constant
;
code
+=
")
\n
"
;
code
+=
")
\n
return this
\n
"
;
}
code
+=
" def end():
\n
return b_.EndObject()
\n\n
"
;
for
(
auto
it
=
struct_def
.
fields
.
vec
.
begin
();
it
!=
struct_def
.
fields
.
vec
.
end
();
++
it
)
{
auto
&
field
=
**
it
;
if
(
field
.
deprecated
)
continue
;
if
(
field
.
value
.
type
.
base_type
==
BASE_TYPE_VECTOR
)
{
if
(
field
.
value
.
type
.
base_type
==
BASE_TYPE_VECTOR
)
{
code
+=
"def "
+
NormalizedName
(
struct_def
)
+
"Start"
+
code
+=
"def "
+
NormalizedName
(
struct_def
)
+
"Start"
+
MakeCamel
(
NormalizedName
(
field
))
+
MakeCamel
(
NormalizedName
(
field
))
+
...
@@ -217,10 +223,9 @@ class LobsterGenerator : public BaseGenerator {
...
@@ -217,10 +223,9 @@ class LobsterGenerator : public BaseGenerator {
GenMethod
(
vector_type
)
+
GenMethod
(
vector_type
)
+
"(e_)
\n
return b_.EndVector(v_.length)
\n
"
;
"(e_)
\n
return b_.EndVector(v_.length)
\n
"
;
}
}
code
+=
"
\n
"
;
}
}
}
}
code
+=
"def "
+
NormalizedName
(
struct_def
)
+
"End(b_:flatbuffers_builder):
\n
return b_.EndObject()
\n\n
"
;
}
}
void
GenStructPreDecl
(
const
StructDef
&
struct_def
,
std
::
string
*
code_ptr
)
{
void
GenStructPreDecl
(
const
StructDef
&
struct_def
,
std
::
string
*
code_ptr
)
{
...
...
tests/lobstertest.lobster
View file @
43dbac5d
...
@@ -70,9 +70,10 @@ def make_monster_from_generated_code():
...
@@ -70,9 +70,10 @@ def make_monster_from_generated_code():
let inv = b.MyGame_Example_MonsterCreateInventoryVector([ 0, 1, 2, 3, 4 ])
let inv = b.MyGame_Example_MonsterCreateInventoryVector([ 0, 1, 2, 3, 4 ])
b.MyGame_Example_MonsterStart()
let mon2 = MyGame_Example_MonsterBuilder { b }
b.MyGame_Example_MonsterAddName(fred)
.start()
let mon2 = b.MyGame_Example_MonsterEnd()
.add_name(fred)
.end()
b.MyGame_Example_MonsterStartTest4Vector(2)
b.MyGame_Example_MonsterStartTest4Vector(2)
b.MyGame_Example_CreateTest(10, 20)
b.MyGame_Example_CreateTest(10, 20)
...
@@ -88,19 +89,20 @@ def make_monster_from_generated_code():
...
@@ -88,19 +89,20 @@ def make_monster_from_generated_code():
let vector_of_doubles = b.MyGame_Example_MonsterCreateVectorOfDoublesVector(
let vector_of_doubles = b.MyGame_Example_MonsterCreateVectorOfDoublesVector(
[ -1.7976931348623157e+308, 0, 1.7976931348623157e+308 ])
[ -1.7976931348623157e+308, 0, 1.7976931348623157e+308 ])
b.MyGame_Example_MonsterStart()
let mon = MyGame_Example_MonsterBuilder { b }
b.MyGame_Example_MonsterAddPos(b.MyGame_Example_CreateVec3(1.0, 2.0, 3.0, 3.0,
.start()
MyGame_Example_Color_Green, 5, 6))
.add_pos(b.MyGame_Example_CreateVec3(1.0, 2.0, 3.0, 3.0,
b.MyGame_Example_MonsterAddHp(80)
MyGame_Example_Color_Green, 5, 6))
b.MyGame_Example_MonsterAddName(name)
.add_hp(80)
b.MyGame_Example_MonsterAddInventory(inv)
.add_name(name)
b.MyGame_Example_MonsterAddTestType(MyGame_Example_Any_Monster)
.add_inventory(inv)
b.MyGame_Example_MonsterAddTest(mon2)
.add_test_type(MyGame_Example_Any_Monster)
b.MyGame_Example_MonsterAddTest4(test4)
.add_test(mon2)
b.MyGame_Example_MonsterAddTestarrayofstring(test_array_of_string)
.add_test4(test4)
b.MyGame_Example_MonsterAddVectorOfLongs(vector_of_longs)
.add_testarrayofstring(test_array_of_string)
b.MyGame_Example_MonsterAddVectorOfDoubles(vector_of_doubles)
.add_vector_of_longs(vector_of_longs)
let mon = b.MyGame_Example_MonsterEnd()
.add_vector_of_doubles(vector_of_doubles)
.end()
b.Finish(mon)
b.Finish(mon)
...
...
tests/monster_test_generated.lobster
View file @
43dbac5d
This diff is collapsed.
Click to expand it.
tests/namespace_test/namespace_test1_generated.lobster
View file @
43dbac5d
...
@@ -18,12 +18,16 @@ class TableInNestedNS : flatbuffers_handle
...
@@ -18,12 +18,16 @@ class TableInNestedNS : flatbuffers_handle
def GetRootAsTableInNestedNS(buf:string): return TableInNestedNS { buf, buf.flatbuffers_indirect(0) }
def GetRootAsTableInNestedNS(buf:string): return TableInNestedNS { buf, buf.flatbuffers_indirect(0) }
def TableInNestedNSStart(b_:flatbuffers_builder):
struct TableInNestedNSBuilder:
b_.StartObject(1)
b_:flatbuffers_builder
def TableInNestedNSAddFoo(b_:flatbuffers_builder, foo:int):
def start():
b_.PrependInt32Slot(0, foo, 0)
b_.StartObject(1)
def TableInNestedNSEnd(b_:flatbuffers_builder):
return this
return b_.EndObject()
def add_foo(foo:int):
b_.PrependInt32Slot(0, foo, 0)
return this
def end():
return b_.EndObject()
class StructInNestedNS : flatbuffers_handle
class StructInNestedNS : flatbuffers_handle
def a():
def a():
...
...
tests/namespace_test/namespace_test2_generated.lobster
View file @
43dbac5d
...
@@ -25,16 +25,22 @@ class TableInFirstNS : flatbuffers_handle
...
@@ -25,16 +25,22 @@ class TableInFirstNS : flatbuffers_handle
def GetRootAsTableInFirstNS(buf:string): return TableInFirstNS { buf, buf.flatbuffers_indirect(0) }
def GetRootAsTableInFirstNS(buf:string): return TableInFirstNS { buf, buf.flatbuffers_indirect(0) }
def TableInFirstNSStart(b_:flatbuffers_builder):
struct TableInFirstNSBuilder:
b_.StartObject(3)
b_:flatbuffers_builder
def TableInFirstNSAddFooTable(b_:flatbuffers_builder, foo_table:flatbuffers_offset):
def start():
b_.PrependUOffsetTRelativeSlot(0, foo_table)
b_.StartObject(3)
def TableInFirstNSAddFooEnum(b_:flatbuffers_builder, foo_enum:EnumInNestedNS):
return this
b_.PrependInt8Slot(1, foo_enum, 0)
def add_foo_table(foo_table:flatbuffers_offset):
def TableInFirstNSAddFooStruct(b_:flatbuffers_builder, foo_struct:flatbuffers_offset):
b_.PrependUOffsetTRelativeSlot(0, foo_table)
b_.PrependStructSlot(2, foo_struct)
return this
def TableInFirstNSEnd(b_:flatbuffers_builder):
def add_foo_enum(foo_enum:EnumInNestedNS):
return b_.EndObject()
b_.PrependInt8Slot(1, foo_enum, 0)
return this
def add_foo_struct(foo_struct:flatbuffers_offset):
b_.PrependStructSlot(2, foo_struct)
return this
def end():
return b_.EndObject()
namespace NamespaceC
namespace NamespaceC
...
@@ -48,14 +54,19 @@ class TableInC : flatbuffers_handle
...
@@ -48,14 +54,19 @@ class TableInC : flatbuffers_handle
def GetRootAsTableInC(buf:string): return TableInC { buf, buf.flatbuffers_indirect(0) }
def GetRootAsTableInC(buf:string): return TableInC { buf, buf.flatbuffers_indirect(0) }
def TableInCStart(b_:flatbuffers_builder):
struct TableInCBuilder:
b_.StartObject(2)
b_:flatbuffers_builder
def TableInCAddReferToA1(b_:flatbuffers_builder, refer_to_a1:flatbuffers_offset):
def start():
b_.PrependUOffsetTRelativeSlot(0, refer_to_a1)
b_.StartObject(2)
def TableInCAddReferToA2(b_:flatbuffers_builder, refer_to_a2:flatbuffers_offset):
return this
b_.PrependUOffsetTRelativeSlot(1, refer_to_a2)
def add_refer_to_a1(refer_to_a1:flatbuffers_offset):
def TableInCEnd(b_:flatbuffers_builder):
b_.PrependUOffsetTRelativeSlot(0, refer_to_a1)
return b_.EndObject()
return this
def add_refer_to_a2(refer_to_a2:flatbuffers_offset):
b_.PrependUOffsetTRelativeSlot(1, refer_to_a2)
return this
def end():
return b_.EndObject()
namespace NamespaceA
namespace NamespaceA
...
@@ -66,10 +77,14 @@ class SecondTableInA : flatbuffers_handle
...
@@ -66,10 +77,14 @@ class SecondTableInA : flatbuffers_handle
def GetRootAsSecondTableInA(buf:string): return SecondTableInA { buf, buf.flatbuffers_indirect(0) }
def GetRootAsSecondTableInA(buf:string): return SecondTableInA { buf, buf.flatbuffers_indirect(0) }
def SecondTableInAStart(b_:flatbuffers_builder):
struct SecondTableInABuilder:
b_.StartObject(1)
b_:flatbuffers_builder
def SecondTableInAAddReferToC(b_:flatbuffers_builder, refer_to_c:flatbuffers_offset):
def start():
b_.PrependUOffsetTRelativeSlot(0, refer_to_c)
b_.StartObject(1)
def SecondTableInAEnd(b_:flatbuffers_builder):
return this
return b_.EndObject()
def add_refer_to_c(refer_to_c:flatbuffers_offset):
b_.PrependUOffsetTRelativeSlot(0, refer_to_c)
return this
def end():
return b_.EndObject()
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