1358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt/*-------------------------------------------------------------------*/ 2358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt/* List Functionality */ 3358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt/*-------------------------------------------------------------------*/ 4358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt#ifndef _SHLIST_H_ 5358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt#define _SHLIST_H_ 6358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt 7358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidttypedef struct SHLIST_STRUC { 8358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt void *data; 9358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt struct SHLIST_STRUC *next; 10358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt struct SHLIST_STRUC *prev; 11358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt} SHLIST; 12358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt 13358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidttypedef int (*shListCmp)( void *valo, void *valn, void *etalon ); 14358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidttypedef int (*shListPrint)( void *val ); 15358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidttypedef void (*shListFree)( void *val ); 16358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidttypedef int (*shListEqual)( void *val, void *idata ); 17358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt 18358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidtvoid shListInitList( SHLIST *listPtr ); 19358ae72d314bf9df7050908541f30b78a2871c8aDmitry ShmidtSHLIST *shListFindItem( SHLIST *head, void *val, shListEqual func ); 20358ae72d314bf9df7050908541f30b78a2871c8aDmitry ShmidtSHLIST *shListGetFirstItem( SHLIST *head ); 21358ae72d314bf9df7050908541f30b78a2871c8aDmitry ShmidtSHLIST *shListGetNItem( SHLIST *head, unsigned long num ); 22358ae72d314bf9df7050908541f30b78a2871c8aDmitry ShmidtSHLIST *shListGetLastItem( SHLIST *head ); 23358ae72d314bf9df7050908541f30b78a2871c8aDmitry ShmidtSHLIST *shListGetNextItem( SHLIST *head, SHLIST *item ); 24358ae72d314bf9df7050908541f30b78a2871c8aDmitry ShmidtSHLIST *shListGetPrevItem( SHLIST *head, SHLIST *item ); 25358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidtvoid shListDelItem( SHLIST *head, SHLIST *item, shListFree func ); 26358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidtvoid shListInsFirstItem( SHLIST *head, void *val ); 27358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidtvoid shListInsBeforeItem( SHLIST *head, void *val, void *etalon, 28358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt shListCmp func ); 29358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidtvoid shListInsLastItem( SHLIST *head, void *val ); 30358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidtvoid shListDelAllItems( SHLIST *head, shListFree func ); 31358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidtvoid shListPrintAllItems( SHLIST *head, shListPrint func ); 32358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidtunsigned long shListGetCount( SHLIST *head ); 33358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt 34358ae72d314bf9df7050908541f30b78a2871c8aDmitry Shmidt#endif 35