diff options
Diffstat (limited to 'include/darray.h')
-rw-r--r-- | include/darray.h | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/include/darray.h b/include/darray.h index f20cb82..5c7c170 100644 --- a/include/darray.h +++ b/include/darray.h @@ -5,18 +5,33 @@ 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 unk4;
- u32 elementSz;
- s32 unkC;
- s32 unk10;
+ s32 capacity;
+ u32 elemSz;
+ s32 growAmount;
+ DtorFunction elemDtor;
char *buf;
} DArray;
-void *ArrayNew(s32 p1, s32 p3, s32 p6);
-void *ArrayNth(DArray *p1, s32 p2);
-void *ArrayMapBackwards2(DArray *p1, s32 p2, s32 p3);
+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
}
|