Changeset 344 for trunk/archive/pslib/include/psDlist.h
- Timestamp:
- Mar 31, 2004, 5:01:04 PM (22 years ago)
- File:
-
- 1 edited
-
trunk/archive/pslib/include/psDlist.h (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/archive/pslib/include/psDlist.h
r291 r344 9 9 /** Doubly-linked list element */ 10 10 typedef struct psDlistElem { 11 struct psDlistElem *prev; // !< previous link in list12 struct psDlistElem *next; // !< next link in list13 void *data; // !< real data item11 struct psDlistElem *prev; ///< previous link in list 12 struct psDlistElem *next; ///< next link in list 13 void *data; ///< real data item 14 14 } psDlistElem; 15 15 16 16 /** Doubly-linked list */ 17 17 typedef struct { 18 int n; // !< number of elements on list19 psDlistElem *head; // !< first element on list (may be NULL)20 psDlistElem *tail; // !< last element on list (may be NULL)21 psDlistElem *iter; // !< iteration cursor18 int n; ///< number of elements on list 19 psDlistElem *head; ///< first element on list (may be NULL) 20 psDlistElem *tail; ///< last element on list (may be NULL) 21 psDlistElem *iter; ///< iteration cursor 22 22 } psDlist; 23 23 24 24 /** Special values of index into list */ 25 25 enum { 26 PS_DLIST_HEAD = 0, // !< at head27 PS_DLIST_TAIL = -1, // !< at tail28 PS_DLIST_UNKNOWN = -2, // !< unknown position29 PS_DLIST_PREV = -3, // !< previous element30 PS_DLIST_NEXT = -4 // !< next element26 PS_DLIST_HEAD = 0, ///< at head 27 PS_DLIST_TAIL = -1, ///< at tail 28 PS_DLIST_UNKNOWN = -2, ///< unknown position 29 PS_DLIST_PREV = -3, ///< previous element 30 PS_DLIST_NEXT = -4 ///< next element 31 31 }; 32 32 … … 37 37 38 38 /** Constructor */ 39 psDlist *psDlistAlloc(void *data // !< initial data item; may be NULL39 psDlist *psDlistAlloc(void *data ///< initial data item; may be NULL 40 40 ); 41 41 42 42 /** Destructor */ 43 void psDlistFree(psDlist *list, // !< list to destroy44 void (*elemFree)(void *) // !< destructor for data on list43 void psDlistFree(psDlist *list, ///< list to destroy 44 void (*elemFree)(void *) ///< destructor for data on list 45 45 ); 46 46 … … 48 48 49 49 /** Add to list */ 50 psDlist *psDlistAdd(psDlist *list, // !< list to add to (may be NULL)51 void *data, // !< data item to add52 int where // !< index, PS_DLIST_HEAD, or PS_DLIST_TAIL50 psDlist *psDlistAdd(psDlist *list, ///< list to add to (may be NULL) 51 void *data, ///< data item to add 52 int where ///< index, PS_DLIST_HEAD, or PS_DLIST_TAIL 53 53 ); 54 54 55 55 /** Append to a list */ 56 psDlist *psDlistAppend(psDlist *list, // !< list to append to (may be NULL)57 void *data // !< data item to add56 psDlist *psDlistAppend(psDlist *list, ///< list to append to (may be NULL) 57 void *data ///< data item to add 58 58 ); 59 59 60 60 /** Remove from a list */ 61 void *psDlistRemove(psDlist *list, // !< list to remove element from62 void *data, // !< data item to remove63 int which // !< index of item, or PS_DLIST_UNKNOWN, or PS_DLIST_NEXT, or64 // !< PS_DLIST_PREV61 void *psDlistRemove(psDlist *list, ///< list to remove element from 62 void *data, ///< data item to remove 63 int which ///< index of item, or PS_DLIST_UNKNOWN, or PS_DLIST_NEXT, or 64 ///< PS_DLIST_PREV 65 65 ); 66 66 /** Retrieve from a list */ 67 void *psDlistGet(const psDlist *list, // !< list to retrieve element from68 int which // !< index of item, or PS_DLIST_NEXT, or PS_DLIST_PREV67 void *psDlistGet(const psDlist *list, ///< list to retrieve element from 68 int which ///< index of item, or PS_DLIST_NEXT, or PS_DLIST_PREV 69 69 ); 70 70 … … 72 72 73 73 /** Set the iterator */ 74 void psDlistSetIterator(psDlist *list, // !< list to retrieve element from75 int where, // !< index, PS_DLIST_HEAD, or PS_DLIST_TAIL76 int which // !< index of item, or PS_DLIST_UNKNOWN, or PS_DLIST_NEXT, or77 // !< PS_DLIST_PREV74 void psDlistSetIterator(psDlist *list, ///< list to retrieve element from 75 int where, ///< index, PS_DLIST_HEAD, or PS_DLIST_TAIL 76 int which ///< index of item, or PS_DLIST_UNKNOWN, or PS_DLIST_NEXT, or 77 ///< PS_DLIST_PREV 78 78 ); 79 79 80 80 /** Get next element */ 81 void *psDlistGetNext(psDlist *list, // !< list to retrieve element from82 int which // !< index of item, or PS_DLIST_UNKNOWN, or PS_DLIST_NEXT, or83 // !< PS_DLIST_PREV81 void *psDlistGetNext(psDlist *list, ///< list to retrieve element from 82 int which ///< index of item, or PS_DLIST_UNKNOWN, or PS_DLIST_NEXT, or 83 ///< PS_DLIST_PREV 84 84 ); 85 85 86 86 /** Get previous element */ 87 void *psDlistGetPrev(psDlist *list, // !< list to retrieve element from88 int which // !< index of item, or PS_DLIST_UNKNOWN, or PS_DLIST_NEXT, or89 // !< PS_DLIST_PREV87 void *psDlistGetPrev(psDlist *list, ///< list to retrieve element from 88 int which ///< index of item, or PS_DLIST_UNKNOWN, or PS_DLIST_NEXT, or 89 ///< PS_DLIST_PREV 90 90 ); 91 91 92 92 /** Convert doubly-linked list to an array */ 93 psVoidPtrArray *psDlistToArray(psDlist *dlist // !< List to convert93 psVoidPtrArray *psDlistToArray(psDlist *dlist ///< List to convert 94 94 ); 95 95 96 96 /** Convert array to a doubly-linked list */ 97 psDlist *psArrayToDlist(psVoidPtrArray *arr // !< Array to convert97 psDlist *psArrayToDlist(psVoidPtrArray *arr ///< Array to convert 98 98 ); 99 99
Note:
See TracChangeset
for help on using the changeset viewer.
