FlatBuffer: как создать таблицу с необязательной подструктурой / вложенной таблицей - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть корневая таблица, а внутри таблицы необязательная структура / таблица.Внутренняя таблица является необязательной - она ​​может или не может быть построена на основе других условий.

Вот пример Схема FlatBuffer :

struct A {
    value:bool;
}

table B {
    ...
}

table C {
    ...
    a:A;
    b:B;
    ...
}

Нужно ли строить A/ B основан на других условиях.

Поскольку вам не разрешено использовать вложенные FlatBufferBuilder , нужно ли сначала создавать их, даже если они не нужны, а затем add_a /add_b очень поздно, после создания Cbuilder на основе других условий?

В C ++ я не нашел подходящего способа сделать это.Любая помощь приветствуется!

1 Ответ

0 голосов
/ 07 февраля 2019

Только то, что вы строите объекты в предварительном порядке (не вложенные), не делает необязательное конструирование другим:

flatbuffers::Offset<B> bo;  // default 0, so unused.
if (my_conditions) {
  bo = CreateB(fbb, ..);
}
Cbuilder cb;
if (my_conditions) {
  cb.add_a(A(..));  // Structs must be created inline.
}
cb.add_b(bo);  // This will not be stored if 0.
...
...