diff options
author | Mitya Selivanov <automainint@guattari.tech> | 2024-07-14 21:12:37 +0200 |
---|---|---|
committer | Mitya Selivanov <automainint@guattari.tech> | 2024-07-14 21:12:37 +0200 |
commit | 30740ca4131d1f574718262451b4410207dc8d4e (patch) | |
tree | fc88b16a216079397ad85b9c6b1a1c1c5712a814 /kit/xml.h | |
parent | 5e3c99bb1cf1d03ea006300121265571f5008fd2 (diff) | |
download | saw-30740ca4131d1f574718262451b4410207dc8d4e.zip |
Reworking the build system
Diffstat (limited to 'kit/xml.h')
-rw-r--r-- | kit/xml.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/kit/xml.h b/kit/xml.h new file mode 100644 index 0000000..a4dd3d1 --- /dev/null +++ b/kit/xml.h @@ -0,0 +1,64 @@ +#ifndef KIT_XML_H +#define KIT_XML_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_ { + i8 is_declaration; + 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 { + s32 status; + kit_xml_t xml; +} kit_xml_parse_result_t; + +typedef struct { + s32 status; + kit_str_builder_t text; +} kit_xml_text_t; + +kit_xml_parse_result_t kit_xml_parse(kit_is_handle_t is, + kit_allocator_t *alloc); +kit_xml_text_t kit_xml_print(kit_xml_t *xml, kit_allocator_t *alloc); +kit_xml_text_t kit_xml_full_text(kit_xml_t *xml, + kit_allocator_t *alloc); +b8 kit_xml_has_property(kit_xml_t *xml, kit_str_t name); +kit_str_t kit_xml_property(kit_xml_t *xml, kit_str_t name); +void kit_xml_destroy(kit_xml_t *xml); + +#ifdef __cplusplus +} +#endif + +#define xml_t kit_xml_t +#define xml_property_t kit_xml_property_t +#define xml_parse_result_t kit_xml_parse_result_t +#define xml_text_t kit_xml_text_t +#define xml_parse kit_xml_parse +#define xml_print kit_xml_print +#define xml_full_text kit_xml_full_text +#define xml_has_property kit_xml_has_property +#define xml_property kit_xml_property +#define xml_destroy kit_xml_destroy + +#endif |