From d005081dea04fd0dde2abe8f6a48562fe608d031 Mon Sep 17 00:00:00 2001 From: skeezix Date: Fri, 5 Mar 2010 23:30:28 -0500 Subject: [PATCH] Added get_size() func --- include/pnd_container.h | 1 + lib/pnd_container.c | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/include/pnd_container.h b/include/pnd_container.h index acb850e..e16381d 100644 --- a/include/pnd_container.h +++ b/include/pnd_container.h @@ -51,6 +51,7 @@ char *pnd_box_get_name ( pnd_box_handle box ); void *pnd_box_get_head ( pnd_box_handle box ); char *pnd_box_get_key ( void *node ); void *pnd_box_get_next ( void *node ); +unsigned int pnd_box_get_size ( pnd_box_handle box ); #ifdef __cplusplus } /* "C" */ diff --git a/lib/pnd_container.c b/lib/pnd_container.c index f1fdef6..bf07a20 100644 --- a/lib/pnd_container.c +++ b/lib/pnd_container.c @@ -132,6 +132,9 @@ char *pnd_box_get_name ( pnd_box_handle box ) { void *pnd_box_get_head ( pnd_box_handle box ) { pnd_box_t *p = (pnd_box_t*) box; + if ( ! p ) { + return ( NULL ); // fubar! + } if ( ! p -> head ) { return ( NULL ); } @@ -151,3 +154,24 @@ char *pnd_box_get_key ( void *node ) { pnd_box_node_t *p = PAYLOAD2NODE(node); return ( p -> key ); } + +unsigned int pnd_box_get_size ( pnd_box_handle box ) { + pnd_box_t *p = (pnd_box_t*) box; + pnd_box_node_t *n; + unsigned int count = 0; + + if ( ! p ) { + return ( 0 ); + } + + n = p -> head; + + while ( n ) { + + count++; + + n = n -> next; + } // while + + return ( count ); +} -- 2.39.5