/******************************************************************************* ** ** Cabletron Systems Incorporated ** Post Office Box 5005 ** Rochester, NH 03866-5005 ** (c) Copyright Cabletron Systems Inc. 1999 ** ** Workfile: %M% ** Logfile: %P% ** Original Author: Todd Crowley ** SCCS Delta ID: %I% ** Last Delta Date/Time: %G% %U% ** *******************************************************************************/ #ifndef LFAPLIST_H_ #define LFAPLIST_H_ #ifdef __cplusplus extern "C" { #endif #include "Lfap.h" /* * The LFAP Node */ typedef struct lfap_node { void* _info; struct lfap_node* _next; } LFAPNode; #define SIZEOF_LFAP_NODE sizeof(LFAPNode) void initLfapNode (LFAPNode* node); void copyLfapNode (LFAPNode* node, void* new_info); LFAPNode* nextLfapNode (LFAPNode* node); LFAPNode* clearLfapNode (LFAPNode* node); void* lfapNodeInfo (LFAPNode* node); /* * The LFAP List */ typedef struct lfap_list { LFAPNode _head_; LFAPNode _tail_; LFAPNode* _last_; unsigned int _entries_; } LFAPList; void initLfapList (LFAPList* list); void setLfapList (LFAPList* list, void* x); void copyLfapList (LFAPList* list, LFAPList l); void* lfapListAt (LFAPList* list, unsigned int n); void* lfapListFirst (LFAPList* list); void* lfapListLast (LFAPList* list); void* lfapListAppend (LFAPList* list, void* x); void* lfapListPrepend (LFAPList* list, void* x); void* lfapListInsertAt (LFAPList* list, unsigned int i, void* x); void* lfapListInsertAfter (LFAPList* list, unsigned int i, void* x); void* lfapListFindRef (LFAPList* list, const void* x); void* lfapListRemoveRef (LFAPList* list, const void* x); void* removeNextLfapNode (LFAPList* list, LFAPNode* prev); void* lfapListGet (LFAPList* list); unsigned int lfapListEntries (LFAPList* list); unsigned int lfapListIsEmpty (LFAPList* list); void clearLfapList (LFAPList* list); void clearAndDestroyLfapList (LFAPList* list); LFAPNode* lastLfapNode (LFAPList* list); LFAPNode* tailLfapNode (LFAPList* list); LFAPNode* firstLfapNode (LFAPList* list); LFAPNode* getFirstLfapNode (LFAPList* list); LFAPNode* findLfapNode (LFAPList* list, const void* x); LFAPNode* previousLfapNode (LFAPList* list, const void* x); void appendLfapNode (LFAPList* list, LFAPNode* node); /* * The LFAP List Iterator */ typedef struct lfap_list_iterator { LFAPList* _l_; LFAPNode* _c_; } LFAPListIterator; void initLfapIter (LFAPListIterator* i); void initLfapIterList (LFAPListIterator* i, LFAPList* l); void* incLfapIter (LFAPListIterator* i); void* plusLfapIter (LFAPListIterator* i, unsigned int n); void* keyItemLfapIter (LFAPListIterator* i); void* removeItemLfapIter (LFAPListIterator* i); void resetLfapIter (LFAPListIterator* i); void resetLfapIterList (LFAPListIterator* i, LFAPList l); #ifdef __cplusplus } #endif #endif /* LFAPLIST_H_ */