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/xml.h') 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 + +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