Boost logo

Boost :

From: Marcin Kalicinski (kalita_at_[hidden])
Date: 2005-11-15 17:39:28

Hi All,

Thanks to everybody who took time to look at the library, and especially to
those who sent me feedback. Second revision of property_tree is now in the
vault as (it is now also in boost-sandbox cvs).

Outline of the changes:

- new methods get_o, get_own_o, get_child_o, which return boost::optional
(suggested by Pavel Vozenilek)
- added locales support to get and put methods (suggested by Martin)
- pointer to bool removed from get_d (suggested by Daniel Wesslen)
- ptree/wptree are now case sensitive by default. Added iptree/wiptree which
are case-insensitive (suggested by Daniel Wesslen)
- fixed multiple definitions bug when including some of the headers in more
than one translation unit (spotted by Daniel Wesslen)
- added more examples
- updated docs and regressions to match current state of library (that was
the biggest job actually :-)
- hopefully kept the quality high

Outstanding work:
- XPath-like syntax for retrieving XML attributes (suggested by Caleb
- ptree mathematical relations (difference, union, intersection) - nice e.g.
for tracking config file changes, or combining configs

Original message (posted with revision 1):

Property tree is a data structure - a tree of (key, value) pairs. It
differs from its cousin, "usual" PropertyMap, because it is hierarchical,
not linear. Thus, it is more like a minimalistic Document Object Model, but
not bound to any specific file format. It can store contents of XML files,
windows registry, INI files, even command line parameters. The library
contains parsers for all these formats, and more.

I tried to make the library as high quality as possible before posting here,
so it contains a (hopefully) full documentation, and a comprehensive set of
regression tests - more than 300 test cases.

By any chance it is not a substitute for (upcoming?) boost XML library - it
only supports a fairly narrow subset of XML, and focuses rather on being

For more curious, excerpt from the doc:

Property tree is a recursive data structure that stores a single data
string, and an ordered list of (key, value) pairs, where value is a property
tree itself. It therefore forms a tree, hence the name. It is a versatile
structure that can store in uniform way data coming from various sources,
such as XML or INI files, as well as windows registry, program command line

Property tree interface is similar to the interface of a standard C++
container. It supports iterators, insertion, erasing, searching etc. One can
think of it as a sort of Document Object Model, which is minimalistic, not
bound to any specific file format, designed to be easy to use, and comes as
Boost-compatible, headers only C++ library. Many software projects develop a
similar tool at some point of their lifetime, and property tree long ago
originated the same way. I hope the library can save many from reinventing
the wheel.

Marcin Kalicinski

Boost list run by bdawes at, gregod at, cpdaniel at, john at