summaryrefslogtreecommitdiff
path: root/source/kit/xml.h
diff options
context:
space:
mode:
authorMitya Selivanov <automainint@guattari.tech>2023-09-12 16:21:29 +0200
committerMitya Selivanov <automainint@guattari.tech>2023-09-12 16:21:29 +0200
commitd403ce66efb9b1150d103bc3b15eeaad312553a8 (patch)
treea824b6ebb995b7a6794efa7f10060bf9ae74e066 /source/kit/xml.h
parent3466546567bb2a4014c221523bbb04c1860916f5 (diff)
downloadkit-d403ce66efb9b1150d103bc3b15eeaad312553a8.zip
Update TODO
Diffstat (limited to 'source/kit/xml.h')
-rw-r--r--source/kit/xml.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/source/kit/xml.h b/source/kit/xml.h
new file mode 100644
index 0000000..409c835
--- /dev/null
+++ b/source/kit/xml.h
@@ -0,0 +1,50 @@
+#ifndef KIT_XML_H
+#define KIT_XML_H
+
+#include "status.h"
+#include "string_builder.h"
+#include "input_stream.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct kit_xml_ kit_xml_t;
+
+typedef struct {
+ kit_str_builder_t name;
+ kit_str_builder_t value;
+} kit_xml_property_t;
+
+typedef KIT_DA(kit_xml_property_t) kit_da_xml_property_t;
+typedef KIT_DA(kit_xml_t) kit_da_xml_t;
+
+struct kit_xml_ {
+ kit_str_builder_t tag;
+ kit_str_builder_t text;
+ kit_str_builder_t tail;
+ kit_da_xml_property_t properties;
+ kit_da_xml_t children;
+};
+
+typedef struct {
+ kit_status_t status;
+ kit_xml_t *xml;
+} kit_xml_parse_result_t;
+
+typedef struct {
+ kit_status_t status;
+ kit_str_builder_t xml;
+} kit_xml_print_result_t;
+
+kit_xml_parse_result_t kit_xml_parse(kit_is_handle_t is,
+ kit_allocator_t *alloc);
+kit_xml_print_result_t kit_xml_print(kit_xml_t *xml,
+ kit_allocator_t *alloc);
+void kit_xml_destroy(kit_xml_t *xml);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif