void _eina_simple_xml_node_tag_free(Eina_Simple_XML_Node_Tag *tag) { while (tag->children) { Eina_Simple_XML_Node *n = EINA_INLIST_CONTAINER_GET (tag->children, Eina_Simple_XML_Node); if (n->type == EINA_SIMPLE_XML_NODE_TAG) _eina_simple_xml_node_tag_free((Eina_Simple_XML_Node_Tag *)n); else _eina_simple_xml_node_data_free((Eina_Simple_XML_Node_Data *)n); } while (tag->attributes) { Eina_Simple_XML_Attribute *a = EINA_INLIST_CONTAINER_GET (tag->attributes, Eina_Simple_XML_Attribute); eina_simple_xml_attribute_free(a); } if (tag->base.parent) tag->base.parent->children = eina_inlist_remove (tag->base.parent->children, EINA_INLIST_GET(&tag->base)); eina_stringshare_del(tag->name); EINA_MAGIC_SET(&tag->base, EINA_MAGIC_NONE); eina_mempool_free(_eina_simple_xml_tag_mp, tag); }
EAPI void eina_simple_xml_node_doctype_free(Eina_Simple_XML_Node_Data *node) { EINA_MAGIC_CHECK_DATA(&node->base); if (node->base.type != EINA_SIMPLE_XML_NODE_DOCTYPE) { ERR("expected node of type: doctype!"); return; } _eina_simple_xml_node_data_free(node); }
EAPI void eina_simple_xml_node_comment_free(Eina_Simple_XML_Node_Data *node) { EINA_MAGIC_CHECK_DATA(&node->base); if (node->base.type != EINA_SIMPLE_XML_NODE_COMMENT) { ERR("expected node of type: comment!"); return; } _eina_simple_xml_node_data_free(node); }
EAPI void eina_simple_xml_node_processing_free(Eina_Simple_XML_Node_Data *node) { EINA_MAGIC_CHECK_DATA(&node->base); if (node->base.type != EINA_SIMPLE_XML_NODE_PROCESSING) { ERR("expected node of type: processing!"); return; } _eina_simple_xml_node_data_free(node); }