30 lines
669 B
C
30 lines
669 B
C
#ifndef UNDAR_LIST_H
|
|
#define UNDAR_LIST_H
|
|
|
|
#include "libc.h"
|
|
|
|
typedef struct node_s Node;
|
|
struct node_s {
|
|
u32 size;
|
|
struct node_s *next;
|
|
};
|
|
|
|
typedef struct list_s List;
|
|
struct list_s {
|
|
Node *head;
|
|
Node *tail;
|
|
u32 count;
|
|
};
|
|
|
|
typedef bool (*compare_fn)(void *data, void *target);
|
|
typedef bool (*list_iter_fn)(void *data);
|
|
|
|
List *List_init(Arena *arena);
|
|
void *node_value(Node *n);
|
|
void *List_push(Arena *arena, List *list, void *data, u32 data_size);
|
|
void List_map(List *list, list_iter_fn func);
|
|
void *List_find(List *list, compare_fn compare, void *target);
|
|
void *List_get(List *list, u32 index);
|
|
void List_set(List *list, u32 index, void *data, u32 size);
|
|
|
|
#endif |