在 FlatBuffer 中使用自定义枚举
Using custom enums in a FlatBuffer
我正在使用 C++ API for FlatBuffers 来存储和检索用 Objective-C 编写的 macOS 应用程序的首选项。
我存储的许多首选项都是我在整个应用程序中使用的 typedef 枚举。无论如何在 FlatBuffer 模式中使用那些现有的枚举,以便我可以将它们用作默认值?
例如,我想执行以下操作:
table Preferences {
layout:int = FLLayoutModeList;
sidebar:int = FLSidebarElementInspector;
}
其中 FLLayoutModeList
和 FLSidebarElementInspector
在我的 Objective-C.[=27= 中分别定义为 FLLayoutMode
和 FLSidebarElement
枚举]
这可以使用 C++ 本机类型接口来完成吗?请注意,我只是从我自己的代码中读写这个 FlatBuffer。它不会与其他应用程序共享,也不需要任何跨语言支持(如果重要的话)。
模式无法包含来自非模式的定义,即 C++ 或 Objective C 代码。不必复制它们的唯一方法是在 FlatBuffers 模式中定义它们并使用从那里生成的代码。反之则不行。
请注意,如果您使用 Objective C(而不是 Objective C++),您可以使用 flatcc
模式编译器生成纯 C,这可能会更好。
我正在使用 C++ API for FlatBuffers 来存储和检索用 Objective-C 编写的 macOS 应用程序的首选项。
我存储的许多首选项都是我在整个应用程序中使用的 typedef 枚举。无论如何在 FlatBuffer 模式中使用那些现有的枚举,以便我可以将它们用作默认值?
例如,我想执行以下操作:
table Preferences {
layout:int = FLLayoutModeList;
sidebar:int = FLSidebarElementInspector;
}
其中 FLLayoutModeList
和 FLSidebarElementInspector
在我的 Objective-C.[=27= 中分别定义为 FLLayoutMode
和 FLSidebarElement
枚举]
这可以使用 C++ 本机类型接口来完成吗?请注意,我只是从我自己的代码中读写这个 FlatBuffer。它不会与其他应用程序共享,也不需要任何跨语言支持(如果重要的话)。
模式无法包含来自非模式的定义,即 C++ 或 Objective C 代码。不必复制它们的唯一方法是在 FlatBuffers 模式中定义它们并使用从那里生成的代码。反之则不行。
请注意,如果您使用 Objective C(而不是 Objective C++),您可以使用 flatcc
模式编译器生成纯 C,这可能会更好。