11 #include <boost/iterator.hpp>
12 #include <boost/iterator/function_input_iterator.hpp>
13 #include <boost/range.hpp>
14 #include <QDomElement>
23 class DomSiblingsIterator :
public boost::iterator_facade<
26 boost::single_pass_traversal_tag,
31 const QString TagName_;
36 : Elem_ { firstChild }
37 , TagName_ { tagName }
43 Elem_ = Elem_.nextSiblingElement (TagName_);
53 return Elem_ == other.Elem_;
84 inline auto DomChildren (
const QDomNode& parent,
const QString& tag)
86 auto child = parent.firstChildElement (tag);
87 return boost::make_iterator_range<detail::DomSiblingsIterator> ({ child, tag }, {});