From 688a343a926d18f928d7a3fefcfc15cb950b8bc4 Mon Sep 17 00:00:00 2001 From: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Sun, 17 Apr 2022 16:19:49 +0300 Subject: [PATCH] array --- array.c | 26 ++++++++++++++++++++++++++ array.h | 20 ++++++++++++++++++++ cutypes.h | 1 + 3 files changed, 47 insertions(+) create mode 100644 array.c create mode 100644 array.h diff --git a/array.c b/array.c new file mode 100644 index 0000000..7257f3f --- /dev/null +++ b/array.c @@ -0,0 +1,26 @@ +#include "array.h" +#include "cutil.h" + +array_t* array_create(uint size, uint align, uint reserve) +{ + uint capacity = reserve + ? (reserve / align + !!(reserve % align)) * align + : align; + array_t* array = (array_t*)cu_malloc(CU_ARRAY_HEAD_SIZE + capacity*size); + if (!array) return NULL; + + array->size = size; + array->count = 0; + array->align = align; + return array; +} + +void array_delete(array_t* array) +{ + cu_free(array); +} + +void* array_push(array_t* array, const void* data) +{ + +} diff --git a/array.h b/array.h new file mode 100644 index 0000000..6a7a055 --- /dev/null +++ b/array.h @@ -0,0 +1,20 @@ +#ifndef __ARRAY_H +#define __ARRAY_H + +#include "cutypes.h" + +typedef struct { + uint size; + uint count; + uint align; + uint8_t data[1]; +} array_t; + +#define CU_ARRAY_HEAD_SIZE (sizeof(uint) * 3) + +array_t* array_create(uint size, uint align, uint reserve); +void array_delete(array_t* array); + +void* array_push(array_t* array, const void* data); + +#endif \ No newline at end of file diff --git a/cutypes.h b/cutypes.h index 4b34de4..d2ed3c0 100644 --- a/cutypes.h +++ b/cutypes.h @@ -5,6 +5,7 @@ #include typedef unsigned int uint; +#define CU_UINT_SIZE sizeof(uint) typedef void* cu_ptr; #define CU_PTR_SIZE sizeof(cu_ptr)