larpcc/collection.h
2026-09-19 03:02:59 +02:00

44 lines
847 B
C

#ifndef COLLECTION_H
#define COLLECTION_H
#include <stddef.h>
void array_push(
void** data, size_t* capacity, size_t* size, void* elem, size_t elem_size);
typedef struct {
char* key;
void* val;
} KwPair;
typedef struct {
KwPair* entries;
size_t entries_capacity;
size_t entries_size;
} Hashmap;
void hashmap_init(Hashmap* m);
void hashmap_deinit(Hashmap* m);
void hashmap_set(Hashmap* m, const char* key, void* val);
void* hashmap_get(Hashmap* m, const char* key);
typedef struct {
unsigned char* data;
size_t cap;
size_t offset;
} ArenaBucket;
typedef struct {
ArenaBucket* buckets;
size_t buckets_cap;
size_t buckets_size;
size_t default_bucket_cap;
} Arena;
void arena_init(Arena* a, size_t bucket_cap);
void arena_deinit(Arena* a);
void* arena_alloc(Arena* a, size_t size);
#endif