much more efficient caching

This commit is contained in:
Linus Dierheimer
2021-04-15 18:59:26 +02:00
parent ed598eaa35
commit 9bc1f2a116
35 changed files with 974 additions and 645 deletions
+36
View File
@@ -0,0 +1,36 @@
#include "FFlist.h"
#include <malloc.h>
#include <memory.h>
void ffListInit(FFlist* list, uint32_t elementSize)
{
ffListInitA(list, elementSize, FF_LIST_DEFAULT_ALLOC);
}
void ffListInitA(FFlist* list, uint32_t elementSize, uint32_t capacity)
{
list->elementSize = elementSize;
list->capacity = capacity;
list->length = 0;
list->data = malloc(list->capacity * list->elementSize);
}
void* ffListGet(FFlist* list, uint32_t index)
{
return list->data + (index * list->elementSize);
}
void* ffListAdd(FFlist* list)
{
if(list->length == list->capacity)
list->data = realloc(list->data, list->capacity * 2 * list->elementSize);
void* adress = list->data + (list->length * list->elementSize);
++list->length;
return adress;
}
void ffListDestroy(FFlist* list)
{
free(list->data);
}
+27
View File
@@ -0,0 +1,27 @@
#pragma once
#ifndef FF_INCLUDED_FFLIST
#define FF_INCLUDED_FFLIST
#include <stdint.h>
#define FF_LIST_DEFAULT_ALLOC 16
typedef struct FFlist
{
void* data;
uint32_t elementSize;
uint32_t length;
uint32_t capacity;
} FFlist;
void ffListInit(FFlist* list, uint32_t elementSize);
void ffListInitA(FFlist* list, uint32_t elementSize, uint32_t capacity);
void* ffListGet(FFlist* list, uint32_t index);
void* ffListAdd(FFlist* list);
void ffListDestroy(FFlist* list);
#endif
+3 -6
View File
@@ -203,7 +203,7 @@ void ffStrbufAppendVF(FFstrbuf* strbuf, const char* format, va_list arguments)
va_copy(localArguments, arguments);
ffStrbufEnsureFree(strbuf, 256);
int written = vsnprintf(strbuf->chars + strbuf->length, strbuf->allocated - strbuf->length, format, localArguments);
uint32_t written = (uint32_t) vsnprintf(strbuf->chars + strbuf->length, strbuf->allocated - strbuf->length, format, localArguments);
va_end(localArguments);
@@ -227,12 +227,12 @@ char ffStrbufGetC(FFstrbuf* strbuf, uint32_t index)
return strbuf->chars[index];
}
void ffStrbufWriteTo(FFstrbuf* strbuf, FILE* file)
void ffStrbufWriteTo(const FFstrbuf* strbuf, FILE* file)
{
fwrite(strbuf->chars, sizeof(char), strbuf->length, file);
}
void ffStrbufPutTo(FFstrbuf* strbuf, FILE* file)
void ffStrbufPutTo(const FFstrbuf* strbuf, FILE* file)
{
fwrite(strbuf->chars, sizeof(char), strbuf->length, file);
fputc('\n', file);
@@ -462,7 +462,4 @@ void ffStrbufRecalculateLength(FFstrbuf* strbuf)
void ffStrbufDestroy(FFstrbuf* strbuf)
{
free(strbuf->chars);
strbuf->allocated = 0;
strbuf->chars = NULL;
strbuf->length = 0;
}
+2 -2
View File
@@ -52,8 +52,8 @@ void ffStrbufAppendVF(FFstrbuf* strbuf, const char* format, va_list arguments);
char ffStrbufGetC(FFstrbuf* strbuf, uint32_t index);
void ffStrbufWriteTo(FFstrbuf* strbuf, FILE* file);
void ffStrbufPutTo(FFstrbuf* strbuf, FILE* file);
void ffStrbufWriteTo(const FFstrbuf* strbuf, FILE* file);
void ffStrbufPutTo(const FFstrbuf* strbuf, FILE* file);
int ffStrbufComp(FFstrbuf* strbuf, const FFstrbuf* comp);
int ffStrbufCompS(FFstrbuf* strbuf, const char* comp);