// Copyright (c) 2023 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #pragma once #include "dawnsharedlibs.hpp" namespace Dawn { enum XmlParseState { XML_PARSE_STATE_DOING_NOTHING, XML_PARSE_STATE_PARSING_TAG_NAME, XML_PARSE_STATE_LOOKING_FOR_ATTRIBUTE, XML_PARSE_STATE_PARSING_ATTRIBUTE_NAME, XML_PARSE_STATE_LOOKING_FOR_ATTRIBUTE_VALUE, XML_PARSE_STATE_PARSING_ATTRIBUTE_VALUE, XML_PARSE_STATE_PARSING_VALUE, XML_PARSE_STATE_PARSING_CHILD, XML_PARSE_STATE_PARSING_CLOSE, XML_PARSE_STATE_PARSING_COMMENT }; class Xml { protected: static bool_t isWhitespace(char_t c); public: static Xml load(std::string data); static void load(Xml *xml, std::string data, size_t *j); std::string node; std::string value; std::map attributes; std::vector children; std::vector getChildrenOfType(std::string type); Xml * getFirstChildOfType(std::string type); ~Xml(); }; }