31 lines
No EOL
816 B
C
31 lines
No EOL
816 B
C
#ifndef __CUTIL_ARRAY_H
|
|
#define __CUTIL_ARRAY_H
|
|
|
|
#include "cutypes.h"
|
|
|
|
typedef struct {
|
|
void* mem;
|
|
uint size;
|
|
uint count;
|
|
uint align;
|
|
} array_t;
|
|
|
|
void array_init(array_t* array, uint size, uint align);
|
|
void array_clear(array_t* array);
|
|
|
|
#define array_at(array, i) ((u8*)(array)->mem + (i)*(array)->size)
|
|
#define array_first(array) array_at(array, 0)
|
|
#define array_last(array) array_at(array, (array)->count - 1)
|
|
|
|
uint array_align(array_t* array, uint count);
|
|
void array_resize(array_t* array, uint newCount);
|
|
|
|
#define CU_ARRAY_FOREACH(array) \
|
|
for (uint i = 0; i < (array)->count; i++)
|
|
|
|
void array_push(array_t* array, const void* data);
|
|
void array_pop(array_t* array, void* src);
|
|
void array_insert(array_t* array, uint idx, const void* data);
|
|
void array_remove(array_t* array, uint idx);
|
|
|
|
#endif |