This commit is contained in:
mykola2312 2022-04-17 16:19:49 +03:00
parent c2aa8c3619
commit 688a343a92
3 changed files with 47 additions and 0 deletions

26
array.c Normal file
View file

@ -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)
{
}

20
array.h Normal file
View file

@ -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

View file

@ -5,6 +5,7 @@
#include <stdint.h>
typedef unsigned int uint;
#define CU_UINT_SIZE sizeof(uint)
typedef void* cu_ptr;
#define CU_PTR_SIZE sizeof(cu_ptr)