diff options
-rw-r--r-- | include/plist/plist.h | 12 | ||||
-rw-r--r-- | src/plist.c | 11 |
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" void plist_dict_next_item(plist_t node, plist_dict_iter iter, char **key, plist_t *val); /** - * Get key associated to an item. Item must be member of a dictionary + * Get key associated key to an item. Item must be member of a dictionary. * - * @param node the node + * @param node the item * @param key a location to store the key. The caller is responsible for freeing the returned string. */ void plist_dict_get_item_key(plist_t node, char **key); @@ -371,6 +371,14 @@ extern "C" plist_t plist_dict_get_item(plist_t node, const char* key); /** + * Get key node associated to an item. Item must be member of a dictionary. + * + * @param node the item + * @return the key node of the given item, or NULL. + */ + plist_t plist_dict_item_get_key(plist_t node); + + /** * Set item identified by key in a #PLIST_DICT node. * The previous item identified by key will be freed using #plist_free. * 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) } } +PLIST_API plist_t plist_dict_item_get_key(plist_t node) +{ + plist_t ret = NULL; + plist_t father = plist_get_parent(node); + if (PLIST_DICT == plist_get_node_type(father)) + { + ret = (plist_t)node_prev_sibling(node); + } + return ret; +} + PLIST_API plist_t plist_dict_get_item(plist_t node, const char* key) { plist_t ret = NULL; |