summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/plist/plist.h12
-rw-r--r--src/plist.c11
2 files changed, 21 insertions, 2 deletions
diff --git a/include/plist/plist.h b/include/plist/plist.h
index bba735d..7a41fb4 100644
--- a/include/plist/plist.h
+++ b/include/plist/plist.h
@@ -353,9 +353,9 @@ extern "C"
353 void plist_dict_next_item(plist_t node, plist_dict_iter iter, char **key, plist_t *val); 353 void plist_dict_next_item(plist_t node, plist_dict_iter iter, char **key, plist_t *val);
354 354
355 /** 355 /**
356 * Get key associated to an item. Item must be member of a dictionary 356 * Get key associated key to an item. Item must be member of a dictionary.
357 * 357 *
358 * @param node the node 358 * @param node the item
359 * @param key a location to store the key. The caller is responsible for freeing the returned string. 359 * @param key a location to store the key. The caller is responsible for freeing the returned string.
360 */ 360 */
361 void plist_dict_get_item_key(plist_t node, char **key); 361 void plist_dict_get_item_key(plist_t node, char **key);
@@ -371,6 +371,14 @@ extern "C"
371 plist_t plist_dict_get_item(plist_t node, const char* key); 371 plist_t plist_dict_get_item(plist_t node, const char* key);
372 372
373 /** 373 /**
374 * Get key node associated to an item. Item must be member of a dictionary.
375 *
376 * @param node the item
377 * @return the key node of the given item, or NULL.
378 */
379 plist_t plist_dict_item_get_key(plist_t node);
380
381 /**
374 * Set item identified by key in a #PLIST_DICT node. 382 * Set item identified by key in a #PLIST_DICT node.
375 * The previous item identified by key will be freed using #plist_free. 383 * The previous item identified by key will be freed using #plist_free.
376 * If there is no item for the given key a new item will be inserted. 384 * If there is no item for the given key a new item will be inserted.
diff --git a/src/plist.c b/src/plist.c
index dd659b8..29dbfb7 100644
--- a/src/plist.c
+++ b/src/plist.c
@@ -618,6 +618,17 @@ PLIST_API void plist_dict_get_item_key(plist_t node, char **key)
618 } 618 }
619} 619}
620 620
621PLIST_API plist_t plist_dict_item_get_key(plist_t node)
622{
623 plist_t ret = NULL;
624 plist_t father = plist_get_parent(node);
625 if (PLIST_DICT == plist_get_node_type(father))
626 {
627 ret = (plist_t)node_prev_sibling(node);
628 }
629 return ret;
630}
631
621PLIST_API plist_t plist_dict_get_item(plist_t node, const char* key) 632PLIST_API plist_t plist_dict_get_item(plist_t node, const char* key)
622{ 633{
623 plist_t ret = NULL; 634 plist_t ret = NULL;