From 23798b52a0aa4bf556b06f15fb9f5923db3cc46f Mon Sep 17 00:00:00 2001
From: Marvin Borner
Date: Mon, 23 Nov 2020 17:09:28 +0100
Subject: Ported sxml library

---
 libtxt/inc/xml.h | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)
 create mode 100644 libtxt/inc/xml.h

(limited to 'libtxt/inc')

diff --git a/libtxt/inc/xml.h b/libtxt/inc/xml.h
new file mode 100644
index 0000000..43a8005
--- /dev/null
+++ b/libtxt/inc/xml.h
@@ -0,0 +1,51 @@
+// Inspired by sxml (capmar)
+// MIT License, Copyright (c) 2020 Marvin Borner
+
+#ifndef XML_H
+#define XML_H
+
+#include <def.h>
+
+enum xml_error {
+	XML_ERROR_INVALID = -1,
+	XML_SUCCESS = 0,
+	XML_ERROR_BUFFERDRY = 1,
+	XML_ERROR_TOKENSFULL = 2
+};
+
+struct xml_token {
+	u16 type;
+	u16 size;
+	u32 start_pos;
+	u32 end_pos;
+};
+
+struct xml_args {
+	const char *buffer;
+	u32 buffer_length;
+	struct xml_token *tokens;
+	u32 num_tokens;
+};
+
+enum xml_type {
+	XML_START_TAG,
+	XML_END_TAG,
+	XML_CHARACTER,
+	XML_CDATA,
+	XML_INSTRUCTION,
+	XML_DOCTYPE,
+	XML_COMMENT
+};
+
+struct xml {
+	u32 buffer_pos;
+	u32 ntokens;
+	u32 tag_level;
+};
+
+enum xml_error xml_parse(struct xml *parser, const char *buffer, u32 buffer_length,
+			 struct xml_token *tokens, u32 num_tokens);
+
+void xml_init(struct xml *parser);
+
+#endif
-- 
cgit v1.2.3