diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2015-04-08 03:09:47 +0000 |
---|---|---|
committer | <> | 2015-05-05 14:37:32 +0000 |
commit | f2541bb90af059680aa7036f315f052175999355 (patch) | |
tree | a5b214744b256f07e1dc2bd7273035a7808c659f /libs/property_tree/doc | |
parent | ed232fdd34968697a68783b3195b1da4226915b5 (diff) | |
download | boost-tarball-master.tar.gz |
Imported from /home/lorry/working-area/delta_boost-tarball/boost_1_58_0.tar.bz2.HEADboost_1_58_0master
Diffstat (limited to 'libs/property_tree/doc')
-rw-r--r-- | libs/property_tree/doc/Jamfile.v2 | 9 | ||||
-rw-r--r-- | libs/property_tree/doc/intro.qbk | 3 | ||||
-rw-r--r-- | libs/property_tree/doc/property_tree.qbk | 16 | ||||
-rw-r--r-- | libs/property_tree/doc/tutorial.qbk | 91 |
4 files changed, 28 insertions, 91 deletions
diff --git a/libs/property_tree/doc/Jamfile.v2 b/libs/property_tree/doc/Jamfile.v2 index 4f62fc9df..96601b722 100644 --- a/libs/property_tree/doc/Jamfile.v2 +++ b/libs/property_tree/doc/Jamfile.v2 @@ -12,6 +12,7 @@ import doxygen ; import quickbook ; + doxygen autodoc : [ glob ../../../boost/property_tree/*.hpp ] @@ -42,11 +43,5 @@ boostbook standalone <xsl:param>toc.section.depth=2 <xsl:param>chunk.section.depth=3 <dependency>autodoc - <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/functional/hash/doc/html + <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/property_tree/doc/html ; - -#install ../ -# : ../../../boost.png -# ../../../next.png -# ../../../prev.png -# ; diff --git a/libs/property_tree/doc/intro.qbk b/libs/property_tree/doc/intro.qbk index 30236970c..354e0c044 100644 --- a/libs/property_tree/doc/intro.qbk +++ b/libs/property_tree/doc/intro.qbk @@ -28,7 +28,8 @@ Conceptually, then, a node can be thought of as the following structure: list< pair<key_type, ptree> > children; // ordered list of named children }; -Both key_type and data_type are configurable, but will usually be std::string. +Both key_type and data_type are configurable to some extent, but will usually be +std::string or std::wstring, and the parsers only work with this kind of tree. Many software projects develop a similar tool at some point of their lifetime, and property tree originated the same way. We hope the library can save many diff --git a/libs/property_tree/doc/property_tree.qbk b/libs/property_tree/doc/property_tree.qbk index fef18f749..83f6a6bc8 100644 --- a/libs/property_tree/doc/property_tree.qbk +++ b/libs/property_tree/doc/property_tree.qbk @@ -7,15 +7,16 @@ /] [library Boost.PropertyTree - [quickbook 1.4] - [copyright 2008 Marcin Kalicinski] + [quickbook 1.6] + [copyright 2008-2010 Marcin Kalicinski] + [copyright 2010-2013 Sebastian Redl] [purpose Property Tree library] [license Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at [@http://www.boost.org/LICENSE_1_0.txt]) ] - [authors [Kalicinski, Marcin]] + [authors [Kalicinski, Marcin], [Redl, Sebastian]] [id property_tree] [dirname property_tree] [category container] @@ -29,19 +30,20 @@ [def __ptree_data_type__ [classref boost::property_tree::basic_ptree::data_type data_type]] [def __ptree_iterator__ [classref boost::property_tree::basic_ptree::iterator iterator]] [def __ptree_const_iterator__ [classref boost::property_tree::basic_ptree::const_iterator const_iterator]] +[def __ptree_assoc_iterator__ [classref boost::property_tree::basic_ptree::assoc_iterator assoc_iterator]] +[def __ptree_const_assoc_iterator__ [classref boost::property_tree::basic_ptree::const_assoc_iterator const_assoc_iterator]] [def __path__ [classref boost::property_tree::string_path path]] [def __ptree_error__ [classref boost::property_tree::ptree_error ptree_error]] [def __ptree_bad_data__ [classref boost::property_tree::ptree_bad_data ptree_bad_data]] [def __ptree_bad_path__ [classref boost::property_tree::ptree_bad_path ptree_bad_path]] [/ members] +[def __ptree_data__ [memberref boost::property_tree::basic_ptree::data data]] +[def __ptree_find__ [memberref boost::property_tree::basic_ptree::find find]] [def __ptree_insert__ [memberref boost::property_tree::basic_ptree::insert insert]] +[def __ptree_push_front__ [memberref boost::property_tree::basic_ptree::push_front push_front]] [def __ptree_push_back__ [memberref boost::property_tree::basic_ptree::push_back push_back]] -[def __ptree_find__ [memberref boost::property_tree::basic_ptree::find find]] [def __ptree_erase__ [memberref boost::property_tree::basic_ptree::erase erase]] -[def __ptree_find__ [memberref boost::property_tree::basic_ptree::find find]] -[def __ptree_data__ [memberref boost::property_tree::basic_ptree::data data]] -[def __ptree_push_front__ [memberref boost::property_tree::basic_ptree::push_front push_front]] [def __ptree_sort__ [memberref boost::property_tree::basic_ptree::sort sort]] [def __ptree_get__ [memberref boost::property_tree::basic_ptree::get get]] [/ XXX: Don't know how to specify overloads] diff --git a/libs/property_tree/doc/tutorial.qbk b/libs/property_tree/doc/tutorial.qbk index 4d374c368..9ef3a922d 100644 --- a/libs/property_tree/doc/tutorial.qbk +++ b/libs/property_tree/doc/tutorial.qbk @@ -1,14 +1,16 @@ [/ / Copyright (c) 2008 Marcin Kalicinski (kalita <at> poczta dot onet dot pl) - / Copyright (c) 2009 Sebastian Redl (sebastian dot redl <at> getdesigned dot at) + / Copyright (c) 2009, 2013 Sebastian Redl (sebastian dot redl <at> getdesigned dot at) / / Distributed under the Boost Software License, Version 1.0. (See accompanying / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) /] [section:tutorial Five Minute Tutorial] +[import ../examples/debug_settings.cpp] + This tutorial uses XML. Note that the library is not specifically bound to XML, and any other supported format (such as INI or JSON) could be used instead. -XML was chosen because the author thinks that wide range of people is familiar +XML was chosen because the author thinks that a wide range of people is familiar with it. Suppose we are writing a logging system for some application, and need to read @@ -28,89 +30,26 @@ configuration looks like this: ] It contains the log filename, a list of modules where logging is enabled, and -the debug level value. To store the logging configuration in the program we -created a debug_settings structure: - - struct debug_settings - { - std::string m_file; // log filename - int m_level; // debug level - std::set<string> m_modules; // modules where logging is enabled - void load(const std::string &filename); - void save(const std::string &filename); - }; - -All that needs to be done now is to write implementations of load() and save() -member functions. Let's first deal with load(). It contains just 7 lines of -code, although it does all the necessary things, including error reporting: +the debug level value. - #include <boost/property_tree/ptree.hpp> - #include <boost/property_tree/xml_parser.hpp> +First we need some includes: - // Loads debug_settings structure from the specified XML file - void debug_settings::load(const std::string &filename) - { - // Create an empty property tree object - using boost::property_tree::__ptree__; - __ptree__ pt; +[debug_settings_includes] - // Load the XML file into the property tree. If reading fails - // (cannot open file, parse error), an exception is thrown. - __read_xml__(filename, pt); +To store the logging configuration in the program we create a debug_settings +structure: - // Get the filename and store it in the m_file variable. - // Note that we construct the path to the value by separating - // the individual keys with dots. If dots appear in the keys, - // a path type with a different separator can be used. - // If the debug.filename key is not found, an exception is thrown. - m_file = pt.__ptree_get__<std::string>("debug.filename"); +[debug_settings_data] - // Get the debug level and store it in the m_level variable. - // This is another version of the get method: if the value is - // not found, the default value (specified by the second - // parameter) is returned instead. The type of the value - // extracted is determined by the type of the second parameter, - // so we can simply write get(...) instead of get<int>(...). - m_level = pt.__ptree_get__("debug.level", 0); +All that needs to be done now is to write implementations of load() and save() +member functions. Let's first deal with load(). It contains just 7 lines of +code, although it does all the necessary things, including error reporting: - // Iterate over the debug.modules section and store all found - // modules in the m_modules set. The get_child() function - // returns a reference to the child at the specified path; if - // there is no such child, it throws. Property tree iterators - // are models of BidirectionalIterator. - BOOST_FOREACH(__ptree__::__ptree_value_type__ &v, - pt.__ptree_get_child__("debug.modules")) - m_modules.__ptree_insert__(v.second.data()); - } +[debug_settings_load] Now the save() function. It is also 7 lines of code: - // Saves the debug_settings structure to the specified XML file - void debug_settings::save(const std::string &filename) - { - // Create an empty property tree object - using boost::property_tree::__ptree__; - __ptree__ pt; - - // Put log filename in property tree - pt.__ptree_put__("debug.filename", m_file); - - // Put debug level in property tree - pt.__ptree_put__("debug.level", m_level); - - // Iterate over the modules in the set and put them in the - // property tree. Note that the put function places the new - // key at the end of the list of keys. This is fine most of - // the time. If you want to place an item at some other place - // (i.e. at the front or somewhere in the middle), this can - // be achieved using a combination of the insert and put_own - // functions. - BOOST_FOREACH(const std::string &name, m_modules) - pt.__ptree_add__("debug.modules.module", name); - - // Write the property tree to the XML file. - __write_xml__(filename, pt); - } +[debug_settings_save] The full program [@boost:/libs/property_tree/examples/debug_settings.cpp debug_settings.cpp] is included in the examples directory. |