#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 #ifndef KIT_DISABLE_SHORT_NAMES # 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 #endif