home *** CD-ROM | disk | FTP | other *** search
- /* */
-
- /* List object
- **
- ** The list object is a generic container for storing collections
- ** of things in order.
- */
- #ifndef HTLIST_H
- #define HTLIST_H
-
- #include "HTUtils.h" /* for BOOL type and PARAMS and ARGS*/
-
- typedef struct _HTList HTList;
-
- struct _HTList {
- void * object;
- HTList * next;
- };
-
- #ifdef SHORT_NAMES
- #define HTList_new HTLiNew
- #define HTList_delete HTLiDele
- #define HTList_addObject HTLiAdOb
- #define HTList_removeObject HTLiReOb
- #define HTList_removeLastObject HTLiReLa
- #define HTList_removeFirstObject HTLiReFi
- #define HTList_count HTLiCoun
- #define HTList_indexOf HTLiInOf
- #define HTList_objectAt HTLiObAt
- #endif
-
- extern HTList * HTList_new NOPARAMS;
- extern void HTList_delete PARAMS((HTList *me));
-
- /* Add object to START of list
- */
- extern void HTList_addObject PARAMS((HTList *me, void *newObject));
-
-
- extern BOOL HTList_removeObject PARAMS((HTList *me, void *oldObject));
- extern void * HTList_removeLastObject PARAMS((HTList *me));
- extern void * HTList_removeFirstObject PARAMS((HTList *me));
- #define HTList_isEmpty(me) (me ? me->next == NULL : YES)
- extern int HTList_count PARAMS((HTList *me));
- extern int HTList_indexOf PARAMS((HTList *me, void *object));
- #define HTList_lastObject(me) \
- (me && me->next ? me->next->object : NULL)
- extern void * HTList_objectAt PARAMS((HTList *me, int position));
-
- /* Fast macro to traverse the list. Call it first with copy of list header :
- it returns the first object and increments the passed list pointer.
- Call it with the same variable until it returns NULL. */
- #define HTList_nextObject(me) \
- (me && (me = me->next) ? me->object : NULL)
-
- #endif /* HTLIST_H */
- /*
-
- */
-