/*-------------------------------------------------------------------*/ /* List Functionality */ /*-------------------------------------------------------------------*/ #ifndef _SHLIST_H_ #define _SHLIST_H_ typedef struct SHLIST_STRUC { void *data; struct SHLIST_STRUC *next; struct SHLIST_STRUC *prev; } SHLIST; typedef int (*shListCmp)( void *valo, void *valn, void *etalon ); typedef int (*shListPrint)( void *val ); typedef void (*shListFree)( void *val ); typedef int (*shListEqual)( void *val, void *idata ); void shListInitList( SHLIST *listPtr ); SHLIST *shListFindItem( SHLIST *head, void *val, shListEqual func ); SHLIST *shListGetFirstItem( SHLIST *head ); SHLIST *shListGetNItem( SHLIST *head, unsigned long num ); SHLIST *shListGetLastItem( SHLIST *head ); SHLIST *shListGetNextItem( SHLIST *head, SHLIST *item ); SHLIST *shListGetPrevItem( SHLIST *head, SHLIST *item ); void shListDelItem( SHLIST *head, SHLIST *item, shListFree func ); void shListInsFirstItem( SHLIST *head, void *val ); void shListInsBeforeItem( SHLIST *head, void *val, void *etalon, shListCmp func ); void shListInsLastItem( SHLIST *head, void *val ); void shListDelAllItems( SHLIST *head, shListFree func ); void shListPrintAllItems( SHLIST *head, shListPrint func ); unsigned long shListGetCount( SHLIST *head ); #endif