void plist_free(plist_t plist) { if (plist) { plist_free_node(plist); } }
PLIST_API void plist_free(plist_t plist) { if (plist) { plist_free_node(plist); } }
void plist_free(plist_t plist) { if (plist) { plist_free_node((node_t *)plist); } }
void plist_dict_set_item(plist_t node, const char* key, plist_t item) { if (node && PLIST_DICT == plist_get_node_type(node)) { node_t* old_item = plist_dict_get_item(node, key); if (old_item) { int idx = plist_free_node(old_item); if (idx < 0) { node_attach(node, item); } else { node_insert(node, idx, item); } } } return; }
void plist_array_set_item(plist_t node, plist_t item, uint32_t n) { if (node && PLIST_ARRAY == plist_get_node_type(node)) { plist_t old_item = plist_array_get_item(node, n); if (old_item) { int idx = plist_free_node(old_item); if (idx < 0) { node_attach(node, item); } else { node_insert(node, idx, item); } } } return; }
static int plist_free_node(node_t* node) { plist_data_t data = NULL; int index = node_detach(node->parent, node); data = plist_get_data(node); plist_free_data(data); node->data = NULL; node_iterator_t *ni = node_iterator_create(node->children); node_t *ch; while ((ch = node_iterator_next(ni))) { plist_free_node(ch); } node_iterator_destroy(ni); node_destroy(node); return index; }
void plist_free(plist_t plist) { plist_free_node(plist, NULL); g_node_destroy(plist); }