Mercurial > almixer_isolated
diff LinkedList.h @ 13:54aa96ae8912
Added LinkedList class to project.
ALmixer now saves ALmixer_Data instances in a private linked list so when Quit is called, this memory can be cleaned up.
This is meant to deal with two problems. First, SDL_sound does something similar which means since I wrap SDL_sound structures, I may be left with dangling pointers if. Second is the obvious auto-cleanup when quiting which is convenient for resetting.
author | Eric Wing <ewing . public |-at-| gmail . com> |
---|---|
date | Sat, 06 Nov 2010 00:37:29 -0700 |
parents | |
children | 1c27a52c5b15 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LinkedList.h Sat Nov 06 00:37:29 2010 -0700 @@ -0,0 +1,45 @@ +#ifndef C_LINKED_LIST_H +#define C_LINKED_LIST_H + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#include <stddef.h> + +typedef struct LinkedListNode LinkedListNode; +typedef struct LinkedList LinkedList; + +LinkedList* LinkedList_Create(); + +void LinkedList_Free(LinkedList* linked_list); + +void* LinkedList_Front(LinkedList* linked_list); +void* LinkedList_Back(LinkedList* linked_list); + +unsigned int LinkedList_PushFront(LinkedList* linked_list, void* new_item); + +unsigned int LinkedList_PushBack(LinkedList* linked_list, void* new_item); + +void* LinkedList_PopFront(LinkedList* linked_list); + +void* LinkedList_PopBack(LinkedList* linked_list); + +size_t LinkedList_Size(LinkedList* linked_list); + +void LinkedList_Clear(LinkedList* linked_list); + +void* LinkedListNode_GetData(LinkedListNode* list_node); + +LinkedListNode* LinkedList_Find(LinkedList* linked_list, void* the_data, LinkedListNode* start_node); + +unsigned int LinkedList_Remove(LinkedList* linked_list, LinkedListNode* list_node); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* C_LINKED_LIST_H */ +