32 #include <boost/iterator.hpp>
33 #include <boost/iterator/function_input_iterator.hpp>
34 #include <boost/range.hpp>
35 #include <QDomElement>
44 class DomSiblingsIterator :
public boost::iterator_facade<
47 boost::single_pass_traversal_tag,
52 const QString TagName_;
57 : Elem_ { firstChild }
58 , TagName_ { tagName }
64 Elem_ = Elem_.nextSiblingElement (TagName_);
74 return Elem_ == other.Elem_;
105 inline auto DomChildren (
const QDomNode& parent,
const QString& tag)
107 auto child = parent.firstChildElement (tag);
108 return boost::make_iterator_range<detail::DomSiblingsIterator> ({ child, tag }, {});