diff options
author | Ian C <ianc@noddybox.co.uk> | 2011-06-09 13:57:32 +0000 |
---|---|---|
committer | Ian C <ianc@noddybox.co.uk> | 2011-06-09 13:57:32 +0000 |
commit | ec32cf41f916fc34c03d2844684631bee39005ad (patch) | |
tree | 0ecd4b3a8602ba76df3b9395eb6c71c350d510df /list.h |
Added copies of old numbered releases.0.02
Diffstat (limited to 'list.h')
-rw-r--r-- | list.h | 104 |
1 files changed, 104 insertions, 0 deletions
@@ -0,0 +1,104 @@ +/* + + viDOOM - level editor for DOOM + + Copyright (C) 2000 Ian Cowburn (ianc@noddybox.demon.co.uk) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + ------------------------------------------------------------------------- + + Provides a double-linked list + + $Id$ + +*/ + +#ifndef _LIST_H + +#define _LIST_H + +/* Opaque types for the list and iterator. NULL is the null list and iterator. +*/ +struct _List; +typedef struct _List *List; + +struct _Iterator; +typedef struct _Iterator *Iterator; + + +/* Create a list +*/ +List ListNew(int type_size); + +/* Free a list object +*/ +List ListClear(List l); + +/* Free all elements in a list +*/ +List ListEmpty(List l); + +/* Return number of elements in list +*/ +int ListSize(List l); + +/* Create an iterator over the list +*/ +Iterator ListIterator(List l); + +/* Destory an iterator +*/ +Iterator IteratorClear(Iterator i); + +/* Get data for pointed to by this iterator object +*/ +void *IteratorData(Iterator i); + +/* Move the iterator to the next element. NULL once done. +*/ +Iterator IteratorNext(Iterator i); + +/* Move the iterator to the previous element. NULL once done. +*/ +Iterator IteratorPrev(Iterator i); + +/* Replace the data currently stored in this this position with the new one +*/ +Iterator IteratorUpdate(Iterator i,void *data); + +/* Delete the data currently stored in this position and move the iterator to + the next element. +*/ +Iterator IteratorDelete(Iterator i); + +/* Append to the tail of the the list +*/ +void ListAppend(List l,void *data); + +/* Insert at the head of the the list +*/ +void ListInsert(List l,void *data); + +/* Return an iterator for the searched element. Note the fist void* passed + to the predicate will be of the type stored in the lists. The second + argument will be whatever was passed as data. +*/ +Iterator ListFindElem(List l,int (*pred)(void *, void *),void *data); + +#endif + + +/* END OF FILE */ |