diff options
Diffstat (limited to '3rdParty/Boost/src/boost/property_tree/detail/xml_parser_read_rapidxml.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/property_tree/detail/xml_parser_read_rapidxml.hpp | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_read_rapidxml.hpp b/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_read_rapidxml.hpp deleted file mode 100644 index acec34d9..0000000 --- a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_read_rapidxml.hpp +++ /dev/null @@ -1,144 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2007 Marcin Kalicinski -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- -#ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_READ_RAPIDXML_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_READ_RAPIDXML_HPP_INCLUDED - -#include <boost/property_tree/ptree.hpp> -#include <boost/property_tree/detail/xml_parser_error.hpp> -#include <boost/property_tree/detail/xml_parser_flags.hpp> -#include <boost/property_tree/detail/xml_parser_utils.hpp> -#include <boost/property_tree/detail/rapidxml.hpp> -#include <vector> - -namespace boost { namespace property_tree { namespace xml_parser -{ - - template<class Ptree, class Ch> - void read_xml_node(detail::rapidxml::xml_node<Ch> *node, - Ptree &pt, int flags) - { - using namespace detail::rapidxml; - switch (node->type()) - { - // Element nodes - case node_element: - { - // Create node - Ptree &pt_node = pt.push_back(std::make_pair(node->name(), - Ptree()))->second; - - // Copy attributes - if (node->first_attribute()) - { - Ptree &pt_attr_root = pt_node.push_back( - std::make_pair(xmlattr<Ch>(), Ptree()))->second; - for (xml_attribute<Ch> *attr = node->first_attribute(); - attr; attr = attr->next_attribute()) - { - Ptree &pt_attr = pt_attr_root.push_back( - std::make_pair(attr->name(), Ptree()))->second; - pt_attr.data() = attr->value(); - } - } - - // Copy children - for (xml_node<Ch> *child = node->first_node(); - child; child = child->next_sibling()) - read_xml_node(child, pt_node, flags); - } - break; - - // Data nodes - case node_data: - case node_cdata: - { - if (flags & no_concat_text) - pt.push_back(std::make_pair(xmltext<Ch>(), - Ptree(node->value()))); - else - pt.data() += node->value(); - } - break; - - // Comment nodes - case node_comment: - { - if (!(flags & no_comments)) - pt.push_back(std::make_pair(xmlcomment<Ch>(), - Ptree(node->value()))); - } - break; - - default: - // Skip other node types - break; - } - } - - template<class Ptree> - void read_xml_internal(std::basic_istream< - typename Ptree::key_type::value_type> &stream, - Ptree &pt, - int flags, - const std::string &filename) - { - typedef typename Ptree::key_type::value_type Ch; - using namespace detail::rapidxml; - - // Load data into vector - stream.unsetf(std::ios::skipws); - std::vector<Ch> v(std::istreambuf_iterator<Ch>(stream.rdbuf()), - std::istreambuf_iterator<Ch>()); - if (!stream.good()) - BOOST_PROPERTY_TREE_THROW( - xml_parser_error("read error", filename, 0)); - v.push_back(0); // zero-terminate - - try { - // Parse using appropriate flags - const int f_tws = parse_normalize_whitespace - | parse_trim_whitespace; - const int f_c = parse_comment_nodes; - // Some compilers don't like the bitwise or in the template arg. - const int f_tws_c = parse_normalize_whitespace - | parse_trim_whitespace - | parse_comment_nodes; - xml_document<Ch> doc; - if (flags & no_comments) { - if (flags & trim_whitespace) - doc.BOOST_NESTED_TEMPLATE parse<f_tws>(&v.front()); - else - doc.BOOST_NESTED_TEMPLATE parse<0>(&v.front()); - } else { - if (flags & trim_whitespace) - doc.BOOST_NESTED_TEMPLATE parse<f_tws_c>(&v.front()); - else - doc.BOOST_NESTED_TEMPLATE parse<f_c>(&v.front()); - } - - // Create ptree from nodes - Ptree local; - for (xml_node<Ch> *child = doc.first_node(); - child; child = child->next_sibling()) - read_xml_node(child, local, flags); - - // Swap local and result ptrees - pt.swap(local); - } catch (parse_error &e) { - long line = static_cast<long>( - std::count(&v.front(), e.where<Ch>(), Ch('\n')) + 1); - BOOST_PROPERTY_TREE_THROW( - xml_parser_error(e.what(), filename, line)); - } - } - -} } } - -#endif |