From: skeezix Date: Sat, 6 Mar 2010 04:30:28 +0000 (-0500) Subject: Added get_size() func X-Git-Tag: Release-2010-05/1~80 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d005081dea04fd0dde2abe8f6a48562fe608d031;p=pandora-libraries.git Added get_size() func --- 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 ); +}