summaryrefslogtreecommitdiff
path: root/include/SDK/DWC/gamespy/darray.h
blob: 5c7c1707721579fff7d3cf19c15278e3b825870c (plain)
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