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
30ac512a
Commit
30ac512a
authored
May 22, 2019
by
aardappel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed Lobster implementation to work with latest language features
parent
b04736f9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
308 additions
and
311 deletions
+308
-311
flatbuffers.lobster
lobster/flatbuffers.lobster
+30
-27
monster_generated.lobster
samples/monster_generated.lobster
+37
-38
sample_binary.lobster
samples/sample_binary.lobster
+3
-3
sample_text.lobster
samples/sample_text.lobster
+6
-6
idl_gen_lobster.cpp
src/idl_gen_lobster.cpp
+18
-20
lobstertest.lobster
tests/lobstertest.lobster
+6
-6
monster_test_generated.lobster
tests/monster_test_generated.lobster
+171
-172
namespace_test1_generated.lobster
tests/namespace_test/namespace_test1_generated.lobster
+13
-14
namespace_test2_generated.lobster
tests/namespace_test/namespace_test2_generated.lobster
+24
-25
No files found.
lobster/flatbuffers.lobster
View file @
30ac512a
...
@@ -12,32 +12,33 @@
...
@@ -12,32 +12,33 @@
// See the License for the specific language governing permissions and
// See the License for the specific language governing permissions and
// limitations under the License.
// limitations under the License.
i
nclude "std.lobster"
i
mport std
namespace flatbuffers
namespace flatbuffers
struct
handle:
class
handle:
buf_:string
buf_:string
pos_:int
pos_:int
enum + sz_8 = 1,
enum sizeof:
sz_16 = 2,
sz_8 = 1
sz_32 = 4,
sz_16 = 2
sz_64 = 8,
sz_32 = 4
sz_voffset = 2,
sz_64 = 8
sz_uoffset = 4,
sz_voffset = 2
sz_soffset = 4,
sz_uoffset = 4
sz_soffset = 4
sz_metadata_fields = 2
sz_metadata_fields = 2
struct
builder:
class
builder:
buf
:string
= "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
buf = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
current_vtable:[int] = []
current_vtable:[int] = []
head
:int
= 0
head = 0
minalign
:int
= 1
minalign = 1
object_end
:int
= 0
object_end = 0
vtables:[int] = []
vtables:[int] = []
nested
:int
= false
nested = false
finished
:int
= false
finished = false
// Optionally call this right after creating the builder for a larger initial buffer.
// Optionally call this right after creating the builder for a larger initial buffer.
def Initial(initial_size:int):
def Initial(initial_size:int):
...
@@ -75,11 +76,11 @@ struct builder:
...
@@ -75,11 +76,11 @@ struct builder:
// Prepend a zero scalar to the object. Later in this function we'll
// Prepend a zero scalar to the object. Later in this function we'll
// write an offset here that points to the object's vtable:
// write an offset here that points to the object's vtable:
PrependInt32(0)
PrependInt32(0)
object_offset :
= head
let object_offset
= head
// Write out new vtable speculatively.
// Write out new vtable speculatively.
vtable_size :
= (current_vtable.length + sz_metadata_fields) * sz_voffset
let vtable_size
= (current_vtable.length + sz_metadata_fields) * sz_voffset
while current_vtable.length:
while current_vtable.length:
o :
= current_vtable.pop()
let o
= current_vtable.pop()
PrependVOffsetT(if o: object_offset - o else: 0)
PrependVOffsetT(if o: object_offset - o else: 0)
// The two metadata fields are written last.
// The two metadata fields are written last.
// First, store the object bytesize:
// First, store the object bytesize:
...
@@ -91,17 +92,18 @@ struct builder:
...
@@ -91,17 +92,18 @@ struct builder:
// BenchmarkVtableDeduplication for a case in which this heuristic
// BenchmarkVtableDeduplication for a case in which this heuristic
// saves about 30% of the time used in writing objects with duplicate
// saves about 30% of the time used in writing objects with duplicate
// tables.
// tables.
existing_vtable := do
():
def find_existing_table
():
reverse(vtables) vt2_offset:
reverse(vtables) vt2_offset:
// Find the other vtable:
// Find the other vtable:
vt2_start :
= buf.length - vt2_offset
let vt2_start
= buf.length - vt2_offset
vt2_len :
= buf.read_int16_le(vt2_start)
let vt2_len
= buf.read_int16_le(vt2_start)
// Compare the other vtable to the one under consideration.
// Compare the other vtable to the one under consideration.
// If they are equal, return the offset:
// If they are equal, return the offset:
if vtable_size == vt2_len and
if vtable_size == vt2_len and
not compare_substring(buf, Start(), buf, vt2_start, vtable_size):
not compare_substring(buf, Start(), buf, vt2_start, vtable_size):
return vt2_offset from do
return vt2_offset
0
return 0
let existing_vtable = find_existing_table()
if existing_vtable:
if existing_vtable:
// Found a duplicate vtable, remove the one we wrote.
// Found a duplicate vtable, remove the one we wrote.
head = object_offset
head = object_offset
...
@@ -119,7 +121,8 @@ struct builder:
...
@@ -119,7 +121,8 @@ struct builder:
return object_offset
return object_offset
def Pad(n):
def Pad(n):
for(n): buf, head = buf.write_int8_le_back(head, 0)
for(n):
buf, head = buf.write_int8_le_back(head, 0)
def Prep(size, additional_bytes):
def Prep(size, additional_bytes):
// Track the biggest thing we've ever aligned to.
// Track the biggest thing we've ever aligned to.
...
@@ -127,7 +130,7 @@ struct builder:
...
@@ -127,7 +130,7 @@ struct builder:
minalign = size
minalign = size
// Find the amount of alignment needed such that `size` is properly
// Find the amount of alignment needed such that `size` is properly
// aligned after `additionalBytes`:
// aligned after `additionalBytes`:
align_size :
= ((~(head + additional_bytes)) + 1) & (size - 1)
let align_size
= ((~(head + additional_bytes)) + 1) & (size - 1)
Pad(align_size)
Pad(align_size)
def PrependUOffsetTRelative(off):
def PrependUOffsetTRelative(off):
...
@@ -172,7 +175,7 @@ struct builder:
...
@@ -172,7 +175,7 @@ struct builder:
// Finish finalizes a buffer, pointing to the given root_table
// Finish finalizes a buffer, pointing to the given root_table
assert not finished
assert not finished
assert not nested
assert not nested
prep_size :
= sz_32
var prep_size
= sz_32
if size_prefix:
if size_prefix:
prep_size += sz_32
prep_size += sz_32
Prep(minalign, prep_size)
Prep(minalign, prep_size)
...
...
samples/monster_generated.lobster
View file @
30ac512a
// automatically generated by the FlatBuffers compiler, do not modify
// automatically generated by the FlatBuffers compiler, do not modify
import flatbuffers
include "flatbuffers.lobster"
namespace MyGame_Sample
namespace MyGame_Sample
enum
+
enum
Color:
Color_Red = 0
,
Color_Red = 0
Color_Green = 1
,
Color_Green = 1
Color_Blue = 2
Color_Blue = 2
enum
+
enum
Equipment:
Equipment_NONE = 0
,
Equipment_NONE = 0
Equipment_Weapon = 1
Equipment_Weapon = 1
struct
Vec3
class
Vec3
struct
Monster
class
Monster
struct
Weapon
class
Weapon
struct
Vec3 : flatbuffers_handle
class
Vec3 : flatbuffers_handle
def x():
def x():
buf_.read_float32_le(pos_ + 0)
return
buf_.read_float32_le(pos_ + 0)
def y():
def y():
buf_.read_float32_le(pos_ + 4)
return
buf_.read_float32_le(pos_ + 4)
def z():
def z():
buf_.read_float32_le(pos_ + 8)
return
buf_.read_float32_le(pos_ + 8)
def CreateVec3(b_:flatbuffers_builder, x:float, y:float, z:float):
def CreateVec3(b_:flatbuffers_builder, x:float, y:float, z:float):
b_.Prep(4, 12)
b_.Prep(4, 12)
...
@@ -34,36 +33,36 @@ def CreateVec3(b_:flatbuffers_builder, x:float, y:float, z:float):
...
@@ -34,36 +33,36 @@ def CreateVec3(b_:flatbuffers_builder, x:float, y:float, z:float):
b_.PrependFloat32(x)
b_.PrependFloat32(x)
return b_.Offset()
return b_.Offset()
struct
Monster : flatbuffers_handle
class
Monster : flatbuffers_handle
def pos():
def pos():
o :
= buf_.flatbuffers_field_struct(pos_, 4)
let o
= buf_.flatbuffers_field_struct(pos_, 4)
if o: MyGame_Sample_Vec3 { buf_, o } else: nil
return
if o: MyGame_Sample_Vec3 { buf_, o } else: nil
def mana():
def mana():
buf_.flatbuffers_field_int16(pos_, 6, 150)
return
buf_.flatbuffers_field_int16(pos_, 6, 150)
def hp():
def hp():
buf_.flatbuffers_field_int16(pos_, 8, 100)
return
buf_.flatbuffers_field_int16(pos_, 8, 100)
def name():
def name():
buf_.flatbuffers_field_string(pos_, 10)
return
buf_.flatbuffers_field_string(pos_, 10)
def inventory(i:int):
def inventory(i:int):
buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 14) + i * 1)
return
buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 14) + i * 1)
def inventory_length():
def inventory_length():
buf_.flatbuffers_field_vector_len(pos_, 14)
return
buf_.flatbuffers_field_vector_len(pos_, 14)
def color():
def color():
buf_.flatbuffers_field_int8(pos_, 16, 2)
return
buf_.flatbuffers_field_int8(pos_, 16, 2)
def weapons(i:int):
def weapons(i:int):
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():
buf_.flatbuffers_field_vector_len(pos_, 18)
return
buf_.flatbuffers_field_vector_len(pos_, 18)
def equipped_type():
def equipped_type():
buf_.flatbuffers_field_int8(pos_, 20, 0)
return
buf_.flatbuffers_field_int8(pos_, 20, 0)
def equipped_as_Weapon():
def equipped_as_Weapon():
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):
MyGame_Sample_Vec3 { buf_, buf_.flatbuffers_field_vector(pos_, 24) + i * 12 }
return
MyGame_Sample_Vec3 { buf_, buf_.flatbuffers_field_vector(pos_, 24) + i * 12 }
def path_length():
def path_length():
buf_.flatbuffers_field_vector_len(pos_, 24)
return
buf_.flatbuffers_field_vector_len(pos_, 24)
def GetRootAsMonster(buf:string): Monster { buf, buf.flatbuffers_indirect(0) }
def GetRootAsMonster(buf:string):
return
Monster { buf, buf.flatbuffers_indirect(0) }
def MonsterStart(b_:flatbuffers_builder):
def MonsterStart(b_:flatbuffers_builder):
b_.StartObject(11)
b_.StartObject(11)
...
@@ -82,7 +81,7 @@ def MonsterStartInventoryVector(b_:flatbuffers_builder, n_:int):
...
@@ -82,7 +81,7 @@ def MonsterStartInventoryVector(b_:flatbuffers_builder, n_:int):
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_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddColor(b_:flatbuffers_builder, color:int):
def MonsterAddColor(b_:flatbuffers_builder, color:int):
b_.PrependInt8Slot(6, color, 2)
b_.PrependInt8Slot(6, color, 2)
def MonsterAddWeapons(b_:flatbuffers_builder, weapons:int):
def MonsterAddWeapons(b_:flatbuffers_builder, weapons:int):
...
@@ -92,7 +91,7 @@ def MonsterStartWeaponsVector(b_:flatbuffers_builder, n_:int):
...
@@ -92,7 +91,7 @@ def MonsterStartWeaponsVector(b_:flatbuffers_builder, n_:int):
def MonsterCreateWeaponsVector(b_:flatbuffers_builder, v_:[int]):
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_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddEquippedType(b_:flatbuffers_builder, equipped_type:int):
def MonsterAddEquippedType(b_:flatbuffers_builder, equipped_type:int):
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):
...
@@ -102,15 +101,15 @@ def MonsterAddPath(b_:flatbuffers_builder, path:int):
...
@@ -102,15 +101,15 @@ def MonsterAddPath(b_:flatbuffers_builder, path:int):
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):
def MonsterEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
struct
Weapon : flatbuffers_handle
class
Weapon : flatbuffers_handle
def name():
def name():
buf_.flatbuffers_field_string(pos_, 4)
return
buf_.flatbuffers_field_string(pos_, 4)
def damage():
def damage():
buf_.flatbuffers_field_int16(pos_, 6, 0)
return
buf_.flatbuffers_field_int16(pos_, 6, 0)
def GetRootAsWeapon(buf:string): Weapon { buf, buf.flatbuffers_indirect(0) }
def GetRootAsWeapon(buf:string):
return
Weapon { buf, buf.flatbuffers_indirect(0) }
def WeaponStart(b_:flatbuffers_builder):
def WeaponStart(b_:flatbuffers_builder):
b_.StartObject(2)
b_.StartObject(2)
...
@@ -119,5 +118,5 @@ def WeaponAddName(b_:flatbuffers_builder, name:int):
...
@@ -119,5 +118,5 @@ def WeaponAddName(b_:flatbuffers_builder, name:int):
def WeaponAddDamage(b_:flatbuffers_builder, damage:int):
def WeaponAddDamage(b_:flatbuffers_builder, damage:int):
b_.PrependInt16Slot(1, damage, 0)
b_.PrependInt16Slot(1, damage, 0)
def WeaponEnd(b_:flatbuffers_builder):
def WeaponEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
samples/sample_binary.lobster
View file @
30ac512a
...
@@ -12,8 +12,8 @@
...
@@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// See the License for the specific language governing permissions and
// limitations under the License.
// limitations under the License.
i
nclude
from "../lobster/"
i
mport
from "../lobster/"
i
nclude "monster_generated.lobster"
i
mport monster_generated
// Example of how to use FlatBuffers to create and read binary buffers.
// Example of how to use FlatBuffers to create and read binary buffers.
...
@@ -24,7 +24,7 @@ let b = flatbuffers_builder {}
...
@@ -24,7 +24,7 @@ let b = flatbuffers_builder {}
let weapon_names = [ "Sword", "Axe" ]
let weapon_names = [ "Sword", "Axe" ]
let weapon_damages = [ 3, 5 ]
let weapon_damages = [ 3, 5 ]
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()
b.MyGame_Sample_WeaponStart()
b.MyGame_Sample_WeaponAddName(ns)
b.MyGame_Sample_WeaponAddName(ns)
...
...
samples/sample_text.lobster
View file @
30ac512a
...
@@ -12,20 +12,20 @@
...
@@ -12,20 +12,20 @@
// See the License for the specific language governing permissions and
// See the License for the specific language governing permissions and
// limitations under the License.
// limitations under the License.
i
nclude
from "../lobster/"
i
mport
from "../lobster/"
i
nclude "monster_generated.lobster"
i
mport monster_generated
// Example how to interop with JSON.
// Example how to interop with JSON.
// Test loading some JSON, converting it to a binary FlatBuffer and back again.
// Test loading some JSON, converting it to a binary FlatBuffer and back again.
// First read the schema and JSON data.
// First read the schema and JSON data.
schema :
= read_file("monster.fbs", true)
let schema
= read_file("monster.fbs", true)
json :
= read_file("monsterdata.json", true)
let json
= read_file("monsterdata.json", true)
assert schema and json
assert schema and json
// Parse JSON to binary:
// Parse JSON to binary:
fb, err1 :
= flatbuffers_json_to_binary(schema, json, [])
let fb, err1
= flatbuffers_json_to_binary(schema, json, [])
assert not err1
assert not err1
// Access one field in it, just to check:
// Access one field in it, just to check:
...
@@ -33,7 +33,7 @@ let monster = MyGame_Sample_GetRootAsMonster(fb)
...
@@ -33,7 +33,7 @@ let monster = MyGame_Sample_GetRootAsMonster(fb)
assert monster.name == "Orc"
assert monster.name == "Orc"
// Convert binary back to JSON:
// Convert binary back to JSON:
json2, err2 :
= flatbuffers_binary_to_json(schema, fb, [])
let json2, err2
= flatbuffers_binary_to_json(schema, fb, [])
assert not err2
assert not err2
// The generated JSON should be exactly equal to the original!
// The generated JSON should be exactly equal to the original!
...
...
src/idl_gen_lobster.cpp
View file @
30ac512a
...
@@ -31,7 +31,7 @@ class LobsterGenerator : public BaseGenerator {
...
@@ -31,7 +31,7 @@ class LobsterGenerator : public BaseGenerator {
const
std
::
string
&
file_name
)
const
std
::
string
&
file_name
)
:
BaseGenerator
(
parser
,
path
,
file_name
,
""
/* not used */
,
"_"
)
{
:
BaseGenerator
(
parser
,
path
,
file_name
,
""
/* not used */
,
"_"
)
{
static
const
char
*
const
keywords
[]
=
{
static
const
char
*
const
keywords
[]
=
{
"nil"
,
"true"
,
"false"
,
"return"
,
"struct"
,
"
value"
,
"include
"
,
"int"
,
"nil"
,
"true"
,
"false"
,
"return"
,
"struct"
,
"
class"
,
"import
"
,
"int"
,
"float"
,
"string"
,
"any"
,
"def"
,
"is"
,
"from"
,
"program"
,
"private"
,
"float"
,
"string"
,
"any"
,
"def"
,
"is"
,
"from"
,
"program"
,
"private"
,
"coroutine"
,
"resource"
,
"enum"
,
"typeof"
,
"var"
,
"let"
,
"pakfile"
,
"coroutine"
,
"resource"
,
"enum"
,
"typeof"
,
"var"
,
"let"
,
"pakfile"
,
"switch"
,
"case"
,
"default"
,
"namespace"
,
"not"
,
"and"
,
"or"
,
"bool"
,
"switch"
,
"case"
,
"default"
,
"namespace"
,
"not"
,
"and"
,
"or"
,
"bool"
,
...
@@ -99,11 +99,11 @@ class LobsterGenerator : public BaseGenerator {
...
@@ -99,11 +99,11 @@ class LobsterGenerator : public BaseGenerator {
auto
def
=
" def "
+
NormalizedName
(
field
);
auto
def
=
" def "
+
NormalizedName
(
field
);
if
(
IsScalar
(
field
.
value
.
type
.
base_type
))
{
if
(
IsScalar
(
field
.
value
.
type
.
base_type
))
{
if
(
struct_def
.
fixed
)
{
if
(
struct_def
.
fixed
)
{
code
+=
def
+
"():
\n
buf_.read_"
+
code
+=
def
+
"():
\n
return
buf_.read_"
+
GenTypeName
(
field
.
value
.
type
)
+
"_le(pos_ + "
+
offsets
+
GenTypeName
(
field
.
value
.
type
)
+
"_le(pos_ + "
+
offsets
+
")
\n
"
;
")
\n
"
;
}
else
{
}
else
{
code
+=
def
+
"():
\n
buf_.flatbuffers_field_"
+
code
+=
def
+
"():
\n
return
buf_.flatbuffers_field_"
+
GenTypeName
(
field
.
value
.
type
)
+
"(pos_, "
+
offsets
+
", "
+
GenTypeName
(
field
.
value
.
type
)
+
"(pos_, "
+
offsets
+
", "
+
field
.
value
.
constant
+
")
\n
"
;
field
.
value
.
constant
+
")
\n
"
;
}
}
...
@@ -114,22 +114,22 @@ class LobsterGenerator : public BaseGenerator {
...
@@ -114,22 +114,22 @@ class LobsterGenerator : public BaseGenerator {
auto
name
=
NamespacedName
(
*
field
.
value
.
type
.
struct_def
);
auto
name
=
NamespacedName
(
*
field
.
value
.
type
.
struct_def
);
code
+=
def
+
"():
\n
"
;
code
+=
def
+
"():
\n
"
;
if
(
struct_def
.
fixed
)
{
if
(
struct_def
.
fixed
)
{
code
+=
name
+
"{ buf_, pos_ + "
+
offsets
+
" }
\n
"
;
code
+=
"return "
+
name
+
"{ buf_, pos_ + "
+
offsets
+
" }
\n
"
;
}
else
{
}
else
{
code
+=
std
::
string
(
"
o :
= buf_.flatbuffers_field_"
)
+
code
+=
std
::
string
(
"
let o
= buf_.flatbuffers_field_"
)
+
(
field
.
value
.
type
.
struct_def
->
fixed
?
"struct"
:
"table"
)
+
(
field
.
value
.
type
.
struct_def
->
fixed
?
"struct"
:
"table"
)
+
"(pos_, "
+
offsets
+
")
\n
if o: "
+
name
+
"(pos_, "
+
offsets
+
")
\n
return
if o: "
+
name
+
" { buf_, o } else: nil
\n
"
;
" { buf_, o } else: nil
\n
"
;
}
}
break
;
break
;
}
}
case
BASE_TYPE_STRING
:
case
BASE_TYPE_STRING
:
code
+=
def
+
"():
\n
buf_.flatbuffers_field_string(pos_, "
+
code
+=
def
+
"():
\n
return
buf_.flatbuffers_field_string(pos_, "
+
offsets
+
")
\n
"
;
offsets
+
")
\n
"
;
break
;
break
;
case
BASE_TYPE_VECTOR
:
{
case
BASE_TYPE_VECTOR
:
{
auto
vectortype
=
field
.
value
.
type
.
VectorType
();
auto
vectortype
=
field
.
value
.
type
.
VectorType
();
code
+=
def
+
"(i:int):
\n
"
;
code
+=
def
+
"(i:int):
\n
return
"
;
if
(
vectortype
.
base_type
==
BASE_TYPE_STRUCT
)
{
if
(
vectortype
.
base_type
==
BASE_TYPE_STRUCT
)
{
auto
start
=
"buf_.flatbuffers_field_vector(pos_, "
+
offsets
+
auto
start
=
"buf_.flatbuffers_field_vector(pos_, "
+
offsets
+
") + i * "
+
NumToString
(
InlineSize
(
vectortype
));
") + i * "
+
NumToString
(
InlineSize
(
vectortype
));
...
@@ -153,7 +153,7 @@ class LobsterGenerator : public BaseGenerator {
...
@@ -153,7 +153,7 @@ class LobsterGenerator : public BaseGenerator {
it
!=
field
.
value
.
type
.
enum_def
->
Vals
().
end
();
++
it
)
{
it
!=
field
.
value
.
type
.
enum_def
->
Vals
().
end
();
++
it
)
{
auto
&
ev
=
**
it
;
auto
&
ev
=
**
it
;
if
(
ev
.
IsNonZero
())
{
if
(
ev
.
IsNonZero
())
{
code
+=
def
+
"_as_"
+
ev
.
name
+
"():
\n
"
+
code
+=
def
+
"_as_"
+
ev
.
name
+
"():
\n
return
"
+
NamespacedName
(
*
ev
.
union_type
.
struct_def
)
+
NamespacedName
(
*
ev
.
union_type
.
struct_def
)
+
" { buf_, buf_.flatbuffers_field_table(pos_, "
+
offsets
+
" { buf_, buf_.flatbuffers_field_table(pos_, "
+
offsets
+
") }
\n
"
;
") }
\n
"
;
...
@@ -165,7 +165,7 @@ class LobsterGenerator : public BaseGenerator {
...
@@ -165,7 +165,7 @@ class LobsterGenerator : public BaseGenerator {
}
}
if
(
field
.
value
.
type
.
base_type
==
BASE_TYPE_VECTOR
)
{
if
(
field
.
value
.
type
.
base_type
==
BASE_TYPE_VECTOR
)
{
code
+=
def
+
code
+=
def
+
"_length():
\n
buf_.flatbuffers_field_vector_len(pos_, "
+
"_length():
\n
return
buf_.flatbuffers_field_vector_len(pos_, "
+
offsets
+
")
\n
"
;
offsets
+
")
\n
"
;
}
}
}
}
...
@@ -207,19 +207,19 @@ class LobsterGenerator : public BaseGenerator {
...
@@ -207,19 +207,19 @@ class LobsterGenerator : public BaseGenerator {
NumToString
(
alignment
)
+
NumToString
(
alignment
)
+
")
\n
reverse(v_) e_: b_.Prepend"
+
")
\n
reverse(v_) e_: b_.Prepend"
+
GenMethod
(
vector_type
)
+
GenMethod
(
vector_type
)
+
"(e_)
\n
b_.EndVector(v_.length)
\n
"
;
"(e_)
\n
return
b_.EndVector(v_.length)
\n
"
;
}
}
}
}
}
}
code
+=
"def "
+
NormalizedName
(
struct_def
)
+
code
+=
"def "
+
NormalizedName
(
struct_def
)
+
"End(b_:flatbuffers_builder):
\n
b_.EndObject()
\n\n
"
;
"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
)
{
if
(
struct_def
.
generated
)
return
;
if
(
struct_def
.
generated
)
return
;
std
::
string
&
code
=
*
code_ptr
;
std
::
string
&
code
=
*
code_ptr
;
CheckNameSpace
(
struct_def
,
&
code
);
CheckNameSpace
(
struct_def
,
&
code
);
code
+=
"
struct
"
+
NormalizedName
(
struct_def
)
+
"
\n\n
"
;
code
+=
"
class
"
+
NormalizedName
(
struct_def
)
+
"
\n\n
"
;
}
}
// Generate struct or table methods.
// Generate struct or table methods.
...
@@ -228,7 +228,7 @@ class LobsterGenerator : public BaseGenerator {
...
@@ -228,7 +228,7 @@ class LobsterGenerator : public BaseGenerator {
std
::
string
&
code
=
*
code_ptr
;
std
::
string
&
code
=
*
code_ptr
;
CheckNameSpace
(
struct_def
,
&
code
);
CheckNameSpace
(
struct_def
,
&
code
);
GenComment
(
struct_def
.
doc_comment
,
code_ptr
,
nullptr
,
""
);
GenComment
(
struct_def
.
doc_comment
,
code_ptr
,
nullptr
,
""
);
code
+=
"
struct
"
+
NormalizedName
(
struct_def
)
+
" : flatbuffers_handle
\n
"
;
code
+=
"
class
"
+
NormalizedName
(
struct_def
)
+
" : flatbuffers_handle
\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
;
...
@@ -239,7 +239,7 @@ class LobsterGenerator : public BaseGenerator {
...
@@ -239,7 +239,7 @@ class LobsterGenerator : public BaseGenerator {
if
(
!
struct_def
.
fixed
)
{
if
(
!
struct_def
.
fixed
)
{
// Generate a special accessor for the table that has been declared as
// Generate a special accessor for the table that has been declared as
// the root type.
// the root type.
code
+=
"def GetRootAs"
+
NormalizedName
(
struct_def
)
+
"(buf:string): "
+
code
+=
"def GetRootAs"
+
NormalizedName
(
struct_def
)
+
"(buf:string):
return
"
+
NormalizedName
(
struct_def
)
+
NormalizedName
(
struct_def
)
+
" { buf, buf.flatbuffers_indirect(0) }
\n\n
"
;
" { buf, buf.flatbuffers_indirect(0) }
\n\n
"
;
}
}
...
@@ -258,14 +258,12 @@ class LobsterGenerator : public BaseGenerator {
...
@@ -258,14 +258,12 @@ class LobsterGenerator : public BaseGenerator {
std
::
string
&
code
=
*
code_ptr
;
std
::
string
&
code
=
*
code_ptr
;
CheckNameSpace
(
enum_def
,
&
code
);
CheckNameSpace
(
enum_def
,
&
code
);
GenComment
(
enum_def
.
doc_comment
,
code_ptr
,
nullptr
,
""
);
GenComment
(
enum_def
.
doc_comment
,
code_ptr
,
nullptr
,
""
);
code
+=
"enum
+
\n
"
;
code
+=
"enum
"
+
NormalizedName
(
enum_def
)
+
":
\n
"
;
for
(
auto
it
=
enum_def
.
Vals
().
begin
();
it
!=
enum_def
.
Vals
().
end
();
++
it
)
{
for
(
auto
it
=
enum_def
.
Vals
().
begin
();
it
!=
enum_def
.
Vals
().
end
();
++
it
)
{
auto
&
ev
=
**
it
;
auto
&
ev
=
**
it
;
GenComment
(
ev
.
doc_comment
,
code_ptr
,
nullptr
,
" "
);
GenComment
(
ev
.
doc_comment
,
code_ptr
,
nullptr
,
" "
);
code
+=
" "
+
enum_def
.
name
+
"_"
+
NormalizedName
(
ev
)
+
" = "
+
code
+=
" "
+
enum_def
.
name
+
"_"
+
NormalizedName
(
ev
)
+
" = "
+
enum_def
.
ToString
(
ev
);
enum_def
.
ToString
(
ev
)
+
"
\n
"
;
if
(
it
+
1
!=
enum_def
.
Vals
().
end
())
code
+=
","
;
code
+=
"
\n
"
;
}
}
code
+=
"
\n
"
;
code
+=
"
\n
"
;
}
}
...
@@ -336,7 +334,7 @@ class LobsterGenerator : public BaseGenerator {
...
@@ -336,7 +334,7 @@ class LobsterGenerator : public BaseGenerator {
bool
generate
()
{
bool
generate
()
{
std
::
string
code
;
std
::
string
code
;
code
+=
std
::
string
(
"// "
)
+
FlatBuffersGeneratedWarning
()
+
code
+=
std
::
string
(
"// "
)
+
FlatBuffersGeneratedWarning
()
+
"
\n
\n
include
\"
flatbuffers.lobster
\"
\n\n
"
;
"
\n
import flatbuffers
\n\n
"
;
for
(
auto
it
=
parser_
.
enums_
.
vec
.
begin
();
it
!=
parser_
.
enums_
.
vec
.
end
();
for
(
auto
it
=
parser_
.
enums_
.
vec
.
begin
();
it
!=
parser_
.
enums_
.
vec
.
end
();
++
it
)
{
++
it
)
{
auto
&
enum_def
=
**
it
;
auto
&
enum_def
=
**
it
;
...
...
tests/lobstertest.lobster
View file @
30ac512a
...
@@ -12,8 +12,8 @@
...
@@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// See the License for the specific language governing permissions and
// limitations under the License.
// limitations under the License.
i
nclude
from "../lobster/"
i
mport
from "../lobster/"
i
nclude "monster_test_generated.lobster"
i
mport monster_test_generated
def check_read_buffer(buf):
def check_read_buffer(buf):
// CheckReadBuffer checks that the given buffer is evaluated correctly as the example Monster.
// CheckReadBuffer checks that the given buffer is evaluated correctly as the example Monster.
...
@@ -119,14 +119,14 @@ check_read_buffer(fb1)
...
@@ -119,14 +119,14 @@ check_read_buffer(fb1)
write_file("monsterdata_lobster_wire.mon", fb1)
write_file("monsterdata_lobster_wire.mon", fb1)
// Test converting the buffer to JSON and parsing the JSON back again.
// Test converting the buffer to JSON and parsing the JSON back again.
schema :
= read_file("monster_test.fbs")
let schema
= read_file("monster_test.fbs")
assert schema
assert schema
includedirs :
= [ "include_test" ]
let includedirs
= [ "include_test" ]
// Convert binary to JSON:
// Convert binary to JSON:
json, err1 :
= flatbuffers_binary_to_json(schema, fb1, includedirs)
let json, err1
= flatbuffers_binary_to_json(schema, fb1, includedirs)
assert not err1
assert not err1
// Parse JSON back to binary:
// Parse JSON back to binary:
fb3, err2 :
= flatbuffers_json_to_binary(schema, json, includedirs)
let fb3, err2
= flatbuffers_json_to_binary(schema, json, includedirs)
assert not err2
assert not err2
// Check the resulting binary again (full roundtrip test):
// Check the resulting binary again (full roundtrip test):
check_read_buffer(fb3)
check_read_buffer(fb3)
...
...
tests/monster_test_generated.lobster
View file @
30ac512a
// automatically generated by the FlatBuffers compiler, do not modify
// automatically generated by the FlatBuffers compiler, do not modify
import flatbuffers
include "flatbuffers.lobster"
namespace MyGame_Example
namespace MyGame_Example
enum
+
enum
Color:
Color_Red = 1
,
Color_Red = 1
Color_Green = 2
,
Color_Green = 2
Color_Blue = 8
Color_Blue = 8
enum
+
enum
Any:
Any_NONE = 0
,
Any_NONE = 0
Any_Monster = 1
,
Any_Monster = 1
Any_TestSimpleTableWithEnum = 2
,
Any_TestSimpleTableWithEnum = 2
Any_MyGame_Example2_Monster = 3
Any_MyGame_Example2_Monster = 3
enum
+
enum
AnyUniqueAliases:
AnyUniqueAliases_NONE = 0
,
AnyUniqueAliases_NONE = 0
AnyUniqueAliases_M = 1
,
AnyUniqueAliases_M = 1
AnyUniqueAliases_T = 2
,
AnyUniqueAliases_T = 2
AnyUniqueAliases_M2 = 3
AnyUniqueAliases_M2 = 3
enum
+
enum
AnyAmbiguousAliases:
AnyAmbiguousAliases_NONE = 0
,
AnyAmbiguousAliases_NONE = 0
AnyAmbiguousAliases_M1 = 1
,
AnyAmbiguousAliases_M1 = 1
AnyAmbiguousAliases_M2 = 2
,
AnyAmbiguousAliases_M2 = 2
AnyAmbiguousAliases_M3 = 3
AnyAmbiguousAliases_M3 = 3
namespace MyGame
namespace MyGame
struct
InParentNamespace
class
InParentNamespace
namespace MyGame_Example2
namespace MyGame_Example2
struct
Monster
class
Monster
namespace MyGame_Example
namespace MyGame_Example
struct
Test
class
Test
struct
TestSimpleTableWithEnum
class
TestSimpleTableWithEnum
struct
Vec3
class
Vec3
struct
Ability
class
Ability
struct
Stat
class
Stat
struct
Referrable
class
Referrable
struct
Monster
class
Monster
struct
TypeAliases
class
TypeAliases
namespace MyGame
namespace MyGame
struct
InParentNamespace : flatbuffers_handle
class
InParentNamespace : flatbuffers_handle
def GetRootAsInParentNamespace(buf:string): InParentNamespace { buf, buf.flatbuffers_indirect(0) }
def GetRootAsInParentNamespace(buf:string):
return
InParentNamespace { buf, buf.flatbuffers_indirect(0) }
def InParentNamespaceStart(b_:flatbuffers_builder):
def InParentNamespaceStart(b_:flatbuffers_builder):
b_.StartObject(0)
b_.StartObject(0)
def InParentNamespaceEnd(b_:flatbuffers_builder):
def InParentNamespaceEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
namespace MyGame_Example2
namespace MyGame_Example2
struct
Monster : flatbuffers_handle
class
Monster : flatbuffers_handle
def GetRootAsMonster(buf:string): Monster { buf, buf.flatbuffers_indirect(0) }
def GetRootAsMonster(buf:string):
return
Monster { buf, buf.flatbuffers_indirect(0) }
def MonsterStart(b_:flatbuffers_builder):
def MonsterStart(b_:flatbuffers_builder):
b_.StartObject(0)
b_.StartObject(0)
def MonsterEnd(b_:flatbuffers_builder):
def MonsterEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
namespace MyGame_Example
namespace MyGame_Example
struct
Test : flatbuffers_handle
class
Test : flatbuffers_handle
def a():
def a():
buf_.read_int16_le(pos_ + 0)
return
buf_.read_int16_le(pos_ + 0)
def b():
def b():
buf_.read_int8_le(pos_ + 2)
return
buf_.read_int8_le(pos_ + 2)
def CreateTest(b_:flatbuffers_builder, a:int, b:int):
def CreateTest(b_:flatbuffers_builder, a:int, b:int):
b_.Prep(2, 4)
b_.Prep(2, 4)
...
@@ -90,32 +89,32 @@ def CreateTest(b_:flatbuffers_builder, a:int, b:int):
...
@@ -90,32 +89,32 @@ def CreateTest(b_:flatbuffers_builder, a:int, b:int):
b_.PrependInt16(a)
b_.PrependInt16(a)
return b_.Offset()
return b_.Offset()
struct
TestSimpleTableWithEnum : flatbuffers_handle
class
TestSimpleTableWithEnum : flatbuffers_handle
def color():
def color():
buf_.flatbuffers_field_int8(pos_, 4, 2)
return
buf_.flatbuffers_field_int8(pos_, 4, 2)
def GetRootAsTestSimpleTableWithEnum(buf:string): 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:int):
b_.PrependUint8Slot(0, color, 2)
b_.PrependUint8Slot(0, color, 2)
def TestSimpleTableWithEnumEnd(b_:flatbuffers_builder):
def TestSimpleTableWithEnumEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
struct
Vec3 : flatbuffers_handle
class
Vec3 : flatbuffers_handle
def x():
def x():
buf_.read_float32_le(pos_ + 0)
return
buf_.read_float32_le(pos_ + 0)
def y():
def y():
buf_.read_float32_le(pos_ + 4)
return
buf_.read_float32_le(pos_ + 4)
def z():
def z():
buf_.read_float32_le(pos_ + 8)
return
buf_.read_float32_le(pos_ + 8)
def test1():
def test1():
buf_.read_float64_le(pos_ + 16)
return
buf_.read_float64_le(pos_ + 16)
def test2():
def test2():
buf_.read_int8_le(pos_ + 24)
return
buf_.read_int8_le(pos_ + 24)
def test3():
def test3():
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:int, test3_a:int, test3_b:int):
b_.Prep(8, 32)
b_.Prep(8, 32)
...
@@ -133,11 +132,11 @@ def CreateVec3(b_:flatbuffers_builder, x:float, y:float, z:float, test1:float, t
...
@@ -133,11 +132,11 @@ def CreateVec3(b_:flatbuffers_builder, x:float, y:float, z:float, test1:float, t
b_.PrependFloat32(x)
b_.PrependFloat32(x)
return b_.Offset()
return b_.Offset()
struct
Ability : flatbuffers_handle
class
Ability : flatbuffers_handle
def id():
def id():
buf_.read_int32_le(pos_ + 0)
return
buf_.read_int32_le(pos_ + 0)
def distance():
def distance():
buf_.read_int32_le(pos_ + 4)
return
buf_.read_int32_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)
...
@@ -145,15 +144,15 @@ def CreateAbility(b_:flatbuffers_builder, id:int, distance:int):
...
@@ -145,15 +144,15 @@ def CreateAbility(b_:flatbuffers_builder, id:int, distance:int):
b_.PrependUint32(id)
b_.PrependUint32(id)
return b_.Offset()
return b_.Offset()
struct
Stat : flatbuffers_handle
class
Stat : flatbuffers_handle
def id():
def id():
buf_.flatbuffers_field_string(pos_, 4)
return
buf_.flatbuffers_field_string(pos_, 4)
def val():
def val():
buf_.flatbuffers_field_int64(pos_, 6, 0)
return
buf_.flatbuffers_field_int64(pos_, 6, 0)
def count():
def count():
buf_.flatbuffers_field_int16(pos_, 8, 0)
return
buf_.flatbuffers_field_int16(pos_, 8, 0)
def GetRootAsStat(buf:string): Stat { buf, buf.flatbuffers_indirect(0) }
def GetRootAsStat(buf:string):
return
Stat { buf, buf.flatbuffers_indirect(0) }
def StatStart(b_:flatbuffers_builder):
def StatStart(b_:flatbuffers_builder):
b_.StartObject(3)
b_.StartObject(3)
...
@@ -164,173 +163,173 @@ def StatAddVal(b_:flatbuffers_builder, val:int):
...
@@ -164,173 +163,173 @@ def StatAddVal(b_:flatbuffers_builder, val:int):
def StatAddCount(b_:flatbuffers_builder, count:int):
def StatAddCount(b_:flatbuffers_builder, count:int):
b_.PrependUint16Slot(2, count, 0)
b_.PrependUint16Slot(2, count, 0)
def StatEnd(b_:flatbuffers_builder):
def StatEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
struct
Referrable : flatbuffers_handle
class
Referrable : flatbuffers_handle
def id():
def id():
buf_.flatbuffers_field_int64(pos_, 4, 0)
return
buf_.flatbuffers_field_int64(pos_, 4, 0)
def GetRootAsReferrable(buf:string): Referrable { buf, buf.flatbuffers_indirect(0) }
def GetRootAsReferrable(buf:string):
return
Referrable { buf, buf.flatbuffers_indirect(0) }
def ReferrableStart(b_:flatbuffers_builder):
def ReferrableStart(b_:flatbuffers_builder):
b_.StartObject(1)
b_.StartObject(1)
def ReferrableAddId(b_:flatbuffers_builder, id:int):
def ReferrableAddId(b_:flatbuffers_builder, id:int):
b_.PrependUint64Slot(0, id, 0)
b_.PrependUint64Slot(0, id, 0)
def ReferrableEnd(b_:flatbuffers_builder):
def ReferrableEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
/// an example documentation comment: monster object
/// an example documentation comment: monster object
struct
Monster : flatbuffers_handle
class
Monster : flatbuffers_handle
def pos():
def pos():
o :
= buf_.flatbuffers_field_struct(pos_, 4)
let o
= buf_.flatbuffers_field_struct(pos_, 4)
if o: MyGame_Example_Vec3 { buf_, o } else: nil
return
if o: MyGame_Example_Vec3 { buf_, o } else: nil
def mana():
def mana():
buf_.flatbuffers_field_int16(pos_, 6, 150)
return
buf_.flatbuffers_field_int16(pos_, 6, 150)
def hp():
def hp():
buf_.flatbuffers_field_int16(pos_, 8, 100)
return
buf_.flatbuffers_field_int16(pos_, 8, 100)
def name():
def name():
buf_.flatbuffers_field_string(pos_, 10)
return
buf_.flatbuffers_field_string(pos_, 10)
def inventory(i:int):
def inventory(i:int):
buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 14) + i * 1)
return
buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 14) + i * 1)
def inventory_length():
def inventory_length():
buf_.flatbuffers_field_vector_len(pos_, 14)
return
buf_.flatbuffers_field_vector_len(pos_, 14)
def color():
def color():
buf_.flatbuffers_field_int8(pos_, 16, 8)
return
buf_.flatbuffers_field_int8(pos_, 16, 8)
def test_type():
def test_type():
buf_.flatbuffers_field_int8(pos_, 18, 0)
return
buf_.flatbuffers_field_int8(pos_, 18, 0)
def test_as_Monster():
def test_as_Monster():
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():
MyGame_Example_TestSimpleTableWithEnum { buf_, buf_.flatbuffers_field_table(pos_, 20) }
return
MyGame_Example_TestSimpleTableWithEnum { buf_, buf_.flatbuffers_field_table(pos_, 20) }
def test_as_MyGame_Example2_Monster():
def test_as_MyGame_Example2_Monster():
MyGame_Example2_Monster { buf_, buf_.flatbuffers_field_table(pos_, 20) }
return
MyGame_Example2_Monster { buf_, buf_.flatbuffers_field_table(pos_, 20) }
def test4(i:int):
def test4(i:int):
MyGame_Example_Test { buf_, buf_.flatbuffers_field_vector(pos_, 22) + i * 4 }
return
MyGame_Example_Test { buf_, buf_.flatbuffers_field_vector(pos_, 22) + i * 4 }
def test4_length():
def test4_length():
buf_.flatbuffers_field_vector_len(pos_, 22)
return
buf_.flatbuffers_field_vector_len(pos_, 22)
def testarrayofstring(i:int):
def testarrayofstring(i:int):
buf_.flatbuffers_string(buf_.flatbuffers_field_vector(pos_, 24) + i * 4)
return
buf_.flatbuffers_string(buf_.flatbuffers_field_vector(pos_, 24) + i * 4)
def testarrayofstring_length():
def testarrayofstring_length():
buf_.flatbuffers_field_vector_len(pos_, 24)
return
buf_.flatbuffers_field_vector_len(pos_, 24)
/// an example documentation comment: this will end up in the generated code
/// an example documentation comment: this will end up in the generated code
/// multiline too
/// multiline too
def testarrayoftables(i:int):
def testarrayoftables(i:int):
MyGame_Example_Monster { buf_, buf_.flatbuffers_indirect(buf_.flatbuffers_field_vector(pos_, 26) + i * 4) }
return
MyGame_Example_Monster { buf_, buf_.flatbuffers_indirect(buf_.flatbuffers_field_vector(pos_, 26) + i * 4) }
def testarrayoftables_length():
def testarrayoftables_length():
buf_.flatbuffers_field_vector_len(pos_, 26)
return
buf_.flatbuffers_field_vector_len(pos_, 26)
def enemy():
def enemy():
o :
= buf_.flatbuffers_field_table(pos_, 28)
let o
= buf_.flatbuffers_field_table(pos_, 28)
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):
buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 30) + i * 1)
return
buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 30) + i * 1)
def testnestedflatbuffer_length():
def testnestedflatbuffer_length():
buf_.flatbuffers_field_vector_len(pos_, 30)
return
buf_.flatbuffers_field_vector_len(pos_, 30)
def testempty():
def testempty():
o :
= buf_.flatbuffers_field_table(pos_, 32)
let o
= buf_.flatbuffers_field_table(pos_, 32)
if o: MyGame_Example_Stat { buf_, o } else: nil
return
if o: MyGame_Example_Stat { buf_, o } else: nil
def testbool():
def testbool():
buf_.flatbuffers_field_int8(pos_, 34, 0)
return
buf_.flatbuffers_field_int8(pos_, 34, 0)
def testhashs32_fnv1():
def testhashs32_fnv1():
buf_.flatbuffers_field_int32(pos_, 36, 0)
return
buf_.flatbuffers_field_int32(pos_, 36, 0)
def testhashu32_fnv1():
def testhashu32_fnv1():
buf_.flatbuffers_field_int32(pos_, 38, 0)
return
buf_.flatbuffers_field_int32(pos_, 38, 0)
def testhashs64_fnv1():
def testhashs64_fnv1():
buf_.flatbuffers_field_int64(pos_, 40, 0)
return
buf_.flatbuffers_field_int64(pos_, 40, 0)
def testhashu64_fnv1():
def testhashu64_fnv1():
buf_.flatbuffers_field_int64(pos_, 42, 0)
return
buf_.flatbuffers_field_int64(pos_, 42, 0)
def testhashs32_fnv1a():
def testhashs32_fnv1a():
buf_.flatbuffers_field_int32(pos_, 44, 0)
return
buf_.flatbuffers_field_int32(pos_, 44, 0)
def testhashu32_fnv1a():
def testhashu32_fnv1a():
buf_.flatbuffers_field_int32(pos_, 46, 0)
return
buf_.flatbuffers_field_int32(pos_, 46, 0)
def testhashs64_fnv1a():
def testhashs64_fnv1a():
buf_.flatbuffers_field_int64(pos_, 48, 0)
return
buf_.flatbuffers_field_int64(pos_, 48, 0)
def testhashu64_fnv1a():
def testhashu64_fnv1a():
buf_.flatbuffers_field_int64(pos_, 50, 0)
return
buf_.flatbuffers_field_int64(pos_, 50, 0)
def testarrayofbools(i:int):
def testarrayofbools(i:int):
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():
buf_.flatbuffers_field_vector_len(pos_, 52)
return
buf_.flatbuffers_field_vector_len(pos_, 52)
def testf():
def testf():
buf_.flatbuffers_field_float32(pos_, 54, 3.14159)
return
buf_.flatbuffers_field_float32(pos_, 54, 3.14159)
def testf2():
def testf2():
buf_.flatbuffers_field_float32(pos_, 56, 3.0)
return
buf_.flatbuffers_field_float32(pos_, 56, 3.0)
def testf3():
def testf3():
buf_.flatbuffers_field_float32(pos_, 58, 0.0)
return
buf_.flatbuffers_field_float32(pos_, 58, 0.0)
def testarrayofstring2(i:int):
def testarrayofstring2(i:int):
buf_.flatbuffers_string(buf_.flatbuffers_field_vector(pos_, 60) + i * 4)
return
buf_.flatbuffers_string(buf_.flatbuffers_field_vector(pos_, 60) + i * 4)
def testarrayofstring2_length():
def testarrayofstring2_length():
buf_.flatbuffers_field_vector_len(pos_, 60)
return
buf_.flatbuffers_field_vector_len(pos_, 60)
def testarrayofsortedstruct(i:int):
def testarrayofsortedstruct(i:int):
MyGame_Example_Ability { buf_, buf_.flatbuffers_field_vector(pos_, 62) + i * 8 }
return
MyGame_Example_Ability { buf_, buf_.flatbuffers_field_vector(pos_, 62) + i * 8 }
def testarrayofsortedstruct_length():
def testarrayofsortedstruct_length():
buf_.flatbuffers_field_vector_len(pos_, 62)
return
buf_.flatbuffers_field_vector_len(pos_, 62)
def flex(i:int):
def flex(i:int):
buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 64) + i * 1)
return
buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 64) + i * 1)
def flex_length():
def flex_length():
buf_.flatbuffers_field_vector_len(pos_, 64)
return
buf_.flatbuffers_field_vector_len(pos_, 64)
def test5(i:int):
def test5(i:int):
MyGame_Example_Test { buf_, buf_.flatbuffers_field_vector(pos_, 66) + i * 4 }
return
MyGame_Example_Test { buf_, buf_.flatbuffers_field_vector(pos_, 66) + i * 4 }
def test5_length():
def test5_length():
buf_.flatbuffers_field_vector_len(pos_, 66)
return
buf_.flatbuffers_field_vector_len(pos_, 66)
def vector_of_longs(i:int):
def vector_of_longs(i:int):
buf_.read_int64_le(buf_.flatbuffers_field_vector(pos_, 68) + i * 8)
return
buf_.read_int64_le(buf_.flatbuffers_field_vector(pos_, 68) + i * 8)
def vector_of_longs_length():
def vector_of_longs_length():
buf_.flatbuffers_field_vector_len(pos_, 68)
return
buf_.flatbuffers_field_vector_len(pos_, 68)
def vector_of_doubles(i:int):
def vector_of_doubles(i:int):
buf_.read_float64_le(buf_.flatbuffers_field_vector(pos_, 70) + i * 8)
return
buf_.read_float64_le(buf_.flatbuffers_field_vector(pos_, 70) + i * 8)
def vector_of_doubles_length():
def vector_of_doubles_length():
buf_.flatbuffers_field_vector_len(pos_, 70)
return
buf_.flatbuffers_field_vector_len(pos_, 70)
def parent_namespace_test():
def parent_namespace_test():
o :
= buf_.flatbuffers_field_table(pos_, 72)
let o
= buf_.flatbuffers_field_table(pos_, 72)
if o: MyGame_InParentNamespace { buf_, o } else: nil
return
if o: MyGame_InParentNamespace { buf_, o } else: nil
def vector_of_referrables(i:int):
def vector_of_referrables(i:int):
MyGame_Example_Referrable { buf_, buf_.flatbuffers_indirect(buf_.flatbuffers_field_vector(pos_, 74) + i * 4) }
return
MyGame_Example_Referrable { buf_, buf_.flatbuffers_indirect(buf_.flatbuffers_field_vector(pos_, 74) + i * 4) }
def vector_of_referrables_length():
def vector_of_referrables_length():
buf_.flatbuffers_field_vector_len(pos_, 74)
return
buf_.flatbuffers_field_vector_len(pos_, 74)
def single_weak_reference():
def single_weak_reference():
buf_.flatbuffers_field_int64(pos_, 76, 0)
return
buf_.flatbuffers_field_int64(pos_, 76, 0)
def vector_of_weak_references(i:int):
def vector_of_weak_references(i:int):
buf_.read_int64_le(buf_.flatbuffers_field_vector(pos_, 78) + i * 8)
return
buf_.read_int64_le(buf_.flatbuffers_field_vector(pos_, 78) + i * 8)
def vector_of_weak_references_length():
def vector_of_weak_references_length():
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):
MyGame_Example_Referrable { buf_, buf_.flatbuffers_indirect(buf_.flatbuffers_field_vector(pos_, 80) + i * 4) }
return
MyGame_Example_Referrable { buf_, buf_.flatbuffers_indirect(buf_.flatbuffers_field_vector(pos_, 80) + i * 4) }
def vector_of_strong_referrables_length():
def vector_of_strong_referrables_length():
buf_.flatbuffers_field_vector_len(pos_, 80)
return
buf_.flatbuffers_field_vector_len(pos_, 80)
def co_owning_reference():
def co_owning_reference():
buf_.flatbuffers_field_int64(pos_, 82, 0)
return
buf_.flatbuffers_field_int64(pos_, 82, 0)
def vector_of_co_owning_references(i:int):
def vector_of_co_owning_references(i:int):
buf_.read_int64_le(buf_.flatbuffers_field_vector(pos_, 84) + i * 8)
return
buf_.read_int64_le(buf_.flatbuffers_field_vector(pos_, 84) + i * 8)
def vector_of_co_owning_references_length():
def vector_of_co_owning_references_length():
buf_.flatbuffers_field_vector_len(pos_, 84)
return
buf_.flatbuffers_field_vector_len(pos_, 84)
def non_owning_reference():
def non_owning_reference():
buf_.flatbuffers_field_int64(pos_, 86, 0)
return
buf_.flatbuffers_field_int64(pos_, 86, 0)
def vector_of_non_owning_references(i:int):
def vector_of_non_owning_references(i:int):
buf_.read_int64_le(buf_.flatbuffers_field_vector(pos_, 88) + i * 8)
return
buf_.read_int64_le(buf_.flatbuffers_field_vector(pos_, 88) + i * 8)
def vector_of_non_owning_references_length():
def vector_of_non_owning_references_length():
buf_.flatbuffers_field_vector_len(pos_, 88)
return
buf_.flatbuffers_field_vector_len(pos_, 88)
def any_unique_type():
def any_unique_type():
buf_.flatbuffers_field_int8(pos_, 90, 0)
return
buf_.flatbuffers_field_int8(pos_, 90, 0)
def any_unique_as_M():
def any_unique_as_M():
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():
MyGame_Example_TestSimpleTableWithEnum { buf_, buf_.flatbuffers_field_table(pos_, 92) }
return
MyGame_Example_TestSimpleTableWithEnum { buf_, buf_.flatbuffers_field_table(pos_, 92) }
def any_unique_as_M2():
def any_unique_as_M2():
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():
buf_.flatbuffers_field_int8(pos_, 94, 0)
return
buf_.flatbuffers_field_int8(pos_, 94, 0)
def any_ambiguous_as_M1():
def any_ambiguous_as_M1():
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():
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_M3():
def any_ambiguous_as_M3():
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):
buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 98) + i * 1)
return
buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 98) + i * 1)
def vector_of_enums_length():
def vector_of_enums_length():
buf_.flatbuffers_field_vector_len(pos_, 98)
return
buf_.flatbuffers_field_vector_len(pos_, 98)
def GetRootAsMonster(buf:string): Monster { buf, buf.flatbuffers_indirect(0) }
def GetRootAsMonster(buf:string):
return
Monster { buf, buf.flatbuffers_indirect(0) }
def MonsterStart(b_:flatbuffers_builder):
def MonsterStart(b_:flatbuffers_builder):
b_.StartObject(48)
b_.StartObject(48)
...
@@ -349,7 +348,7 @@ def MonsterStartInventoryVector(b_:flatbuffers_builder, n_:int):
...
@@ -349,7 +348,7 @@ def MonsterStartInventoryVector(b_:flatbuffers_builder, n_:int):
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_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddColor(b_:flatbuffers_builder, color:int):
def MonsterAddColor(b_:flatbuffers_builder, color:int):
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:int):
...
@@ -367,7 +366,7 @@ def MonsterStartTestarrayofstringVector(b_:flatbuffers_builder, n_:int):
...
@@ -367,7 +366,7 @@ def MonsterStartTestarrayofstringVector(b_:flatbuffers_builder, n_:int):
def MonsterCreateTestarrayofstringVector(b_:flatbuffers_builder, v_:[int]):
def MonsterCreateTestarrayofstringVector(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_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddTestarrayoftables(b_:flatbuffers_builder, testarrayoftables:int):
def MonsterAddTestarrayoftables(b_:flatbuffers_builder, testarrayoftables:int):
b_.PrependUOffsetTRelativeSlot(11, testarrayoftables, 0)
b_.PrependUOffsetTRelativeSlot(11, testarrayoftables, 0)
def MonsterStartTestarrayoftablesVector(b_:flatbuffers_builder, n_:int):
def MonsterStartTestarrayoftablesVector(b_:flatbuffers_builder, n_:int):
...
@@ -375,7 +374,7 @@ def MonsterStartTestarrayoftablesVector(b_:flatbuffers_builder, n_:int):
...
@@ -375,7 +374,7 @@ def MonsterStartTestarrayoftablesVector(b_:flatbuffers_builder, n_:int):
def MonsterCreateTestarrayoftablesVector(b_:flatbuffers_builder, v_:[int]):
def MonsterCreateTestarrayoftablesVector(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_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddEnemy(b_:flatbuffers_builder, enemy:int):
def MonsterAddEnemy(b_:flatbuffers_builder, enemy:int):
b_.PrependUOffsetTRelativeSlot(12, enemy, 0)
b_.PrependUOffsetTRelativeSlot(12, enemy, 0)
def MonsterAddTestnestedflatbuffer(b_:flatbuffers_builder, testnestedflatbuffer:int):
def MonsterAddTestnestedflatbuffer(b_:flatbuffers_builder, testnestedflatbuffer:int):
...
@@ -385,7 +384,7 @@ def MonsterStartTestnestedflatbufferVector(b_:flatbuffers_builder, n_:int):
...
@@ -385,7 +384,7 @@ def MonsterStartTestnestedflatbufferVector(b_:flatbuffers_builder, n_:int):
def MonsterCreateTestnestedflatbufferVector(b_:flatbuffers_builder, v_:[int]):
def MonsterCreateTestnestedflatbufferVector(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_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddTestempty(b_:flatbuffers_builder, testempty:int):
def MonsterAddTestempty(b_:flatbuffers_builder, testempty:int):
b_.PrependUOffsetTRelativeSlot(14, testempty, 0)
b_.PrependUOffsetTRelativeSlot(14, testempty, 0)
def MonsterAddTestbool(b_:flatbuffers_builder, testbool:int):
def MonsterAddTestbool(b_:flatbuffers_builder, testbool:int):
...
@@ -413,7 +412,7 @@ def MonsterStartTestarrayofboolsVector(b_:flatbuffers_builder, n_:int):
...
@@ -413,7 +412,7 @@ def MonsterStartTestarrayofboolsVector(b_:flatbuffers_builder, n_:int):
def MonsterCreateTestarrayofboolsVector(b_:flatbuffers_builder, v_:[int]):
def MonsterCreateTestarrayofboolsVector(b_:flatbuffers_builder, v_:[int]):
b_.StartVector(1, v_.length, 1)
b_.StartVector(1, v_.length, 1)
reverse(v_) e_: b_.PrependBool(e_)
reverse(v_) e_: b_.PrependBool(e_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddTestf(b_:flatbuffers_builder, testf:float):
def MonsterAddTestf(b_:flatbuffers_builder, testf:float):
b_.PrependFloat32Slot(25, testf, 3.14159)
b_.PrependFloat32Slot(25, testf, 3.14159)
def MonsterAddTestf2(b_:flatbuffers_builder, testf2:float):
def MonsterAddTestf2(b_:flatbuffers_builder, testf2:float):
...
@@ -427,7 +426,7 @@ def MonsterStartTestarrayofstring2Vector(b_:flatbuffers_builder, n_:int):
...
@@ -427,7 +426,7 @@ def MonsterStartTestarrayofstring2Vector(b_:flatbuffers_builder, n_:int):
def MonsterCreateTestarrayofstring2Vector(b_:flatbuffers_builder, v_:[int]):
def MonsterCreateTestarrayofstring2Vector(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_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddTestarrayofsortedstruct(b_:flatbuffers_builder, testarrayofsortedstruct:int):
def MonsterAddTestarrayofsortedstruct(b_:flatbuffers_builder, testarrayofsortedstruct:int):
b_.PrependUOffsetTRelativeSlot(29, testarrayofsortedstruct, 0)
b_.PrependUOffsetTRelativeSlot(29, testarrayofsortedstruct, 0)
def MonsterStartTestarrayofsortedstructVector(b_:flatbuffers_builder, n_:int):
def MonsterStartTestarrayofsortedstructVector(b_:flatbuffers_builder, n_:int):
...
@@ -439,7 +438,7 @@ def MonsterStartFlexVector(b_:flatbuffers_builder, n_:int):
...
@@ -439,7 +438,7 @@ def MonsterStartFlexVector(b_:flatbuffers_builder, n_:int):
def MonsterCreateFlexVector(b_:flatbuffers_builder, v_:[int]):
def MonsterCreateFlexVector(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_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddTest5(b_:flatbuffers_builder, test5:int):
def MonsterAddTest5(b_:flatbuffers_builder, test5:int):
b_.PrependUOffsetTRelativeSlot(31, test5, 0)
b_.PrependUOffsetTRelativeSlot(31, test5, 0)
def MonsterStartTest5Vector(b_:flatbuffers_builder, n_:int):
def MonsterStartTest5Vector(b_:flatbuffers_builder, n_:int):
...
@@ -451,7 +450,7 @@ def MonsterStartVectorOfLongsVector(b_:flatbuffers_builder, n_:int):
...
@@ -451,7 +450,7 @@ def MonsterStartVectorOfLongsVector(b_:flatbuffers_builder, n_:int):
def MonsterCreateVectorOfLongsVector(b_:flatbuffers_builder, v_:[int]):
def MonsterCreateVectorOfLongsVector(b_:flatbuffers_builder, v_:[int]):
b_.StartVector(8, v_.length, 8)
b_.StartVector(8, v_.length, 8)
reverse(v_) e_: b_.PrependInt64(e_)
reverse(v_) e_: b_.PrependInt64(e_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddVectorOfDoubles(b_:flatbuffers_builder, vector_of_doubles:int):
def MonsterAddVectorOfDoubles(b_:flatbuffers_builder, vector_of_doubles:int):
b_.PrependUOffsetTRelativeSlot(33, vector_of_doubles, 0)
b_.PrependUOffsetTRelativeSlot(33, vector_of_doubles, 0)
def MonsterStartVectorOfDoublesVector(b_:flatbuffers_builder, n_:int):
def MonsterStartVectorOfDoublesVector(b_:flatbuffers_builder, n_:int):
...
@@ -459,7 +458,7 @@ def MonsterStartVectorOfDoublesVector(b_:flatbuffers_builder, n_:int):
...
@@ -459,7 +458,7 @@ def MonsterStartVectorOfDoublesVector(b_:flatbuffers_builder, n_:int):
def MonsterCreateVectorOfDoublesVector(b_:flatbuffers_builder, v_:[float]):
def MonsterCreateVectorOfDoublesVector(b_:flatbuffers_builder, v_:[float]):
b_.StartVector(8, v_.length, 8)
b_.StartVector(8, v_.length, 8)
reverse(v_) e_: b_.PrependFloat64(e_)
reverse(v_) e_: b_.PrependFloat64(e_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddParentNamespaceTest(b_:flatbuffers_builder, parent_namespace_test:int):
def MonsterAddParentNamespaceTest(b_:flatbuffers_builder, parent_namespace_test:int):
b_.PrependUOffsetTRelativeSlot(34, parent_namespace_test, 0)
b_.PrependUOffsetTRelativeSlot(34, parent_namespace_test, 0)
def MonsterAddVectorOfReferrables(b_:flatbuffers_builder, vector_of_referrables:int):
def MonsterAddVectorOfReferrables(b_:flatbuffers_builder, vector_of_referrables:int):
...
@@ -469,7 +468,7 @@ def MonsterStartVectorOfReferrablesVector(b_:flatbuffers_builder, n_:int):
...
@@ -469,7 +468,7 @@ def MonsterStartVectorOfReferrablesVector(b_:flatbuffers_builder, n_:int):
def MonsterCreateVectorOfReferrablesVector(b_:flatbuffers_builder, v_:[int]):
def MonsterCreateVectorOfReferrablesVector(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_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddSingleWeakReference(b_:flatbuffers_builder, single_weak_reference:int):
def MonsterAddSingleWeakReference(b_:flatbuffers_builder, single_weak_reference:int):
b_.PrependUint64Slot(36, single_weak_reference, 0)
b_.PrependUint64Slot(36, single_weak_reference, 0)
def MonsterAddVectorOfWeakReferences(b_:flatbuffers_builder, vector_of_weak_references:int):
def MonsterAddVectorOfWeakReferences(b_:flatbuffers_builder, vector_of_weak_references:int):
...
@@ -479,7 +478,7 @@ def MonsterStartVectorOfWeakReferencesVector(b_:flatbuffers_builder, n_:int):
...
@@ -479,7 +478,7 @@ def MonsterStartVectorOfWeakReferencesVector(b_:flatbuffers_builder, n_:int):
def MonsterCreateVectorOfWeakReferencesVector(b_:flatbuffers_builder, v_:[int]):
def MonsterCreateVectorOfWeakReferencesVector(b_:flatbuffers_builder, v_:[int]):
b_.StartVector(8, v_.length, 8)
b_.StartVector(8, v_.length, 8)
reverse(v_) e_: b_.PrependUint64(e_)
reverse(v_) e_: b_.PrependUint64(e_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddVectorOfStrongReferrables(b_:flatbuffers_builder, vector_of_strong_referrables:int):
def MonsterAddVectorOfStrongReferrables(b_:flatbuffers_builder, vector_of_strong_referrables:int):
b_.PrependUOffsetTRelativeSlot(38, vector_of_strong_referrables, 0)
b_.PrependUOffsetTRelativeSlot(38, vector_of_strong_referrables, 0)
def MonsterStartVectorOfStrongReferrablesVector(b_:flatbuffers_builder, n_:int):
def MonsterStartVectorOfStrongReferrablesVector(b_:flatbuffers_builder, n_:int):
...
@@ -487,7 +486,7 @@ def MonsterStartVectorOfStrongReferrablesVector(b_:flatbuffers_builder, n_:int):
...
@@ -487,7 +486,7 @@ def MonsterStartVectorOfStrongReferrablesVector(b_:flatbuffers_builder, n_:int):
def MonsterCreateVectorOfStrongReferrablesVector(b_:flatbuffers_builder, v_:[int]):
def MonsterCreateVectorOfStrongReferrablesVector(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_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddCoOwningReference(b_:flatbuffers_builder, co_owning_reference:int):
def MonsterAddCoOwningReference(b_:flatbuffers_builder, co_owning_reference:int):
b_.PrependUint64Slot(39, co_owning_reference, 0)
b_.PrependUint64Slot(39, co_owning_reference, 0)
def MonsterAddVectorOfCoOwningReferences(b_:flatbuffers_builder, vector_of_co_owning_references:int):
def MonsterAddVectorOfCoOwningReferences(b_:flatbuffers_builder, vector_of_co_owning_references:int):
...
@@ -497,7 +496,7 @@ def MonsterStartVectorOfCoOwningReferencesVector(b_:flatbuffers_builder, n_:int)
...
@@ -497,7 +496,7 @@ def MonsterStartVectorOfCoOwningReferencesVector(b_:flatbuffers_builder, n_:int)
def MonsterCreateVectorOfCoOwningReferencesVector(b_:flatbuffers_builder, v_:[int]):
def MonsterCreateVectorOfCoOwningReferencesVector(b_:flatbuffers_builder, v_:[int]):
b_.StartVector(8, v_.length, 8)
b_.StartVector(8, v_.length, 8)
reverse(v_) e_: b_.PrependUint64(e_)
reverse(v_) e_: b_.PrependUint64(e_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddNonOwningReference(b_:flatbuffers_builder, non_owning_reference:int):
def MonsterAddNonOwningReference(b_:flatbuffers_builder, non_owning_reference:int):
b_.PrependUint64Slot(41, non_owning_reference, 0)
b_.PrependUint64Slot(41, non_owning_reference, 0)
def MonsterAddVectorOfNonOwningReferences(b_:flatbuffers_builder, vector_of_non_owning_references:int):
def MonsterAddVectorOfNonOwningReferences(b_:flatbuffers_builder, vector_of_non_owning_references:int):
...
@@ -507,7 +506,7 @@ def MonsterStartVectorOfNonOwningReferencesVector(b_:flatbuffers_builder, n_:int
...
@@ -507,7 +506,7 @@ def MonsterStartVectorOfNonOwningReferencesVector(b_:flatbuffers_builder, n_:int
def MonsterCreateVectorOfNonOwningReferencesVector(b_:flatbuffers_builder, v_:[int]):
def MonsterCreateVectorOfNonOwningReferencesVector(b_:flatbuffers_builder, v_:[int]):
b_.StartVector(8, v_.length, 8)
b_.StartVector(8, v_.length, 8)
reverse(v_) e_: b_.PrependUint64(e_)
reverse(v_) e_: b_.PrependUint64(e_)
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:int):
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):
...
@@ -523,41 +522,41 @@ def MonsterStartVectorOfEnumsVector(b_:flatbuffers_builder, n_:int):
...
@@ -523,41 +522,41 @@ def MonsterStartVectorOfEnumsVector(b_:flatbuffers_builder, n_:int):
def MonsterCreateVectorOfEnumsVector(b_:flatbuffers_builder, v_:[int]):
def MonsterCreateVectorOfEnumsVector(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_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterEnd(b_:flatbuffers_builder):
def MonsterEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
struct
TypeAliases : flatbuffers_handle
class
TypeAliases : flatbuffers_handle
def i8():
def i8():
buf_.flatbuffers_field_int8(pos_, 4, 0)
return
buf_.flatbuffers_field_int8(pos_, 4, 0)
def u8():
def u8():
buf_.flatbuffers_field_int8(pos_, 6, 0)
return
buf_.flatbuffers_field_int8(pos_, 6, 0)
def i16():
def i16():
buf_.flatbuffers_field_int16(pos_, 8, 0)
return
buf_.flatbuffers_field_int16(pos_, 8, 0)
def u16():
def u16():
buf_.flatbuffers_field_int16(pos_, 10, 0)
return
buf_.flatbuffers_field_int16(pos_, 10, 0)
def i32():
def i32():
buf_.flatbuffers_field_int32(pos_, 12, 0)
return
buf_.flatbuffers_field_int32(pos_, 12, 0)
def u32():
def u32():
buf_.flatbuffers_field_int32(pos_, 14, 0)
return
buf_.flatbuffers_field_int32(pos_, 14, 0)
def i64():
def i64():
buf_.flatbuffers_field_int64(pos_, 16, 0)
return
buf_.flatbuffers_field_int64(pos_, 16, 0)
def u64():
def u64():
buf_.flatbuffers_field_int64(pos_, 18, 0)
return
buf_.flatbuffers_field_int64(pos_, 18, 0)
def f32():
def f32():
buf_.flatbuffers_field_float32(pos_, 20, 0.0)
return
buf_.flatbuffers_field_float32(pos_, 20, 0.0)
def f64():
def f64():
buf_.flatbuffers_field_float64(pos_, 22, 0.0)
return
buf_.flatbuffers_field_float64(pos_, 22, 0.0)
def v8(i:int):
def v8(i:int):
buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 24) + i * 1)
return
buf_.read_int8_le(buf_.flatbuffers_field_vector(pos_, 24) + i * 1)
def v8_length():
def v8_length():
buf_.flatbuffers_field_vector_len(pos_, 24)
return
buf_.flatbuffers_field_vector_len(pos_, 24)
def vf64(i:int):
def vf64(i:int):
buf_.read_float64_le(buf_.flatbuffers_field_vector(pos_, 26) + i * 8)
return
buf_.read_float64_le(buf_.flatbuffers_field_vector(pos_, 26) + i * 8)
def vf64_length():
def vf64_length():
buf_.flatbuffers_field_vector_len(pos_, 26)
return
buf_.flatbuffers_field_vector_len(pos_, 26)
def GetRootAsTypeAliases(buf:string): TypeAliases { buf, buf.flatbuffers_indirect(0) }
def GetRootAsTypeAliases(buf:string):
return
TypeAliases { buf, buf.flatbuffers_indirect(0) }
def TypeAliasesStart(b_:flatbuffers_builder):
def TypeAliasesStart(b_:flatbuffers_builder):
b_.StartObject(12)
b_.StartObject(12)
...
@@ -588,7 +587,7 @@ def TypeAliasesStartV8Vector(b_:flatbuffers_builder, n_:int):
...
@@ -588,7 +587,7 @@ def TypeAliasesStartV8Vector(b_:flatbuffers_builder, n_:int):
def TypeAliasesCreateV8Vector(b_:flatbuffers_builder, v_:[int]):
def TypeAliasesCreateV8Vector(b_:flatbuffers_builder, v_:[int]):
b_.StartVector(1, v_.length, 1)
b_.StartVector(1, v_.length, 1)
reverse(v_) e_: b_.PrependInt8(e_)
reverse(v_) e_: b_.PrependInt8(e_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def TypeAliasesAddVf64(b_:flatbuffers_builder, vf64:int):
def TypeAliasesAddVf64(b_:flatbuffers_builder, vf64:int):
b_.PrependUOffsetTRelativeSlot(11, vf64, 0)
b_.PrependUOffsetTRelativeSlot(11, vf64, 0)
def TypeAliasesStartVf64Vector(b_:flatbuffers_builder, n_:int):
def TypeAliasesStartVf64Vector(b_:flatbuffers_builder, n_:int):
...
@@ -596,7 +595,7 @@ def TypeAliasesStartVf64Vector(b_:flatbuffers_builder, n_:int):
...
@@ -596,7 +595,7 @@ def TypeAliasesStartVf64Vector(b_:flatbuffers_builder, n_:int):
def TypeAliasesCreateVf64Vector(b_:flatbuffers_builder, v_:[float]):
def TypeAliasesCreateVf64Vector(b_:flatbuffers_builder, v_:[float]):
b_.StartVector(8, v_.length, 8)
b_.StartVector(8, v_.length, 8)
reverse(v_) e_: b_.PrependFloat64(e_)
reverse(v_) e_: b_.PrependFloat64(e_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def TypeAliasesEnd(b_:flatbuffers_builder):
def TypeAliasesEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
tests/namespace_test/namespace_test1_generated.lobster
View file @
30ac512a
// automatically generated by the FlatBuffers compiler, do not modify
// automatically generated by the FlatBuffers compiler, do not modify
import flatbuffers
include "flatbuffers.lobster"
namespace NamespaceA_NamespaceB
namespace NamespaceA_NamespaceB
enum
+
enum
EnumInNestedNS:
EnumInNestedNS_A = 0
,
EnumInNestedNS_A = 0
EnumInNestedNS_B = 1
,
EnumInNestedNS_B = 1
EnumInNestedNS_C = 2
EnumInNestedNS_C = 2
struct
TableInNestedNS
class
TableInNestedNS
struct
StructInNestedNS
class
StructInNestedNS
struct
TableInNestedNS : flatbuffers_handle
class
TableInNestedNS : flatbuffers_handle
def foo():
def foo():
buf_.flatbuffers_field_int32(pos_, 4, 0)
return
buf_.flatbuffers_field_int32(pos_, 4, 0)
def GetRootAsTableInNestedNS(buf:string): TableInNestedNS { buf, buf.flatbuffers_indirect(0) }
def GetRootAsTableInNestedNS(buf:string):
return
TableInNestedNS { buf, buf.flatbuffers_indirect(0) }
def TableInNestedNSStart(b_:flatbuffers_builder):
def TableInNestedNSStart(b_:flatbuffers_builder):
b_.StartObject(1)
b_.StartObject(1)
def TableInNestedNSAddFoo(b_:flatbuffers_builder, foo:int):
def TableInNestedNSAddFoo(b_:flatbuffers_builder, foo:int):
b_.PrependInt32Slot(0, foo, 0)
b_.PrependInt32Slot(0, foo, 0)
def TableInNestedNSEnd(b_:flatbuffers_builder):
def TableInNestedNSEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
struct
StructInNestedNS : flatbuffers_handle
class
StructInNestedNS : flatbuffers_handle
def a():
def a():
buf_.read_int32_le(pos_ + 0)
return
buf_.read_int32_le(pos_ + 0)
def b():
def b():
buf_.read_int32_le(pos_ + 4)
return
buf_.read_int32_le(pos_ + 4)
def CreateStructInNestedNS(b_:flatbuffers_builder, a:int, b:int):
def CreateStructInNestedNS(b_:flatbuffers_builder, a:int, b:int):
b_.Prep(4, 8)
b_.Prep(4, 8)
...
...
tests/namespace_test/namespace_test2_generated.lobster
View file @
30ac512a
// automatically generated by the FlatBuffers compiler, do not modify
// automatically generated by the FlatBuffers compiler, do not modify
import flatbuffers
include "flatbuffers.lobster"
namespace NamespaceA
namespace NamespaceA
struct
TableInFirstNS
class
TableInFirstNS
namespace NamespaceC
namespace NamespaceC
struct
TableInC
class
TableInC
namespace NamespaceA
namespace NamespaceA
struct
SecondTableInA
class
SecondTableInA
struct
TableInFirstNS : flatbuffers_handle
class
TableInFirstNS : flatbuffers_handle
def foo_table():
def foo_table():
o :
= buf_.flatbuffers_field_table(pos_, 4)
let o
= buf_.flatbuffers_field_table(pos_, 4)
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():
buf_.flatbuffers_field_int8(pos_, 6, 0)
return
buf_.flatbuffers_field_int8(pos_, 6, 0)
def foo_struct():
def foo_struct():
o :
= buf_.flatbuffers_field_struct(pos_, 8)
let o
= buf_.flatbuffers_field_struct(pos_, 8)
if o: NamespaceA_NamespaceB_StructInNestedNS { buf_, o } else: nil
return
if o: NamespaceA_NamespaceB_StructInNestedNS { buf_, o } else: nil
def GetRootAsTableInFirstNS(buf:string): TableInFirstNS { buf, buf.flatbuffers_indirect(0) }
def GetRootAsTableInFirstNS(buf:string):
return
TableInFirstNS { buf, buf.flatbuffers_indirect(0) }
def TableInFirstNSStart(b_:flatbuffers_builder):
def TableInFirstNSStart(b_:flatbuffers_builder):
b_.StartObject(3)
b_.StartObject(3)
...
@@ -35,19 +34,19 @@ def TableInFirstNSAddFooEnum(b_:flatbuffers_builder, foo_enum:int):
...
@@ -35,19 +34,19 @@ def TableInFirstNSAddFooEnum(b_:flatbuffers_builder, foo_enum:int):
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)
def TableInFirstNSEnd(b_:flatbuffers_builder):
def TableInFirstNSEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
namespace NamespaceC
namespace NamespaceC
struct
TableInC : flatbuffers_handle
class
TableInC : flatbuffers_handle
def refer_to_a1():
def refer_to_a1():
o :
= buf_.flatbuffers_field_table(pos_, 4)
let o
= buf_.flatbuffers_field_table(pos_, 4)
if o: NamespaceA_TableInFirstNS { buf_, o } else: nil
return
if o: NamespaceA_TableInFirstNS { buf_, o } else: nil
def refer_to_a2():
def refer_to_a2():
o :
= buf_.flatbuffers_field_table(pos_, 6)
let o
= buf_.flatbuffers_field_table(pos_, 6)
if o: NamespaceA_SecondTableInA { buf_, o } else: nil
return
if o: NamespaceA_SecondTableInA { buf_, o } else: nil
def GetRootAsTableInC(buf:string): TableInC { buf, buf.flatbuffers_indirect(0) }
def GetRootAsTableInC(buf:string):
return
TableInC { buf, buf.flatbuffers_indirect(0) }
def TableInCStart(b_:flatbuffers_builder):
def TableInCStart(b_:flatbuffers_builder):
b_.StartObject(2)
b_.StartObject(2)
...
@@ -56,21 +55,21 @@ def TableInCAddReferToA1(b_:flatbuffers_builder, refer_to_a1:int):
...
@@ -56,21 +55,21 @@ def TableInCAddReferToA1(b_:flatbuffers_builder, refer_to_a1:int):
def TableInCAddReferToA2(b_:flatbuffers_builder, refer_to_a2:int):
def TableInCAddReferToA2(b_:flatbuffers_builder, refer_to_a2:int):
b_.PrependUOffsetTRelativeSlot(1, refer_to_a2, 0)
b_.PrependUOffsetTRelativeSlot(1, refer_to_a2, 0)
def TableInCEnd(b_:flatbuffers_builder):
def TableInCEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
namespace NamespaceA
namespace NamespaceA
struct
SecondTableInA : flatbuffers_handle
class
SecondTableInA : flatbuffers_handle
def refer_to_c():
def refer_to_c():
o :
= buf_.flatbuffers_field_table(pos_, 4)
let o
= buf_.flatbuffers_field_table(pos_, 4)
if o: NamespaceC_TableInC { buf_, o } else: nil
return
if o: NamespaceC_TableInC { buf_, o } else: nil
def GetRootAsSecondTableInA(buf:string): SecondTableInA { buf, buf.flatbuffers_indirect(0) }
def GetRootAsSecondTableInA(buf:string):
return
SecondTableInA { buf, buf.flatbuffers_indirect(0) }
def SecondTableInAStart(b_:flatbuffers_builder):
def SecondTableInAStart(b_:flatbuffers_builder):
b_.StartObject(1)
b_.StartObject(1)
def SecondTableInAAddReferToC(b_:flatbuffers_builder, refer_to_c:int):
def SecondTableInAAddReferToC(b_:flatbuffers_builder, refer_to_c:int):
b_.PrependUOffsetTRelativeSlot(0, refer_to_c, 0)
b_.PrependUOffsetTRelativeSlot(0, refer_to_c, 0)
def SecondTableInAEnd(b_:flatbuffers_builder):
def SecondTableInAEnd(b_:flatbuffers_builder):
b_.EndObject()
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