mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-02 04:04:19 +00:00
Generate code to encode and decode nested flatbuffers in Python. (#6354)
* Generate code to encode and decode nested flatbuffers in Python. * Delete accidental trailing whitespace. * Fully delete trailing whitespace.
This commit is contained in:
@@ -205,6 +205,14 @@ class Monster(object):
|
||||
return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Uint8Flags, o)
|
||||
return 0
|
||||
|
||||
# Monster
|
||||
def TestnestedflatbufferNestedRoot(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(30))
|
||||
if o != 0:
|
||||
from MyGame.Example.Monster import Monster
|
||||
return Monster.GetRootAsMonster(self._tab.Bytes, self._tab.Vector(o))
|
||||
return 0
|
||||
|
||||
# Monster
|
||||
def TestnestedflatbufferLength(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(30))
|
||||
@@ -734,6 +742,14 @@ class Monster(object):
|
||||
return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Uint8Flags, o)
|
||||
return 0
|
||||
|
||||
# Monster
|
||||
def TestrequirednestedflatbufferNestedRoot(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(102))
|
||||
if o != 0:
|
||||
from MyGame.Example.Monster import Monster
|
||||
return Monster.GetRootAsMonster(self._tab.Bytes, self._tab.Vector(o))
|
||||
return 0
|
||||
|
||||
# Monster
|
||||
def TestrequirednestedflatbufferLength(self):
|
||||
o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(102))
|
||||
@@ -765,6 +781,11 @@ def MonsterStartTestarrayoftablesVector(builder, numElems): return builder.Start
|
||||
def MonsterAddEnemy(builder, enemy): builder.PrependUOffsetTRelativeSlot(12, flatbuffers.number_types.UOffsetTFlags.py_type(enemy), 0)
|
||||
def MonsterAddTestnestedflatbuffer(builder, testnestedflatbuffer): builder.PrependUOffsetTRelativeSlot(13, flatbuffers.number_types.UOffsetTFlags.py_type(testnestedflatbuffer), 0)
|
||||
def MonsterStartTestnestedflatbufferVector(builder, numElems): return builder.StartVector(1, numElems, 1)
|
||||
def MonsterMakeTestnestedflatbufferVectorFromBytes(builder, bytes):
|
||||
builder.StartVector(1, len(bytes), 1)
|
||||
builder.head = builder.head - len(bytes)
|
||||
builder.Bytes[builder.head : builder.head + len(bytes)] = bytes
|
||||
return builder.EndVector(len(bytes))
|
||||
def MonsterAddTestempty(builder, testempty): builder.PrependUOffsetTRelativeSlot(14, flatbuffers.number_types.UOffsetTFlags.py_type(testempty), 0)
|
||||
def MonsterAddTestbool(builder, testbool): builder.PrependBoolSlot(15, testbool, 0)
|
||||
def MonsterAddTesthashs32Fnv1(builder, testhashs32Fnv1): builder.PrependInt32Slot(16, testhashs32Fnv1, 0)
|
||||
@@ -815,6 +836,11 @@ def MonsterStartVectorOfEnumsVector(builder, numElems): return builder.StartVect
|
||||
def MonsterAddSignedEnum(builder, signedEnum): builder.PrependInt8Slot(48, signedEnum, -1)
|
||||
def MonsterAddTestrequirednestedflatbuffer(builder, testrequirednestedflatbuffer): builder.PrependUOffsetTRelativeSlot(49, flatbuffers.number_types.UOffsetTFlags.py_type(testrequirednestedflatbuffer), 0)
|
||||
def MonsterStartTestrequirednestedflatbufferVector(builder, numElems): return builder.StartVector(1, numElems, 1)
|
||||
def MonsterMakeTestrequirednestedflatbufferVectorFromBytes(builder, bytes):
|
||||
builder.StartVector(1, len(bytes), 1)
|
||||
builder.head = builder.head - len(bytes)
|
||||
builder.Bytes[builder.head : builder.head + len(bytes)] = bytes
|
||||
return builder.EndVector(len(bytes))
|
||||
def MonsterEnd(builder): return builder.EndObject()
|
||||
|
||||
import MyGame.Example.Ability
|
||||
|
||||
@@ -1874,6 +1874,35 @@ class TestAllCodePathsOfExampleSchema(unittest.TestCase):
|
||||
lambda: mon2.TestnestedflatbufferAsNumpy(),
|
||||
NumpyRequiredForThisFeature)
|
||||
|
||||
def test_nested_monster_testnestedflatbuffer(self):
|
||||
b = flatbuffers.Builder(0)
|
||||
|
||||
# build another monster to nest inside testnestedflatbuffer
|
||||
nestedB = flatbuffers.Builder(0)
|
||||
nameStr = nestedB.CreateString("Nested Monster")
|
||||
MyGame.Example.Monster.MonsterStart(nestedB)
|
||||
MyGame.Example.Monster.MonsterAddHp(nestedB, 30)
|
||||
MyGame.Example.Monster.MonsterAddName(nestedB, nameStr)
|
||||
nestedMon = MyGame.Example.Monster.MonsterEnd(nestedB)
|
||||
nestedB.Finish(nestedMon)
|
||||
|
||||
# write the nested FB bytes
|
||||
sub_buf = MyGame.Example.Monster.MonsterMakeTestnestedflatbufferVectorFromBytes(
|
||||
b, nestedB.Output())
|
||||
|
||||
# make the parent monster and include the bytes of the nested monster
|
||||
MyGame.Example.Monster.MonsterStart(b)
|
||||
MyGame.Example.Monster.MonsterAddTestnestedflatbuffer(b, sub_buf)
|
||||
mon = MyGame.Example.Monster.MonsterEnd(b)
|
||||
b.Finish(mon)
|
||||
|
||||
# inspect the resulting data:
|
||||
mon2 = MyGame.Example.Monster.Monster.GetRootAsMonster(b.Bytes,
|
||||
b.Head())
|
||||
nestedMon2 = mon2.TestnestedflatbufferNestedRoot()
|
||||
self.assertEqual(b"Nested Monster", nestedMon2.Name())
|
||||
self.assertEqual(30, nestedMon2.Hp())
|
||||
|
||||
def test_nondefault_monster_testempty(self):
|
||||
b = flatbuffers.Builder(0)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user