comparison ListOfArrays.h @ 5:79982974d355

fix bug when last fragment exactly full
author Nina Engelhardt <nengel@mailbox.tu-berlin.de>
date Thu, 08 Mar 2012 19:05:26 +0100
parents 53df05eb8d43
children 0e6cc9d9ec67
comparison
equal deleted inserted replaced
4:f31d50e6a045 5:0b9b647e647a
37 type* typedFragment = (type*) ((list->dim1)[list->dim1info->numInArray -1]); \ 37 type* typedFragment = (type*) ((list->dim1)[list->dim1info->numInArray -1]); \
38 typedFragment[offset_in_fragment] = value; \ 38 typedFragment[offset_in_fragment] = value; \
39 list->next_free_index++; \ 39 list->next_free_index++; \
40 } while (0) 40 } while (0)
41 41
42 #define addToListOfArrays_ext(type,value,list) do { \
43 int offset_in_fragment = list->next_free_index % list->num_entries_per_fragment; \
44 if(offset_in_fragment == 0){ \
45 void* newBlock = malloc(list->entry_size * list->num_entries_per_fragment); \
46 addToDynArray(newBlock,list->dim1info); \
47 } \
48 type* typedFragment = (type*) ((list->dim1)[list->dim1info->numInArray -1]); \
49 typedFragment[offset_in_fragment] = value; \
50 list->next_free_index++; \
51 } while (0)
52
42 typedef void (*ListOfArraysFnPtr) ( void * ); //fn has to cast void * 53 typedef void (*ListOfArraysFnPtr) ( void * ); //fn has to cast void *
43 54
44 void forAllInListOfArraysDo(ListOfArrays* list, ListOfArraysFnPtr fnPtr); 55 void forAllInListOfArraysDo(ListOfArrays* list, ListOfArraysFnPtr fnPtr);
45 56
46 #define valueInListOfArrays(type,index,list) ((type*)((list->dim1)[index / list->num_entries_per_fragment]))[index % list->num_entries_per_fragment] 57 #define valueInListOfArrays(type,index,list) ((type*)((list->dim1)[index / list->num_entries_per_fragment]))[index % list->num_entries_per_fragment]