diff options
| author | Carl Hetherington <cth@carlh.net> | 2024-02-25 19:50:41 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2024-03-19 09:30:42 +0100 |
| commit | d1d86684114447809c762a78e8e5cb821e1253fc (patch) | |
| tree | 7b0783816fadd24173e4fd6de3765f337f8ad958 /src | |
| parent | a0ca8f600cd5bbf3b942b276fc870083de4e1b0a (diff) | |
Optionally (with --c++17) use libxml++-4.0 and C++17.
Diffstat (limited to 'src')
| -rw-r--r-- | src/cxml.cc | 16 | ||||
| -rw-r--r-- | src/cxml.h | 3 |
2 files changed, 13 insertions, 6 deletions
diff --git a/src/cxml.cc b/src/cxml.cc index 75da11f..d5c3fdb 100644 --- a/src/cxml.cc +++ b/src/cxml.cc @@ -105,14 +105,16 @@ cxml::Node::node_children (string name) const throw cxml::Error("Node has no internal xmlpp node; did you forget to call a read method on cxml::Document?"); } + auto const glib_name = Glib::ustring(name); + vector<shared_ptr<cxml::Node>> n; for (auto i: _node->get_children()) { - if (i->get_name() == name) { + if (i->get_name() == glib_name) { n.push_back(make_shared<Node>(i)); } } - _taken.push_back (name); + _taken.push_back(glib_name); return n; } @@ -215,7 +217,7 @@ void cxml::Node::done () const { for (auto i: _node->get_children()) { - if (dynamic_cast<xmlpp::Element *> (i) && find (_taken.begin(), _taken.end(), i->get_name()) == _taken.end ()) { + if (dynamic_cast<xmlpp::Element*>(i) && find(_taken.begin(), _taken.end(), i->get_name()) == _taken.end()) { throw cxml::Error ("unexpected XML node " + i->get_name()); } } @@ -304,7 +306,7 @@ cxml::Document::take_root_node () } _node = _parser->get_document()->get_root_node (); - if (!_root_name.empty() && _node->get_name() != _root_name) { + if (!_root_name.empty() && _node->get_name() != Glib::ustring(_root_name)) { throw cxml::Error ("unrecognised root node " + _node->get_name() + " (expecting " + _root_name + ")"); } else if (_root_name.empty ()) { _root_name = _node->get_name (); @@ -475,12 +477,16 @@ cxml::raw_convert (string v) xmlpp::Element* cxml::add_child(xmlpp::Element* parent, string const& name, string const& ns_prefix) { +#if LIBXMLXX_MAJOR_VERSION == 2 return parent->add_child(name, ns_prefix); +#else + return parent->add_child_element(name, ns_prefix); +#endif } void cxml::add_text_child(xmlpp::Element* parent, string const& name, string const& text) { - parent->add_child(name)->add_child_text(text); + add_child(parent, name)->add_child_text(text); } @@ -21,6 +21,7 @@ #ifndef LIBCXML_CXML_H #define LIBCXML_CXML_H +#include <glibmm/ustring.h> #include <boost/optional.hpp> #include <boost/filesystem.hpp> #include <boost/algorithm/string/erase.hpp> @@ -238,7 +239,7 @@ protected: xmlpp::Node* _node; private: - mutable std::vector<std::string> _taken; + mutable std::vector<Glib::ustring> _taken; }; typedef std::shared_ptr<cxml::Node> NodePtr; |
