#include "TinyXmlUtils.h" #include using namespace TinyXmlUtils; Element DocumentReader::operator[](const std::string_view elem) const { return Element(m_Doc.FirstChildElement(elem.empty() ? nullptr : elem.data()), elem); } Element::Element(tinyxml2::XMLElement* xmlElem, const std::string_view elem) : m_IteratedName{ elem }, m_Elem{ xmlElem } { } Element Element::operator[](const std::string_view elem) const { const auto* usedElem = elem.empty() ? nullptr : elem.data(); auto* toReturn = m_Elem ? m_Elem->FirstChildElement(usedElem) : nullptr; return Element(toReturn, m_IteratedName); } ElementIterator Element::begin() { return ElementIterator(m_Elem ? m_Elem->FirstChildElement() : nullptr); } ElementIterator Element::end() { return ElementIterator(nullptr); } ElementIterator::ElementIterator(tinyxml2::XMLElement* elem) : m_CurElem{ elem } { } ElementIterator& ElementIterator::operator++() { if (m_CurElem) m_CurElem = m_CurElem->NextSiblingElement(); return *this; }