$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: [boost] property_tree iterators
From: Chris Meyer (cmeyer1969+boost_at_[hidden])
Date: 2009-05-12 20:25:54
I've been using property_tree and it is very useful to me.
It's easy to add typed data to the tree using something like
MyType myvar[10];
for (i=0; i<10; ++i)
pt.put(key, myvar[i], true);
I can also implement my own translator to convert MyType to a string
suitable for serializing to XML, JSON, or whatever.
However, if I go to retrieve this data, things are less refined.
Iterating over all elements with a given key requires something like this:
ptree::key_compare comp;
BOOST_FOREACH(ptree::value_type &v, pt)
{
if (!comp(v.first, key) && !comp(key, v.first))
{
MyType myvar = convertStringToMyType(v.second.data());
doSomething(myvar);
}
}
Perhaps there should be a templatized member function which uses the
translator to automatically iterate all values of a particular key and
have it converted to the desired data type.
Then I could use something like:
BOOST_FOREACH(MyType myvar, pt.get_all<MyType>(key))
{
doSomething(myvar);
}
Is this possible? Or is there something I'm missing from the existing
API that allows me to do this?