#include #include #include #include "utils/StringIntMap.h" void simInit(StringIntMap* sim) { sim->capacity = 16; sim->entries = 0; sim->stringData = malloc(sizeof(const char*) * sim->capacity); sim->intData = malloc(sizeof(int) * sim->capacity); } void simDelete(StringIntMap* sim) { free(sim->stringData); free(sim->intData); } bool simSearch(StringIntMap* sim, const char* s, int* mapping) { for(int i = 0; i < sim->entries; i++) { if(strcmp(s, sim->stringData[i]) == 0) { *mapping = sim->intData[i]; return true; } } return false; } bool simAdd(StringIntMap* sim, const char* s, int* mapping) { if(simSearch(sim, s, mapping)) { return false; } else if(sim->entries >= sim->capacity) { sim->capacity *= 2; sim->stringData = realloc(sim->stringData, sizeof(const char*) * sim->capacity); sim->intData = realloc(sim->intData, sizeof(int) * sim->capacity); } int index = sim->entries++; sim->stringData[index] = s; sim->intData[index] = *mapping; return true; }