55 lines
786 B
C
55 lines
786 B
C
|
|
#include <debug.h>
|
|
|
|
#include "struct.h"
|
|
#include "clear.h"
|
|
|
|
void linked_list_deep_clear(
|
|
struct linked_list* list,
|
|
size_t link_offset)
|
|
{
|
|
ENTER;
|
|
|
|
for (struct value* head = list->head, *next; head; head = next)
|
|
{
|
|
struct link* link = (void*) head + link_offset;
|
|
|
|
next = link->next;
|
|
|
|
link->prev = NULL;
|
|
link->next = NULL;
|
|
|
|
link->in_set = false;
|
|
}
|
|
|
|
list->head = NULL;
|
|
|
|
list->tail = NULL;
|
|
|
|
EXIT;
|
|
}
|
|
|
|
void linked_list_shallow_clear(
|
|
struct linked_list* list)
|
|
{
|
|
ENTER;
|
|
|
|
list->head = NULL;
|
|
|
|
list->tail = NULL;
|
|
|
|
EXIT;
|
|
}
|
|
|
|
void link_clear(
|
|
struct link* link)
|
|
{
|
|
ENTER;
|
|
|
|
link->prev = NULL;
|
|
|
|
link->next = NULL;
|
|
|
|
EXIT;
|
|
}
|
|
|