#include "../includes/dictionary.h" #include #include #include #define DEFAULT_DICT_SIZE 64 struct _dictionary { int Capacity; int Size; KeyValPair** Pairs; }; struct _dictionary* DictionaryCreate(void) { struct _dictionary* dict = calloc(1, sizeof(Dictionary)); dict->Pairs = calloc(sizeof(KeyValPair*), DEFAULT_DICT_SIZE); dict->Capacity = DEFAULT_DICT_SIZE; return dict; } KeyValPair* KeyValPairCreate(const char* key, void* value) { KeyValPair* pair = calloc(1, sizeof(KeyValPair)); pair->Key = key; pair->Value = value; return pair; } int DictionaryAdd(struct _dictionary* dict, const char* key, void* value) { if (!dict) return 0; if (dict->Size == dict->Capacity) { dict->Pairs = realloc(dict->Pairs, sizeof(KeyValPair*) * dict->Capacity * 2); dict->Capacity *= 2; } dict->Pairs[dict->Size] = KeyValPairCreate(key, value); dict->Size++; return 1; } void* DictionaryGetValue(const struct _dictionary* dict, const char* key) { if (!dict) return NULL; for(int i = 0; i < dict->Size; i++) { KeyValPair* pair = dict->Pairs[i]; if (strcmp(pair->Key, key) == 0) { return pair->Value; } } return NULL; }