29 lines
685 B
C
29 lines
685 B
C
#ifndef UNDAR_LIST_H
|
|
#define UNDAR_LIST_H
|
|
|
|
#include "libc.h"
|
|
|
|
typedef struct node_s Node;
|
|
struct node_s {
|
|
struct node_s *next;
|
|
};
|
|
|
|
typedef struct list_s List;
|
|
struct list_s {
|
|
Node *head;
|
|
Node *tail;
|
|
u32 count;
|
|
};
|
|
|
|
typedef bool (*compare_fn)(const void *data, const void *target);
|
|
typedef void (*list_iter_fn)(void *data);
|
|
|
|
List *new_list(Arena *arena);
|
|
void *node_value(Node *n);
|
|
void *list_push(Arena *arena, List *list, void *data, u32 data_size);
|
|
void list_foreach(List *list, list_iter_fn func);
|
|
void *list_find(List *list, compare_fn compare, const void *target);
|
|
void *list_get(List *list, u32 index);
|
|
void list_set(List *list, u32 index, const void *data, u32 size);
|
|
|
|
#endif |