2010-07-19 09:57:32 +00:00
|
|
|
/*
|
|
|
|
* Boost.Foreach support for pugixml classes.
|
|
|
|
* This file is provided to the public domain.
|
|
|
|
* Written by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef HEADER_PUGIXML_FOREACH_HPP
|
|
|
|
#define HEADER_PUGIXML_FOREACH_HPP
|
|
|
|
|
2014-09-27 04:49:27 +00:00
|
|
|
#include <boost/range/iterator.hpp>
|
|
|
|
|
2010-07-19 09:57:32 +00:00
|
|
|
#include "pugixml.hpp"
|
|
|
|
|
|
|
|
/*
|
|
|
|
* These types add support for BOOST_FOREACH macro to xml_node and xml_document classes (child iteration only).
|
|
|
|
* Example usage:
|
|
|
|
* BOOST_FOREACH(xml_node n, doc) {}
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace boost
|
|
|
|
{
|
|
|
|
template<> struct range_mutable_iterator<pugi::xml_node>
|
|
|
|
{
|
|
|
|
typedef pugi::xml_node::iterator type;
|
|
|
|
};
|
|
|
|
|
|
|
|
template<> struct range_const_iterator<pugi::xml_node>
|
|
|
|
{
|
|
|
|
typedef pugi::xml_node::iterator type;
|
|
|
|
};
|
|
|
|
|
|
|
|
template<> struct range_mutable_iterator<pugi::xml_document>
|
|
|
|
{
|
|
|
|
typedef pugi::xml_document::iterator type;
|
|
|
|
};
|
|
|
|
|
|
|
|
template<> struct range_const_iterator<pugi::xml_document>
|
|
|
|
{
|
|
|
|
typedef pugi::xml_document::iterator type;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* These types add support for BOOST_FOREACH macro to xml_node and xml_document classes (child/attribute iteration).
|
|
|
|
* Example usage:
|
|
|
|
* BOOST_FOREACH(xml_node n, children(doc)) {}
|
|
|
|
* BOOST_FOREACH(xml_node n, attributes(doc)) {}
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace pugi
|
|
|
|
{
|
2012-03-27 05:31:33 +00:00
|
|
|
inline xml_object_range<xml_node_iterator> children(const pugi::xml_node& node)
|
2010-07-19 09:57:32 +00:00
|
|
|
{
|
2014-09-27 04:49:27 +00:00
|
|
|
return node.children();
|
2010-07-19 09:57:32 +00:00
|
|
|
}
|
|
|
|
|
2012-03-27 05:31:33 +00:00
|
|
|
inline xml_object_range<xml_attribute_iterator> attributes(const pugi::xml_node& node)
|
2010-07-19 09:57:32 +00:00
|
|
|
{
|
2014-09-27 04:49:27 +00:00
|
|
|
return node.attributes();
|
2010-07-19 09:57:32 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|