Использование пользовательских перечислений в FlatBuffer - PullRequest
0 голосов
/ 20 мая 2018

Я использую C ++ API для FlatBuffers для хранения и получения настроек для приложения macOS, написанного на Objective-C.

Многие из сохраняемых мной предпочтений - это перечисления typedef'd, которые я использую во всем приложении.Есть ли возможность использовать эти существующие перечисления в схеме FlatBuffer, чтобы я мог использовать их в качестве значений по умолчанию?

Например, я хотел бы сделать следующее:

  table Preferences {
    layout:int = FLLayoutModeList;
    sidebar:int = FLSidebarElementInspector;
  }

Где FLLayoutModeList и FLSidebarElementInspector определены как перечисления FLLayoutMode и FLSidebarElement соответственнов моем Objective-C.

Можно ли это сделать с помощью интерфейса собственных типов C ++?Обратите внимание, что я только читаю и пишу этот FlatBuffer из моего собственного кода.Он не используется совместно с другими приложениями и не требует межъязыковой поддержки, если это имеет значение.

1 Ответ

0 голосов
/ 20 мая 2018

Схема не может включать определения из чего-то, что не является схемой, то есть кода C ++ или Objective C.Единственный способ не дублировать их - это определить их в схеме FlatBuffers и использовать оттуда сгенерированный код.Это не работает наоборот.

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

...