44 lines
847 B
C
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
|