thirtyflightsofloving/zaero/z_list.h

52 lines
1.1 KiB
C
Raw Normal View History

#ifndef __Z_LIST_H
#define __Z_LIST_H
/*
Linked List structure
All items contained in this list but be pointers. The list does not claim
"ownership" of the data, so it is not the responsibility of the list to
free the memory allocated by the data. It will, however, free the memory taken
by the nodes
*/
// dummy for internals
struct listNode_s;
typedef struct list_s
{
// start of the list
struct listNode_s *head;
struct listNode_s *tail;
// # of nodes in the list
int numNodes;
// current node
int curNode;
struct listNode_s *currentNode;
} list_t;
// init/cleanup
void initializeList(list_t *list);
void emptyList(list_t *list);
// get information about the list
int listLength(list_t const *list);
// add items to the list
void addHead(list_t *list, void *data);
void addTail(list_t *list, void *data);
// remove items from the list
void removeItem(list_t *list, int num);
// get items from the list (0 based)
void *getItem(list_t *list, int num);
int findIndex(list_t *list, void *data);
// data transfer
void copyList(list_t *src, list_t *dest);
void stealList(list_t *src, list_t *dest);
#endif