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
41
42
|
#ifndef POKEREVO_DARRAY_H
#define POKEREVO_DARRAY_H
#ifdef __cplusplus
extern "C" {
#endif
#include "types.h"
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 *p1);
s32 ArrayLength(DArray *arr);
void *ArrayNth(DArray *arr, s32 n);
void ArrayAppend(DArray *p1, void *elem);
ArrayInsertSorted(DArray *p1, void *p2, CompareFunction compar);
void ArrayRemoveAt(DArray *p1, s32 n);
void ArrayDeleteAt(DArray *p1, s32 n);
void ArrayReplaceAt(DArray *p1, void *elem, s32 n);
void ArraySort(DArray *p1, CompareFunction compar);
s32 ArraySearch(DArray *p1, void *elem, CompareFunction cmp, s32 p4, s32 p5);
void ArrayMapBackwards(DArray *p1, MapFunction p2, s32 p3);
void *ArrayMapBackwards2(DArray *p1, MapFunction p2, s32 p3);
void ArrayClear(DArray *p1);
#ifdef __cplusplus
}
#endif
#endif //POKEREVO_DARRAY_H
|