#include <emscripten.h>
#include <stdlib.h>

#define INVALID_ARRAY -1

EMSCRIPTEN_KEEPALIVE int accumulate(int *array, int n)
{
        int sum = 0;

        if (array == NULL) {
                return INVALID_ARRAY;
        }

        while (n--) {
                sum += *(array++);
        }

        return sum;
}

EMSCRIPTEN_KEEPALIVE void *mem_alloc(size_t size)
{
        return malloc(size);
}

EMSCRIPTEN_KEEPALIVE void mem_free(void *ptr)
{
        free(ptr);
}

EMSCRIPTEN_KEEPALIVE void *mem_calloc(size_t nmemb, size_t size)
{
        return calloc(nmemb, size);
}

EMSCRIPTEN_KEEPALIVE void *mem_realloc(void *ptr, size_t nsize)
{
        return realloc(ptr, nsize);
}

/*EMSCRIPTEN_KEEPALIVE void *mem_recalloc(void *ptr, size_t nmemb, size_t nsize)
{
        return reallocarray(ptr, nmemb, nsize);
}*/