5 void List_init(List
*l
, size_t itemsize
) {
6 memset(l
, 0, sizeof *l
);
8 l
->itemsize
= itemsize
;
11 void List_free(List
*l
) {
16 int List_add(List
*l
, void* item
) {
17 int ret
= mem_write(&l
->mem
, l
->count
* l
->itemsize
, item
, l
->itemsize
);
22 int List_get(List
*l
, size_t index
, void* item
) {
23 if(index
>= l
->count
) return 0;
24 void* src
= mem_getptr(&l
->mem
, index
* l
->itemsize
, l
->itemsize
);
26 memcpy(item
, src
, l
->itemsize
);
30 void* List_getptr(List
*l
, size_t index
) {
31 return mem_getptr(&l
->mem
, index
* l
->itemsize
, l
->itemsize
);
34 void List_sort(List
*l
, int(*compar
)(const void *, const void *)) {
35 qsort(mem_getptr(&l
->mem
, 0, l
->itemsize
* l
->count
), l
->count
, l
->itemsize
, compar
);