首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有通用get/set实现的属性树状数据结构的框架/库?

具有通用get/set实现的属性树状数据结构的框架/库?
EN

Stack Overflow用户
提问于 2015-05-25 22:51:33
回答 4查看 1.1K关注 0票数 19

我正在寻找一种行为类似于boost::property_tree的数据结构,但(可选)将每个值项的get/set实现留给开发人员。

您应该能够这样做:

代码语言:javascript
复制
std::function<int(void)> f_foo = ...;
my_property_tree tree;
tree.register<int>("some.path.to.key", f_foo);
auto v1 = tree.get<int>("some.path.to.key");    // <-- calls f_foo
auto v2 = tree.get<int>("some.other.path");     // <-- some fallback or throws exception

我猜你可以滥用property_tree来做这件事,但我还没有研究过它的实现,除非我知道这是一个预期的用例,否则我会有一种不好的预感。

首先,通过调用所提供的函数来编写一个类来处理像val = tree.get("some.path.to.key")这样的请求看起来并不太难,但我可以想象出很多特殊情况,这将使它成为一个相当庞大的库。

一些额外的功能可能是:

  • subtree-handling:不仅处理终端键,还将某些子树转发到不同的实现。例如。

tree.register("some.path.config",some_handler);//调用some_handler.get("network.hostname") v= tree.get("some.path.config.network.hostname");属性树在值/键中搜索

  • 自动类型转换(如在property重载中“,例如默认为property_tree-未注册回调的路径的实现。

有没有和我要找的库很接近的库?有没有人有过将boost::property_tree用于此目的的经验?(例如,通过子类化或将特殊对象放入树中,如所描述的here)

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30440997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档