我经常遇到允许用户获取和设置控制模块操作的各种参数的 API。我现在发现自己正在考虑编写另一个属性 API,但不想重新发明轮子。
以下是典型的基本客户端代码:
setInt("bitrate", 1000);
setEnum("mode", MODE_FAST);
setStr("output file", "music.mp3");
通常可以设置数十个参数,并且此类属性集通常在不断开发中。
一些 API 比其他 API 更智能,更高级的功能包括:
- 属性的分层分组
- 属性枚举
- 具有强制最小值和最大值的数值参数
- 默认参数值
- 启用、禁用或只读的设置
- 动态参数 - 根据其他参数的状态出现、消失、设置最小值/最大值、启用、禁用或只读的设置。
- 通过 UUID 键而不是文本名称访问的属性
除了上面示例代码中的 C 风格访问器之外,我还遇到了可以:
- 读取/写入文件的属性(例如 XML)
- 读/写设置到 Windows 注册表
- 与系统属性 API 接口,例如
IPersistPropertyBag
- 具有默认的哑 GUI 实现,例如树视图或列表
- 具有适合最小值/最大值/启用状态的 GUI 扩展,以减少 GUI 代码中的重复。
我很想找到一个设计良好的公共图书馆,它为上述所有内容提供框架,但到目前为止还一片空白。我知道Boost.PropertyTree但它只是一个骨架。还有其他我应该注意的可移植属性 API 框架吗?