From 07c1d3c90512f5fa057e7eff7d307cffe6258111 Mon Sep 17 00:00:00 2001 From: Jonathan Beck Date: Sat, 18 Jul 2009 12:08:13 +0200 Subject: Add function to get parent node in API and python bindings. --- include/plist/plist.h | 7 +++++++ src/plist.c | 5 +++++ swig/plist.i | 8 ++++++++ 3 files changed, 20 insertions(+) diff --git a/include/plist/plist.h b/include/plist/plist.h index a075fc6..6388603 100644 --- a/include/plist/plist.h +++ b/include/plist/plist.h @@ -147,6 +147,13 @@ extern "C" { */ PLIST_API plist_t plist_get_prev_sibling(plist_t node); +/** + * Get the parent of a node + * + * @param node the parent (NULL if node is root) + */ + PLIST_API plist_t plist_get_parent(plist_t node); + /** * Get the nth child of a #PLIST_ARRAY node. * diff --git a/src/plist.c b/src/plist.c index 8c326af..143418d 100644 --- a/src/plist.c +++ b/src/plist.c @@ -195,6 +195,11 @@ plist_t plist_get_prev_sibling(plist_t node) return (plist_t) g_node_prev_sibling((GNode *) node); } +plist_t plist_get_parent(plist_t node) +{ + return node ? (plist_t) ((GNode *) node)->parent : NULL; +} + plist_t plist_get_array_nth_el(plist_t node, uint32_t n) { plist_t ret = NULL; diff --git a/swig/plist.i b/swig/plist.i index b6f9f78..7240817 100644 --- a/swig/plist.i +++ b/swig/plist.i @@ -141,6 +141,14 @@ typedef struct { return NULL; } + PListNode* get_parent() { + plist_t node = plist_get_parent( $self->node ); + if (node) { + return allocate_wrapper(node, 1); + } + return NULL; + } + %newobject as_key; char* as_key() { char* k = NULL; -- cgit v1.1-32-gdbae