summaryrefslogtreecommitdiff
path: root/src/xml/XmlReader.hpp
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2014-03-06 00:11:17 +0000
committerandreas <andreas@daaaf23c-2e50-4459-9457-1e69db5a47bf>2014-03-06 00:11:17 +0000
commitd99095f4a181357bf0c6d10846351eb0b58b1ccf (patch)
tree74daacc842023b14e27aa49403ee8d4aaa8bb172 /src/xml/XmlReader.hpp
parentf098dc45183d2b7a99e65b62448f59d12cc3c056 (diff)
started to implement rudimentary XML reader (implemented expectOneOf function), changed some conventions in the used files (namespaces, include guards), moved anchor class from domain to document package, removed everything that does not work now from the CMakeLists.txt
git-svn-id: file:///var/local/svn/basicwriter@24 daaaf23c-2e50-4459-9457-1e69db5a47bf
Diffstat (limited to 'src/xml/XmlReader.hpp')
-rw-r--r--src/xml/XmlReader.hpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/xml/XmlReader.hpp b/src/xml/XmlReader.hpp
new file mode 100644
index 0000000..d8f30a7
--- /dev/null
+++ b/src/xml/XmlReader.hpp
@@ -0,0 +1,78 @@
+/*
+ Ousía
+ Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _OUSIA_XML_XML_READER_HPP_
+#define _OUSIA_XML_XML_READER_HPP_
+
+#include <functional>
+#include <memory>
+#include <vector>
+
+#include <model/GraphNode.hpp>
+#include <model/domain/Domain.hpp>
+
+class QXmlStreamReader;
+
+namespace ousia {
+namespace xml {
+
+class XmlElementHandler;
+
+/**
+ * The XmlReader class is responsible for parsing the ousia XML documents and
+ * deserializing them into the internal object representation.
+ */
+class XmlReader {
+
+private:
+ /**
+ * Reference to the QXmlStreamReader used for accessing the XML data on a
+ * token basis.
+ */
+ QXmlStreamReader &xml;
+
+ /**
+ * Parses a domain definition from the XML file.
+ */
+ std::shared_ptr<model::domain::Domain> readDomain();
+
+ /**
+ * Used internally in order to conveniently expect one of a set of elements.
+ */
+ bool expectOneOf(std::vector<XmlElementHandler> &handlers);
+
+public:
+
+ /**
+ * Instanciates the XMLReader class for the given instance of the
+ * QXMLStreamReader class.
+ */
+ XmlReader(QXmlStreamReader &xml);
+
+ /**
+ * Starts processing the xml and returns the generated graph node.
+ */
+ std::shared_ptr<model::GraphNode> process();
+
+};
+
+}
+}
+
+#endif /* _OUSIA_XML_XML_READER_HPP_ */
+