disassembler: further optimize fixup lookup
[rofl0r-agsutils.git] / List.c
blobe40d9a520bca1630523eeaaa2ed5ab79a5c945c5
1 #include "List.h"
2 #include <string.h>
3 #include <stdlib.h>
5 void List_init(List *l, size_t itemsize) {
6 memset(l, 0, sizeof *l);
7 l->mem = &l->mem_b;
8 mem_init(l->mem);
9 l->itemsize = itemsize;
12 void List_free(List *l) {
13 mem_free(l->mem);
14 List_init(l, 0);
17 int List_add(List *l, void* item) {
18 int ret = mem_write(l->mem, l->count * l->itemsize, item, l->itemsize);
19 if(ret) l->count++;
20 return ret;
23 int List_get(List *l, size_t index, void* item) {
24 if(index >= l->count) return 0;
25 void* src = mem_getptr(l->mem, index * l->itemsize, l->itemsize);
26 if(!src) return 0;
27 memcpy(item, src, l->itemsize);
28 return 1;
31 void List_sort(List *l, int(*compar)(const void *, const void *)) {
32 qsort(mem_getptr(l->mem, 0, l->itemsize * l->count), l->count, l->itemsize, compar);