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" | |||
| 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 | ||
| 621 | PLIST_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 | |||
| 621 | PLIST_API plist_t plist_dict_get_item(plist_t node, const char* key) | 632 | PLIST_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; |
