#ifndef COLLECTION_H #define COLLECTION_H #include 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); void arena_array_push(Arena* arena, void** data, size_t* capacity, size_t* size, void* elem, size_t elem_size); #endif