kuro/nodetable.c

42 lines
No EOL
699 B
C

#include "dat.h"
#include "fns.h"
void nodetbl_add(NodeTable* self, NodeRef* node) {
int i;
NodeRef* n;
if (self && node) {
i = (int)(node->id%256);
n = self->data[i];
if (n && n->next) {
n = n->next;
}
if (n) {
n->next = node;
} else {
n = node;
}
}
}
void nodetbl_del(NodeTable* self, uvlong id) {
NodeRef* n;
NodeRef* nprev;
if (self) {
for(int i = 0; i <= 255; i++) {
n = self->data[i];
while (n && n->id != id && n->next) {
nprev = n;
n = n->next;
}
if (n->id == id) {
if (nprev) {
nprev->next = n->next;
}
free(n);
break;
}
}
}
}