array
This commit is contained in:
parent
c2aa8c3619
commit
688a343a92
3 changed files with 47 additions and 0 deletions
26
array.c
Normal file
26
array.c
Normal 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
20
array.h
Normal 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
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue