So I have table as member of other tables, when I create data of the parent tables, do I need to call finish
only on the parent table, or I need to finish
both the member and the parent tables? The code is like this:
table Child {
...
}
table Parent {
c: Child;
...
}
FlatBufferBuilder fbb = new FlatBufferBuilder(1024);
int child = Child.createChild(fbb, ...);
fbb.finish(child); // <-- Do I need to call this?
int parent = Parent.createParent(fbb, child, ...);
Parent.finishParentBuffer(fbb, parent); // <-- finishes the whole buffer for writing
// write(fbb.dataBuffer());
The question is do I need to call finish on the child table?
You have to finish each table before building a parent, or any other table. Finishing gives you the offset value that is then provided to other tables to store.
Using the
create<TABLE_NAME>()
methods automatically finishes for you.Your example code is wrong, it would be like:
If you use the
Child.startChild()
method you then have to manually callChild.endChild()
. Take a look at the generated code ofChild.createChild()