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_tag_free(Eina_Simple_XML_Node_Tag *tag) { EINA_MAGIC_CHECK_TAG(&tag->base); if (tag->base.type != EINA_SIMPLE_XML_NODE_TAG) { ERR("expected tag node!"); return; } _eina_simple_xml_node_tag_free(tag); }
EAPI void eina_simple_xml_node_root_free(Eina_Simple_XML_Node_Root *root) { if (!root) return; EINA_MAGIC_CHECK_TAG(&root->base); if (root->base.type != EINA_SIMPLE_XML_NODE_ROOT) { ERR("expected root node!"); return; } _eina_simple_xml_node_tag_free(root); }