Add pugixml-1.4 to contrib
[ipdf/code.git] / contrib / pugixml-1.4 / contrib / foreach.hpp
diff --git a/contrib/pugixml-1.4/contrib/foreach.hpp b/contrib/pugixml-1.4/contrib/foreach.hpp
new file mode 100644 (file)
index 0000000..26f29a7
--- /dev/null
@@ -0,0 +1,64 @@
+/*\r
+ * Boost.Foreach support for pugixml classes.\r
+ * This file is provided to the public domain.\r
+ * Written by Arseny Kapoulkine ([email protected])\r
+ */\r
+\r
+#ifndef HEADER_PUGIXML_FOREACH_HPP\r
+#define HEADER_PUGIXML_FOREACH_HPP\r
+\r
+#include "pugixml.hpp"\r
+\r
+/*\r
+ * These types add support for BOOST_FOREACH macro to xml_node and xml_document classes (child iteration only).\r
+ * Example usage:\r
+ * BOOST_FOREACH(xml_node n, doc) {}\r
+ */\r
+\r
+namespace boost\r
+{\r
+       template <typename> struct range_mutable_iterator;\r
+       template <typename> struct range_const_iterator;\r
+\r
+       template<> struct range_mutable_iterator<pugi::xml_node>\r
+       {\r
+               typedef pugi::xml_node::iterator type;\r
+       };\r
+\r
+       template<> struct range_const_iterator<pugi::xml_node>\r
+       {\r
+               typedef pugi::xml_node::iterator type;\r
+       };\r
+\r
+       template<> struct range_mutable_iterator<pugi::xml_document>\r
+       {\r
+               typedef pugi::xml_document::iterator type;\r
+       };\r
+\r
+       template<> struct range_const_iterator<pugi::xml_document>\r
+       {\r
+               typedef pugi::xml_document::iterator type;\r
+       };\r
+}\r
+\r
+/*\r
+ * These types add support for BOOST_FOREACH macro to xml_node and xml_document classes (child/attribute iteration).\r
+ * Example usage:\r
+ * BOOST_FOREACH(xml_node n, children(doc)) {}\r
+ * BOOST_FOREACH(xml_node n, attributes(doc)) {}\r
+ */\r
+\r
+namespace pugi\r
+{\r
+       inline xml_object_range<xml_node_iterator> children(const pugi::xml_node& node)\r
+       {\r
+        return node.children();\r
+       }\r
+\r
+       inline xml_object_range<xml_attribute_iterator> attributes(const pugi::xml_node& node)\r
+       {\r
+        return node.attributes();\r
+       }\r
+}\r
+\r
+#endif\r

UCC git Repository :: git.ucc.asn.au