Mercurial > dillo_port1.3
view src/list.h @ 1918:55af06da5523
merge in recent changes from main repo
author | corvid <corvid@lavabit.com> |
---|---|
date | Fri, 25 Feb 2011 08:37:13 +0000 |
parents | 6ee11bf9e3ea |
children |
line wrap: on
line source
/* * Fast list methods * Feb 2000 --Jcid * */ #ifndef __LIST_H__ #define __LIST_H__ /* * a_List_resize() * * Make sure there's space for 'num_items' items within the list * (First, allocate an 'alloc_step' sized chunk, after that, double the * list size --to make it faster) */ #define a_List_resize(list,num_items,alloc_step) \ if (!list) { \ list = dMalloc(alloc_step * sizeof((*list))); \ } \ if (num_items >= alloc_step){ \ while ( num_items >= alloc_step ) \ alloc_step <<= 1; \ list = dRealloc(list, alloc_step * sizeof((*list))); \ } /* * a_List_add() * * Make sure there's space for one more item within the list. */ #define a_List_add(list,num_items,alloc_step) \ a_List_resize(list,num_items,alloc_step) /* * a_List_remove() * * Quickly remove an item from the list * ==> We preserve relative position, but not the element index <== */ #define a_List_remove(list, item, num_items) \ if (list && item < num_items) { \ list[item] = list[--num_items]; \ } #endif /* __LIST_H__ */