-- added list delete functions
This commit is contained in:
@@ -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 **/
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user