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
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
137 additions
and
139 deletions
+137
-139
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
+0
-0
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 @@
// See the License for the specific language governing permissions and
// limitations under the License.
i
nclude "std.lobster"
i
mport std
namespace flatbuffers
struct
handle:
class
handle:
buf_:string
pos_:int
enum + sz_8 = 1,
sz_16 = 2,
sz_32 = 4,
sz_64 = 8,
sz_voffset = 2,
sz_uoffset = 4,
sz_soffset = 4,
enum sizeof:
sz_8 = 1
sz_16 = 2
sz_32 = 4
sz_64 = 8
sz_voffset = 2
sz_uoffset = 4
sz_soffset = 4
sz_metadata_fields = 2
struct
builder:
buf
:string
= "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
class
builder:
buf = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
current_vtable:[int] = []
head
:int
= 0
minalign
:int
= 1
object_end
:int
= 0
head = 0
minalign = 1
object_end = 0
vtables:[int] = []
nested
:int
= false
finished
:int
= false
nested = false
finished = false
// Optionally call this right after creating the builder for a larger initial buffer.
def Initial(initial_size:int):
...
...
@@ -75,11 +76,11 @@ struct builder:
// Prepend a zero scalar to the object. Later in this function we'll
// write an offset here that points to the object's vtable:
PrependInt32(0)
object_offset :
= head
let object_offset
= head
// 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:
o :
= current_vtable.pop()
let o
= current_vtable.pop()
PrependVOffsetT(if o: object_offset - o else: 0)
// The two metadata fields are written last.
// First, store the object bytesize:
...
...
@@ -91,17 +92,18 @@ struct builder:
// BenchmarkVtableDeduplication for a case in which this heuristic
// saves about 30% of the time used in writing objects with duplicate
// tables.
existing_vtable := do
():
def find_existing_table
():
reverse(vtables) vt2_offset:
// Find the other vtable:
vt2_start :
= buf.length - vt2_offset
vt2_len :
= buf.read_int16_le(vt2_start)
let vt2_start
= buf.length - vt2_offset
let vt2_len
= buf.read_int16_le(vt2_start)
// Compare the other vtable to the one under consideration.
// If they are equal, return the offset:
if vtable_size == vt2_len and
not compare_substring(buf, Start(), buf, vt2_start, vtable_size):
return vt2_offset from do
0
return vt2_offset
return 0
let existing_vtable = find_existing_table()
if existing_vtable:
// Found a duplicate vtable, remove the one we wrote.
head = object_offset
...
...
@@ -119,7 +121,8 @@ struct builder:
return object_offset
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):
// Track the biggest thing we've ever aligned to.
...
...
@@ -127,7 +130,7 @@ struct builder:
minalign = size
// Find the amount of alignment needed such that `size` is properly
// aligned after `additionalBytes`:
align_size :
= ((~(head + additional_bytes)) + 1) & (size - 1)
let align_size
= ((~(head + additional_bytes)) + 1) & (size - 1)
Pad(align_size)
def PrependUOffsetTRelative(off):
...
...
@@ -172,7 +175,7 @@ struct builder:
// Finish finalizes a buffer, pointing to the given root_table
assert not finished
assert not nested
prep_size :
= sz_32
var prep_size
= sz_32
if size_prefix:
prep_size += sz_32
Prep(minalign, prep_size)
...
...
samples/monster_generated.lobster
View file @
30ac512a
// automatically generated by the FlatBuffers compiler, do not modify
include "flatbuffers.lobster"
import flatbuffers
namespace MyGame_Sample
enum
+
Color_Red = 0
,
Color_Green = 1
,
enum
Color:
Color_Red = 0
Color_Green = 1
Color_Blue = 2
enum
+
Equipment_NONE = 0
,
enum
Equipment:
Equipment_NONE = 0
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():
buf_.read_float32_le(pos_ + 0)
return
buf_.read_float32_le(pos_ + 0)
def y():
buf_.read_float32_le(pos_ + 4)
return
buf_.read_float32_le(pos_ + 4)
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):
b_.Prep(4, 12)
...
...
@@ -34,36 +33,36 @@ def CreateVec3(b_:flatbuffers_builder, x:float, y:float, z:float):
b_.PrependFloat32(x)
return b_.Offset()
struct
Monster : flatbuffers_handle
class
Monster : flatbuffers_handle
def pos():
o :
= buf_.flatbuffers_field_struct(pos_, 4)
if o: MyGame_Sample_Vec3 { buf_, o } else: nil
let o
= buf_.flatbuffers_field_struct(pos_, 4)
return
if o: MyGame_Sample_Vec3 { buf_, o } else: nil
def mana():
buf_.flatbuffers_field_int16(pos_, 6, 150)
return
buf_.flatbuffers_field_int16(pos_, 6, 150)
def hp():
buf_.flatbuffers_field_int16(pos_, 8, 100)
return
buf_.flatbuffers_field_int16(pos_, 8, 100)
def name():
buf_.flatbuffers_field_string(pos_, 10)
return
buf_.flatbuffers_field_string(pos_, 10)
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():
buf_.flatbuffers_field_vector_len(pos_, 14)
return
buf_.flatbuffers_field_vector_len(pos_, 14)
def color():
buf_.flatbuffers_field_int8(pos_, 16, 2)
return
buf_.flatbuffers_field_int8(pos_, 16, 2)
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():
buf_.flatbuffers_field_vector_len(pos_, 18)
return
buf_.flatbuffers_field_vector_len(pos_, 18)
def equipped_type():
buf_.flatbuffers_field_int8(pos_, 20, 0)
return
buf_.flatbuffers_field_int8(pos_, 20, 0)
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):
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():
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):
b_.StartObject(11)
...
...
@@ -82,7 +81,7 @@ def MonsterStartInventoryVector(b_:flatbuffers_builder, n_:int):
def MonsterCreateInventoryVector(b_:flatbuffers_builder, v_:[int]):
b_.StartVector(1, v_.length, 1)
reverse(v_) e_: b_.PrependUint8(e_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddColor(b_:flatbuffers_builder, color:int):
b_.PrependInt8Slot(6, color, 2)
def MonsterAddWeapons(b_:flatbuffers_builder, weapons:int):
...
...
@@ -92,7 +91,7 @@ def MonsterStartWeaponsVector(b_:flatbuffers_builder, n_:int):
def MonsterCreateWeaponsVector(b_:flatbuffers_builder, v_:[int]):
b_.StartVector(4, v_.length, 4)
reverse(v_) e_: b_.PrependUOffsetTRelative(e_)
b_.EndVector(v_.length)
return
b_.EndVector(v_.length)
def MonsterAddEquippedType(b_:flatbuffers_builder, equipped_type:int):
b_.PrependUint8Slot(8, equipped_type, 0)
def MonsterAddEquipped(b_:flatbuffers_builder, equipped:int):
...
...
@@ -102,15 +101,15 @@ def MonsterAddPath(b_:flatbuffers_builder, path:int):
def MonsterStartPathVector(b_:flatbuffers_builder, n_:int):
b_.StartVector(12, n_, 4)
def MonsterEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
struct
Weapon : flatbuffers_handle
class
Weapon : flatbuffers_handle
def name():
buf_.flatbuffers_field_string(pos_, 4)
return
buf_.flatbuffers_field_string(pos_, 4)
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):
b_.StartObject(2)
...
...
@@ -119,5 +118,5 @@ def WeaponAddName(b_:flatbuffers_builder, name:int):
def WeaponAddDamage(b_:flatbuffers_builder, damage:int):
b_.PrependInt16Slot(1, damage, 0)
def WeaponEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
samples/sample_binary.lobster
View file @
30ac512a
...
...
@@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
i
nclude
from "../lobster/"
i
nclude "monster_generated.lobster"
i
mport
from "../lobster/"
i
mport monster_generated
// Example of how to use FlatBuffers to create and read binary buffers.
...
...
@@ -24,7 +24,7 @@ let b = flatbuffers_builder {}
let weapon_names = [ "Sword", "Axe" ]
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)
b.MyGame_Sample_WeaponStart()
b.MyGame_Sample_WeaponAddName(ns)
...
...
samples/sample_text.lobster
View file @
30ac512a
...
...
@@ -12,20 +12,20 @@
// See the License for the specific language governing permissions and
// limitations under the License.
i
nclude
from "../lobster/"
i
nclude "monster_generated.lobster"
i
mport
from "../lobster/"
i
mport monster_generated
// Example how to interop with JSON.
// Test loading some JSON, converting it to a binary FlatBuffer and back again.
// First read the schema and JSON data.
schema :
= read_file("monster.fbs", true)
json :
= read_file("monsterdata.json", true)
let schema
= read_file("monster.fbs", true)
let json
= read_file("monsterdata.json", true)
assert schema and json
// Parse JSON to binary:
fb, err1 :
= flatbuffers_json_to_binary(schema, json, [])
let fb, err1
= flatbuffers_json_to_binary(schema, json, [])
assert not err1
// Access one field in it, just to check:
...
...
@@ -33,7 +33,7 @@ let monster = MyGame_Sample_GetRootAsMonster(fb)
assert monster.name == "Orc"
// 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
// 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 {
const
std
::
string
&
file_name
)
:
BaseGenerator
(
parser
,
path
,
file_name
,
""
/* not used */
,
"_"
)
{
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"
,
"coroutine"
,
"resource"
,
"enum"
,
"typeof"
,
"var"
,
"let"
,
"pakfile"
,
"switch"
,
"case"
,
"default"
,
"namespace"
,
"not"
,
"and"
,
"or"
,
"bool"
,
...
...
@@ -99,11 +99,11 @@ class LobsterGenerator : public BaseGenerator {
auto
def
=
" def "
+
NormalizedName
(
field
);
if
(
IsScalar
(
field
.
value
.
type
.
base_type
))
{
if
(
struct_def
.
fixed
)
{
code
+=
def
+
"():
\n
buf_.read_"
+
code
+=
def
+
"():
\n
return
buf_.read_"
+
GenTypeName
(
field
.
value
.
type
)
+
"_le(pos_ + "
+
offsets
+
")
\n
"
;
}
else
{
code
+=
def
+
"():
\n
buf_.flatbuffers_field_"
+
code
+=
def
+
"():
\n
return
buf_.flatbuffers_field_"
+
GenTypeName
(
field
.
value
.
type
)
+
"(pos_, "
+
offsets
+
", "
+
field
.
value
.
constant
+
")
\n
"
;
}
...
...
@@ -114,22 +114,22 @@ class LobsterGenerator : public BaseGenerator {
auto
name
=
NamespacedName
(
*
field
.
value
.
type
.
struct_def
);
code
+=
def
+
"():
\n
"
;
if
(
struct_def
.
fixed
)
{
code
+=
name
+
"{ buf_, pos_ + "
+
offsets
+
" }
\n
"
;
code
+=
"return "
+
name
+
"{ buf_, pos_ + "
+
offsets
+
" }
\n
"
;
}
else
{
code
+=
std
::
string
(
"
o :
= buf_.flatbuffers_field_"
)
+
code
+=
std
::
string
(
"
let o
= buf_.flatbuffers_field_"
)
+
(
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
"
;
}
break
;
}
case
BASE_TYPE_STRING
:
code
+=
def
+
"():
\n
buf_.flatbuffers_field_string(pos_, "
+
code
+=
def
+
"():
\n
return
buf_.flatbuffers_field_string(pos_, "
+
offsets
+
")
\n
"
;
break
;
case
BASE_TYPE_VECTOR
:
{
auto
vectortype
=
field
.
value
.
type
.
VectorType
();
code
+=
def
+
"(i:int):
\n
"
;
code
+=
def
+
"(i:int):
\n
return
"
;
if
(
vectortype
.
base_type
==
BASE_TYPE_STRUCT
)
{
auto
start
=
"buf_.flatbuffers_field_vector(pos_, "
+
offsets
+
") + i * "
+
NumToString
(
InlineSize
(
vectortype
));
...
...
@@ -153,7 +153,7 @@ class LobsterGenerator : public BaseGenerator {
it
!=
field
.
value
.
type
.
enum_def
->
Vals
().
end
();
++
it
)
{
auto
&
ev
=
**
it
;
if
(
ev
.
IsNonZero
())
{
code
+=
def
+
"_as_"
+
ev
.
name
+
"():
\n
"
+
code
+=
def
+
"_as_"
+
ev
.
name
+
"():
\n
return
"
+
NamespacedName
(
*
ev
.
union_type
.
struct_def
)
+
" { buf_, buf_.flatbuffers_field_table(pos_, "
+
offsets
+
") }
\n
"
;
...
...
@@ -165,7 +165,7 @@ class LobsterGenerator : public BaseGenerator {
}
if
(
field
.
value
.
type
.
base_type
==
BASE_TYPE_VECTOR
)
{
code
+=
def
+
"_length():
\n
buf_.flatbuffers_field_vector_len(pos_, "
+
"_length():
\n
return
buf_.flatbuffers_field_vector_len(pos_, "
+
offsets
+
")
\n
"
;
}
}
...
...
@@ -207,19 +207,19 @@ class LobsterGenerator : public BaseGenerator {
NumToString
(
alignment
)
+
")
\n
reverse(v_) e_: b_.Prepend"
+
GenMethod
(
vector_type
)
+
"(e_)
\n
b_.EndVector(v_.length)
\n
"
;
"(e_)
\n
return
b_.EndVector(v_.length)
\n
"
;
}
}
}
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
)
{
if
(
struct_def
.
generated
)
return
;
std
::
string
&
code
=
*
code_ptr
;
CheckNameSpace
(
struct_def
,
&
code
);
code
+=
"
struct
"
+
NormalizedName
(
struct_def
)
+
"
\n\n
"
;
code
+=
"
class
"
+
NormalizedName
(
struct_def
)
+
"
\n\n
"
;
}
// Generate struct or table methods.
...
...
@@ -228,7 +228,7 @@ class LobsterGenerator : public BaseGenerator {
std
::
string
&
code
=
*
code_ptr
;
CheckNameSpace
(
struct_def
,
&
code
);
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
();
it
!=
struct_def
.
fields
.
vec
.
end
();
++
it
)
{
auto
&
field
=
**
it
;
...
...
@@ -239,7 +239,7 @@ class LobsterGenerator : public BaseGenerator {
if
(
!
struct_def
.
fixed
)
{
// Generate a special accessor for the table that has been declared as
// the root type.
code
+=
"def GetRootAs"
+
NormalizedName
(
struct_def
)
+
"(buf:string): "
+
code
+=
"def GetRootAs"
+
NormalizedName
(
struct_def
)
+
"(buf:string):
return
"
+
NormalizedName
(
struct_def
)
+
" { buf, buf.flatbuffers_indirect(0) }
\n\n
"
;
}
...
...
@@ -258,14 +258,12 @@ class LobsterGenerator : public BaseGenerator {
std
::
string
&
code
=
*
code_ptr
;
CheckNameSpace
(
enum_def
,
&
code
);
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
)
{
auto
&
ev
=
**
it
;
GenComment
(
ev
.
doc_comment
,
code_ptr
,
nullptr
,
" "
);
code
+=
" "
+
enum_def
.
name
+
"_"
+
NormalizedName
(
ev
)
+
" = "
+
enum_def
.
ToString
(
ev
);
if
(
it
+
1
!=
enum_def
.
Vals
().
end
())
code
+=
","
;
code
+=
"
\n
"
;
enum_def
.
ToString
(
ev
)
+
"
\n
"
;
}
code
+=
"
\n
"
;
}
...
...
@@ -336,7 +334,7 @@ class LobsterGenerator : public BaseGenerator {
bool
generate
()
{
std
::
string
code
;
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
();
++
it
)
{
auto
&
enum_def
=
**
it
;
...
...
tests/lobstertest.lobster
View file @
30ac512a
...
...
@@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
i
nclude
from "../lobster/"
i
nclude "monster_test_generated.lobster"
i
mport
from "../lobster/"
i
mport monster_test_generated
def check_read_buffer(buf):
// CheckReadBuffer checks that the given buffer is evaluated correctly as the example Monster.
...
...
@@ -119,14 +119,14 @@ check_read_buffer(fb1)
write_file("monsterdata_lobster_wire.mon", fb1)
// 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
includedirs :
= [ "include_test" ]
let includedirs
= [ "include_test" ]
// 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
// 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
// Check the resulting binary again (full roundtrip test):
check_read_buffer(fb3)
...
...
tests/monster_test_generated.lobster
View file @
30ac512a
This diff is collapsed.
Click to expand it.
tests/namespace_test/namespace_test1_generated.lobster
View file @
30ac512a
// automatically generated by the FlatBuffers compiler, do not modify
include "flatbuffers.lobster"
import flatbuffers
namespace NamespaceA_NamespaceB
enum
+
EnumInNestedNS_A = 0
,
EnumInNestedNS_B = 1
,
enum
EnumInNestedNS:
EnumInNestedNS_A = 0
EnumInNestedNS_B = 1
EnumInNestedNS_C = 2
struct
TableInNestedNS
class
TableInNestedNS
struct
StructInNestedNS
class
StructInNestedNS
struct
TableInNestedNS : flatbuffers_handle
class
TableInNestedNS : flatbuffers_handle
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):
b_.StartObject(1)
def TableInNestedNSAddFoo(b_:flatbuffers_builder, foo:int):
b_.PrependInt32Slot(0, foo, 0)
def TableInNestedNSEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
struct
StructInNestedNS : flatbuffers_handle
class
StructInNestedNS : flatbuffers_handle
def a():
buf_.read_int32_le(pos_ + 0)
return
buf_.read_int32_le(pos_ + 0)
def b():
buf_.read_int32_le(pos_ + 4)
return
buf_.read_int32_le(pos_ + 4)
def CreateStructInNestedNS(b_:flatbuffers_builder, a:int, b:int):
b_.Prep(4, 8)
...
...
tests/namespace_test/namespace_test2_generated.lobster
View file @
30ac512a
// automatically generated by the FlatBuffers compiler, do not modify
include "flatbuffers.lobster"
import flatbuffers
namespace NamespaceA
struct
TableInFirstNS
class
TableInFirstNS
namespace NamespaceC
struct
TableInC
class
TableInC
namespace NamespaceA
struct
SecondTableInA
class
SecondTableInA
struct
TableInFirstNS : flatbuffers_handle
class
TableInFirstNS : flatbuffers_handle
def foo_table():
o :
= buf_.flatbuffers_field_table(pos_, 4)
if o: NamespaceA_NamespaceB_TableInNestedNS { buf_, o } else: nil
let o
= buf_.flatbuffers_field_table(pos_, 4)
return
if o: NamespaceA_NamespaceB_TableInNestedNS { buf_, o } else: nil
def foo_enum():
buf_.flatbuffers_field_int8(pos_, 6, 0)
return
buf_.flatbuffers_field_int8(pos_, 6, 0)
def foo_struct():
o :
= buf_.flatbuffers_field_struct(pos_, 8)
if o: NamespaceA_NamespaceB_StructInNestedNS { buf_, o } else: nil
let o
= buf_.flatbuffers_field_struct(pos_, 8)
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):
b_.StartObject(3)
...
...
@@ -35,19 +34,19 @@ def TableInFirstNSAddFooEnum(b_:flatbuffers_builder, foo_enum:int):
def TableInFirstNSAddFooStruct(b_:flatbuffers_builder, foo_struct:int):
b_.PrependStructSlot(2, foo_struct, 0)
def TableInFirstNSEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
namespace NamespaceC
struct
TableInC : flatbuffers_handle
class
TableInC : flatbuffers_handle
def refer_to_a1():
o :
= buf_.flatbuffers_field_table(pos_, 4)
if o: NamespaceA_TableInFirstNS { buf_, o } else: nil
let o
= buf_.flatbuffers_field_table(pos_, 4)
return
if o: NamespaceA_TableInFirstNS { buf_, o } else: nil
def refer_to_a2():
o :
= buf_.flatbuffers_field_table(pos_, 6)
if o: NamespaceA_SecondTableInA { buf_, o } else: nil
let o
= buf_.flatbuffers_field_table(pos_, 6)
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):
b_.StartObject(2)
...
...
@@ -56,21 +55,21 @@ def TableInCAddReferToA1(b_:flatbuffers_builder, refer_to_a1:int):
def TableInCAddReferToA2(b_:flatbuffers_builder, refer_to_a2:int):
b_.PrependUOffsetTRelativeSlot(1, refer_to_a2, 0)
def TableInCEnd(b_:flatbuffers_builder):
b_.EndObject()
return
b_.EndObject()
namespace NamespaceA
struct
SecondTableInA : flatbuffers_handle
class
SecondTableInA : flatbuffers_handle
def refer_to_c():
o :
= buf_.flatbuffers_field_table(pos_, 4)
if o: NamespaceC_TableInC { buf_, o } else: nil
let o
= buf_.flatbuffers_field_table(pos_, 4)
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):
b_.StartObject(1)
def SecondTableInAAddReferToC(b_:flatbuffers_builder, refer_to_c:int):
b_.PrependUOffsetTRelativeSlot(0, refer_to_c, 0)
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