undar-lang/list.h

29 lines
661 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)(void *data, 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, void *target);
void *list_get(List *list, u32 index);
void list_set(List *list, u32 index, void *data, u32 size);
#endif