LOCAL void freeFileFragmentNode(FileFragmentNode *fileFragmentNode, void *userData) { assert(fileFragmentNode != NULL); UNUSED_VARIABLE(userData); List_done(&fileFragmentNode->fragmentList,NULL,NULL); String_delete(fileFragmentNode->fileName); }
int main() { List a, b; int32 i, j; List_init(&a); List_init(&b); print_list(&a, "a"); for (i = 0; i < 10; i++) { a.insert(&a, 2*i); } print_list(&a, "a"); a.erase(&a); for (i = 0, j = 7; i < 10; i++, j = (j+7)%10) { print_list(&a, "a"); a.insert(&a, 2*j); } print_list(&a, "a"); print_list(&b, "b"); for (i = 5; i > 0; i--) { b.insert(&b, i); } print_list(&b, "b"); List_copy(&b, &a); print_list(&a, "a"); print_list(&b, "b"); a.remove(&a, 0); a.remove(&a, 18); a.remove(&a, 7); a.remove(&a, 8); print_list(&a, "a"); print_list(&b, "b"); b.erase(&b); print_list(&b, "b"); List_done(&a); List_done(&b); return OK; }
void List_delete(void *list, ListNodeFreeFunction listNodeFreeFunction, void *listNodeFreeUserData ) { assert(list != NULL); List_done(list,listNodeFreeFunction,listNodeFreeUserData);\ free(list); }
LOCAL void freeFragmentNode(FragmentNode *fragmentNode, void *userData) { assert(fragmentNode != NULL); UNUSED_VARIABLE(userData); List_done(&fragmentNode->fragmentEntryList,NULL,NULL); if (fragmentNode->userData != NULL) { free(fragmentNode->userData); } String_delete(fragmentNode->name); }
void FragmentList_done(FragmentList *fragmentList) { assert(fragmentList != NULL); List_done(fragmentList,(ListNodeFreeFunction)freeFragmentNode,NULL); }
void FragmentList_clearEntry(FragmentNode *fragmentNode) { assert(fragmentNode != NULL); List_done(&fragmentNode->fragmentEntryList,NULL,NULL); }
void StringList_done(StringList *stringList) { assert(stringList != NULL); List_done(stringList,(ListNodeFreeFunction)freeStringNode,NULL); }
void PatternList_done(PatternList *patternList) { assert(patternList != NULL); List_done(patternList,(ListNodeFreeFunction)freePatternNode,NULL); }
void FileFragmentList_clear(FileFragmentNode *fileFragmentNode) { assert(fileFragmentNode != NULL); List_done(&fileFragmentNode->fragmentList,NULL,NULL); }
void EntryList_done(EntryList *entryList) { assert(entryList != NULL); List_done(entryList,(ListNodeFreeFunction)freeEntryNode,NULL); }