#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