FlatBuffer: Как мне динамически добавлять поля в таблицу? - PullRequest
0 голосов
/ 20 февраля 2019

В моей схеме пустая таблица (как показано ниже).

table ClusterValue 
{
}

Поскольку я заранее не знаю количество элементов-членов в кластере, я хотел бы программнодобавить поля (C ++).Я сталкивался с некоторыми методами, такими как AddOffset, AddElement, AddStruct.Но я все еще не уверен в точном способе добавить это.

Для уточнения, скажем, если вход в мою программу представляет собой кластер с двумя членами - строкой и числом.Я хотел бы программно добавить два поля (строковое и числовое) в таблицу кластеров и сериализовать его.

1 Ответ

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

Вы не можете.FlatBuffers является статически типизированной системой, и все возможные поля должны быть известны заранее, с кодом C ++, сгенерированным для их построения и доступа.Хотя вы можете динамически решать, какие поля добавить в таблицу (вызывая add_field_name() на основе некоторого условия), это должно быть одно из полей в схеме.

Если это недостаточно динамично для васЯ бы порекомендовал FlexBuffers (https://google.github.io/flatbuffers/flexbuffers.html), который дает вам эффективность FlatBuffers с динамической природой JSON. Здесь вы можете запустить вектор или карту и добавлять любые значения или поля к ним во время выполнения, безограничения.

...