问题描述
我正在为以下问题寻找好的解决方案:
- 将一些键存储在 GKeyFile 结构中,我将它从 3 个不同的来源放在那里:1) 在数据中编译,2) 其他 ini 文件,3 ) 一个插件脚本,
- 我想用它来自的来源标记每个键/值对。
我偶然发现了 GType
以及在运行时将私有数据成员添加到现有类型的示例。这些例子非常直接(link)。所以我想在 GKeyFile 的 GType 的某处添加这样的私有字段(origin
枚举),基本上是每个键/值存储对中值的(另一个 GType?)类型,但我没有知道应该怎么做。
有 G_TYPE_KEY_FILE 宏,它返回 GType
的 GKeyFile
。但是,从哪里开始?
解决方法
除非您控制类型的实现,否则您不能向类型添加私有结构。您无法控制 GKeyFile
的实现(它是 GLib 内部的),因此您无法执行此操作。
我认为您最好编写一个包装 GKeyFile
并在其上实现您自己的逻辑的类。新类将有一个指向内部 GKeyFile
实例的指针,但不会从 GKeyFile
派生,因为其他代码不需要知道您的数据存储实际上是作为密钥文件实现的。