libowfat/array/iarray_get.c

13 lines
374 B
C
Raw Normal View History

2009-03-12 21:32:43 +00:00
#include "iarray.h"
void* iarray_get(iarray* ia,size_t pos) {
2014-03-29 11:17:04 +00:00
size_t index;
iarray_page* p=ia->pages[pos%(sizeof(ia->pages)/sizeof(ia->pages[0]))];
2014-06-05 16:31:06 +00:00
pos /= sizeof(ia->pages)/sizeof(ia->pages[0]);
2014-03-29 11:17:04 +00:00
for (index=0; p; p=p->next, index+=ia->elemperpage) {
if (pos>=index && pos<index+ia->elemperpage)
return &p->data[(pos-index)*ia->elemsize];
}
return 0;
2009-03-12 21:32:43 +00:00
}