12 lines
529 B
C
12 lines
529 B
C
void Lst_Ins(void *head, void *item, int pos);
|
|
int Lst_Find(void *head, void *key);
|
|
void Lst_Pos(void *head, int pos);
|
|
|
|
#define LstDecl(HEAD,TYP,CMP,KEY,KTYP) struct TYP##_HDR { \
|
|
void (*ck)(); int (*cmp)(KTYP,KTYP);KTYP *kptr;int pos; \
|
|
void *list;TYP *itm; TYP kitm;} HEAD \
|
|
={&Lst_Ins,CMP,&HEAD.kitm.KEY}
|
|
#define LstIns(HEAD,ITM,POS) Lst_Ins((LstHead*)&HEAD,(HEAD.itm=(ITM)),POS);
|
|
#define LstFind(HEAD,KEY) (HEAD.pos=Lst_Find((LstHead*)&HEAD,HEAD.kptr-&KEY,KEY))
|
|
#define LstPos(HEAD,POS) Lst_Pos((LstHead*)&HEAD,POS)
|