mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-22 07:28:28 +00:00
Dart object API (#6682)
* dart test scripts - generate with `--gen-object-api` * Dart object API, pack and unpack methods (WIP) * Dart flatc - extract Builder code to separate functions to reuse it in Pack() * Dart flatc - use builder field-building implementation in pack() * Dart flatc - add pack() as an intance method of the "T" class * Dart object API - make inner fields unpacked as well * Dart object API - use pack() when collecting field offsets * Dart object API - use packOnce() for fields that are structs or vectors of structs * Dart object API - remove obsolete union support TODO * Dart object API - minor review changes, test and fixes * Dart object API - revert packOnce() - not supported by other object API implementations * Dart object API - update docs * update dart generated code in tests/ to fix CI failure on ./scripts/check-generated-code.sh * Dart flatc - fix compilation for old MSVC and c++0x
This commit is contained in:
@@ -27,6 +27,44 @@ class TableInC {
|
||||
String toString() {
|
||||
return 'TableInC{referToA1: $referToA1, referToA2: $referToA2}';
|
||||
}
|
||||
|
||||
TableInCT unpack() => TableInCT(
|
||||
referToA1: referToA1?.unpack(),
|
||||
referToA2: referToA2?.unpack());
|
||||
|
||||
static int pack(fb.Builder fbBuilder, TableInCT object) {
|
||||
if (object == null) return 0;
|
||||
return object.pack(fbBuilder);
|
||||
}
|
||||
}
|
||||
|
||||
class TableInCT {
|
||||
namespace_a.TableInFirstNST referToA1;
|
||||
namespace_a.SecondTableInAT referToA2;
|
||||
|
||||
TableInCT({
|
||||
this.referToA1,
|
||||
this.referToA2});
|
||||
|
||||
int pack(fb.Builder fbBuilder) {
|
||||
assert(fbBuilder != null);
|
||||
final int referToA1Offset = referToA1?.pack(fbBuilder);
|
||||
final int referToA2Offset = referToA2?.pack(fbBuilder);
|
||||
|
||||
fbBuilder.startTable();
|
||||
if (referToA1Offset != null) {
|
||||
fbBuilder.addOffset(0, referToA1Offset);
|
||||
}
|
||||
if (referToA2Offset != null) {
|
||||
fbBuilder.addOffset(1, referToA2Offset);
|
||||
}
|
||||
return fbBuilder.endTable();
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'TableInCT{referToA1: $referToA1, referToA2: $referToA2}';
|
||||
}
|
||||
}
|
||||
|
||||
class _TableInCReader extends fb.TableReader<TableInC> {
|
||||
|
||||
Reference in New Issue
Block a user