-- added list delete functions

This commit is contained in:
pfelt
2008-03-18 02:42:05 +00:00
parent d8f4a2c9c6
commit 362bdba3f1
2 changed files with 61 additions and 0 deletions
+2
View File
@@ -332,6 +332,7 @@ BongoList *BongoListReverse(BongoList *list);
void BongoListFree(BongoList *list);
void BongoListFreeDeep(BongoList *list);
int BongoListLength(BongoList *list);
BOOL BongoListDelete(BongoList *list, void *data);
BongoSList *BongoSListCopy(BongoSList *slist);
BongoSList *BongoSListAppend(BongoSList *slist, void *data);
@@ -341,6 +342,7 @@ BongoSList *BongoSListReverse(BongoSList *slist);
void BongoSListFree(BongoSList *slist);
void BongoSListFreeDeep(BongoSList *slist);
int BongoSListLength(BongoSList *slist);
BOOL BongoSListDelete(BongoSList *list, void *data);
/** end lists.c **/
+59
View File
@@ -18,6 +18,7 @@
* may find current contact information at www.novell.com.
* </Novell-copyright>
****************************************************************************/
// (C) 2008 Patrick Felt
#include <config.h>
#include <xpl.h>
@@ -158,6 +159,34 @@ BongoSListLength(BongoSList *slist)
return i;
}
BOOL
BongoSListDelete(BongoSList *list, void *data)
{
BongoSList *cur=list;
BongoSList *prev=NULL;
BOOL result=FALSE;
if (!list) {
return result;
}
while (cur) {
if (cur->data == data) {
result=TRUE;
/* unlink this item */
if (prev) {
prev->next = cur->next;
}
MemFree(cur);
break;
}
prev=cur;
cur=cur->next;
}
return result;
}
BongoList *
BongoListCopy(BongoList *list)
@@ -298,3 +327,33 @@ BongoListLength(BongoList *list)
}
return i;
}
BOOL
BongoListDelete(BongoList *list, void *data)
{
BOOL result=FALSE;
BongoList *cur=list;
if (!list) {
return result;
}
while (cur) {
if (cur->data == data) {
result=TRUE;
/* unlink this item */
if (cur->prev) {
cur->prev->next = cur->next;
}
if (cur->next) {
cur->next->prev = cur->prev;
}
MemFree(cur);
break;
}
cur = cur->next;
}
return result;
}