/********************************************************
* File: jblist.c
* Created at Sun Jan 28 22:10:27 MSK 2001 by raorn // raorn@binec.ru
* Lists manipulations
* $Id: jblist.c,v 1.5 2001/03/07 18:21:45 raorn Exp $
*******************************************************/
#include <machine/defs.h>
#include <stdlib.h>
#include <stddef.h>
#include "jblist.h"
void jbNewList(struct jbList *list)
{
list->First = NULL;
list->Last = NULL;
}
void jbAddNode(struct jbList *list, struct jbNode *node)
{
if (!list->First)
list->First = node;
else
list->Last->Next = node;
list->Last = node;
node->Next = NULL;
}
void jbFreeList(struct jbList *list)
{
struct jbNode *tmp, *tmp2;
for (tmp = list->First; tmp;) {
tmp2 = tmp->Next;
free(tmp);
tmp = tmp2;
}
list->First = NULL;
list->Last = NULL;
}
/*void jbFreeNum(struct jbList *list, ulong num)
{
struct jbNode *old = NULL, *tmp;
ulong c;
tmp = list->First;
for (c = 0; c < num && tmp; c++) {
if (c == num - 1)
old = tmp;
tmp = tmp->Next;
}
if (c == num) {
if (old)
old->Next = tmp->Next;
if (num == 0)
list->First = tmp->Next;
if (tmp->Next == NULL)
list->Last = old;
free(tmp);
}
}*/
void jbFreeNode(struct jbList *list, struct jbNode *node)
{
struct jbNode *old = NULL, *tmp;
for (tmp = list->First; tmp; tmp = tmp->Next) {
if (tmp->Next == node)
old = tmp;
if (tmp == node)
break;
}
if (tmp == node) {
if (old)
old->Next = tmp->Next;
if (node == list->First)
list->First = tmp->Next;
if (tmp->Next == NULL)
list->Last = old;
free(tmp);
}
}
syntax highlighted by Code2HTML, v. 0.9.1