2017-01-07 4 views
0

Могу ли я повторно использовать экземпляры компоновщика «sub», сгенерированные из flatbuffers::FlatBufferBuilder после звонка builder.Clear()? Каков эффект builder.Clear() на субстроителях?Эффективная очистка строителей плоских буферов для слоев таблиц

Сформировав схему flatbuffers, такие как:

table FB_mytable1{ 
myshort::ushort = 0; 
} 
table FB_table2{ 
nestedTable1::FB_mytable1; 
nestedTable1::FB_mytable1; 
} 
root_type FB_table2; 

Если сбросить строитель с помощью builder.clear(), мой инстанциации «flatbuffers :: FlatBufferBuilder», будет ли это позволит мне генерировать новые последовательные данные без вызова функция сброса или обновление любого из отдельных сериализаторов таблицы, например, моя реализация FB_mytable1Builder myFB_mytable1Builder(builder)? Или мне нужно убедиться, что объекты индивидуального строителя имеют область видимости, что означает, что они не используются повторно?

ответ

1

clear() сбрасывает FlatBufferBuilder, как если бы он был сконструирован, и любые экземпляры построителя таблиц не должны использоваться повторно для нескольких буферов или даже нескольких таблиц.

См., A FlatBufferBuilder - несколько тяжеловесная структура (поскольку она владеет буфером), поэтому имеет смысл повторно использовать ее, когда сможете. Однако сборщики таблиц очень легкие, поэтому это должна быть локальная переменная, используемая для построения отдельной таблицы, вы не можете ее повторно использовать.

+0

Спасибо, что нашли время, чтобы понять мой вопрос. Я обновлю его, чтобы лучше описать вопрос, на который вы ответили мне, и это действительно то, что мне нужно было знать. – user3235290

+0

Хорошо, удалил «Не совсем уверен, что вы просите» из моего ответа :) – Aardappel

 Смежные вопросы

  • Нет связанных вопросов^_^