#include "module_system.h"

#include <malloc.h>

void *BZ_MODULES[BZ_ENGINE_MODULE_COUNT] = {NULL,};

bool bzModuleIsAllocated(BzModule module) {
    return BZ_MODULES[module] != NULL;
}

void *bzModuleRetrieve(BzModule module) {
    return BZ_MODULES[module];
}

void *bzModuleAllocate(BzModule module, size_t sizeBytes) {
    if (bzModuleIsAllocated(module)) {
        bzModuleFree(module);
    }
    BZ_MODULES[module] = calloc(1, sizeBytes);
    return BZ_MODULES[module];
}

void bzModuleFree(BzModule module) {
    if (bzModuleIsAllocated(module))
        free(BZ_MODULES[module]);
    BZ_MODULES[module] = NULL;
}