代码之家  ›  专栏  ›  技术社区  ›  psprint

可以通过GType扩展GKeyFile来保存私有·origin·enum字段吗?

  •  0
  • psprint  · 技术社区  · 4 年前

    我正在为以下问题寻找一个好的解决方案:

    • 有一些密钥存储在GKeyFile结构中,我从3个不同的来源将其放在那里:1) 汇编成数据 2. 其他ini文件 3. 插件脚本 ,
    • 我想用它的来源标记每个键/值对。

    我偶然发现了 GType 以及在运行时向现有类型添加私有数据成员的示例。这些例子很直接( link ). 所以我考虑添加这样的私人字段( origin enum)插入GKeyFile的GType中,基本上转换为每个键/值存储对中的值的(另一个GType?)类型,但我不知道应该怎么做。

    G_TYPE_KEY_FILE 宏,返回 G类型 GKeyFile 然而,从哪里开始呢?

    0 回复  |  直到 4 年前
        1
  •  1
  •   Philip Withnall    4 年前

    除非控制类型的实现,否则无法向类型添加私有结构。你无法控制实施 GKeyFile (它是GLib内部的),所以你不能这样做。

    我认为你最好写一门涵盖 GKeyFile 并在其上实现自己的逻辑。新类将有一个指向内部 GKeyFile 实例,但不会从中导出 GKeyFile ,因为其他代码不需要知道您的数据存储实际上是作为密钥文件实现的。