// // Created by zemon on 14.07.2022. // #include #include "SimpleIndelibleMalloc.h" void SimpleIndelibleMalloc_Init(tSimpleIndelibleMalloc *env, uint8_t *buffer, size_t size) { env->buffer = buffer; env->size = size; env->used = 0; } void SimpleIndelibleMalloc_Clear(tSimpleIndelibleMalloc *env) { memset(env->buffer, 0, env->size); } static void *SimpleIndelibleMalloc_Get(tSimpleIndelibleMalloc *env, size_t len) { if ((env->used + len) > env->size) { return 0; } void *result = env->buffer + env->used; env->used += len; return result; } static void SimpleIndelibleMalloc_Free(tSimpleIndelibleMalloc *env, void *ptr) { //do nothing, it's indelible } tMemAllocInterface SimpleIndelibleMalloc_GetInterface(tSimpleIndelibleMalloc *env) { return (tMemAllocInterface) { .env = env, .free = (void *) SimpleIndelibleMalloc_Free, .alloc = (void *) SimpleIndelibleMalloc_Get, }; }