/*------------------------------------------------------------------*/ /* list.h */ /*------------------------------------------------------------------*/ #ifndef LIST_INCLUDED #define LIST_INCLUDED typedef struct List *List_T; typedef struct ListIter *ListIter_T; extern List_T List_new(); extern void List_free(List_T oList); extern unsigned long List_length(List_T oList); extern void *List_getFirst(List_T oList); extern void *List_getLast(List_T oList); extern void List_addFirst(List_T oList, void *pvItem); extern void List_addLast(List_T oList, void *pvItem); extern void List_removeFirst(List_T oList); extern void List_removeLast(List_T oList); extern void List_map(List_T oList, void (*pfApply)(void **ppvItem, void *pvExtra), void *pvExtra); extern void List_toArray(List_T oList, void **ppvArray); extern ListIter_T ListIter_new(List_T oList); extern void ListIter_free(ListIter_T oListIter); extern int ListIter_isValid(ListIter_T oListIter); extern void ListIter_moveToFirst(ListIter_T oListIter); extern void ListIter_moveToLast(ListIter_T oListIter); extern void ListIter_moveToNext(ListIter_T oListIter); extern void ListIter_moveToPrev(ListIter_T oListIter); extern void *ListIter_getCurrent(ListIter_T oListIter); extern void *ListIter_deleteCurrent(ListIter_T oListIter); extern void *ListIter_insertBefore(ListIter_T oListIter); extern void *ListIter_insertAfter(ListIter_T oListIter); #endif