1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#ifndef POKEREVO_DARRAY_H
#define POKEREVO_DARRAY_H
#ifdef __cplusplus
extern "C" {
#endif
typedef s32 (*CompareFunction)(const void *, const void *);
typedef BOOL (*MapFunction)(const void *, s32);
typedef void (*DtorFunction)(void *);
typedef struct DArray {
s32 size;
s32 capacity;
u32 elemSz;
s32 growAmount;
DtorFunction elemDtor;
char *buf;
} DArray;
DArray *ArrayNew(u32 elemSz, s32 initialCap, DtorFunction dtor);
void ArrayFree(DArray *d);
s32 ArrayLength(DArray *d);
void *ArrayNth(DArray *d, s32 n);
void ArrayAppend(DArray *d, void *elem);
void ArrayInsertSorted(DArray *d, void *elem, CompareFunction compar);
void ArrayRemoveAt(DArray *d, s32 n);
void ArrayDeleteAt(DArray *d, s32 n);
void ArrayReplaceAt(DArray *d, void *elem, s32 n);
void ArraySort(DArray *d, CompareFunction compar);
s32 ArraySearch(DArray *d, void *elem, CompareFunction cmp, s32 start, s32 doBinarySearch);
void ArrayMapBackwards(DArray *d, MapFunction map, s32 p3);
void *ArrayMapBackwards2(DArray *d, MapFunction map, s32 p3);
void ArrayClear(DArray *d);
#ifdef __cplusplus
}
#endif
#endif //POKEREVO_DARRAY_H
|