#ifndef HASHTABLE #define HASHTABLE typedef struct HashPair { char* key; void* value; } pair_t; pair_t init_pair(char* key, void* value); typedef struct HashTable { pair_t* pairs; int capacity; int itemCount; struct HashTable* parent; } hashtable_t; hashtable_t* init_hashtable(unsigned int capacity, hashtable_t* parent); void destroy_hashtable(hashtable_t* hashtable); unsigned int get_hash(char* str); unsigned int hashtable_add_pair(hashtable_t* hashtable, pair_t pair); unsigned int hashtable_update_pair_recurse(hashtable_t* origin, pair_t pair); pair_t hashtable_get_pair(hashtable_t* hashtable, char* key); pair_t hashtable_get_pair_recurse(hashtable_t* origin, char* key); #endif