home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / misc / amigem.lha / amigem / exec / lists.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-19  |  1.9 KB  |  88 lines

  1. #include <exec/execbase.h>
  2.  
  3. #include <amigem/fd_lib.h>
  4. #define LIBBASE struct ExecBase *SysBase
  5.  
  6. FD3(39,void,Insert,struct List *list,A0,struct Node *node,A1,struct Node *prev,A2)
  7. { if(prev==NULL)
  8.     prev=(struct Node *)list;
  9.   node->ln_Succ=prev->ln_Succ;
  10.   node->ln_Pred=prev;
  11.   prev->ln_Succ=node;
  12.   node->ln_Succ->ln_Pred=node;
  13. }
  14.  
  15. FD1(42,void,Remove,struct Node *node,A1)
  16. { node->ln_Succ->ln_Pred=node->ln_Pred;
  17.   node->ln_Pred->ln_Succ=node->ln_Succ;
  18. }
  19.  
  20. FD2(40,void,AddHead,struct List *list,A0,struct Node *node,A1)
  21. {
  22.   node->ln_Succ=list->lh_Head;
  23.   node->ln_Pred=(struct Node *)list;
  24.   list->lh_Head=node;
  25.   node->ln_Succ->ln_Pred=node;
  26. }
  27.  
  28. FD1(43,struct Node *,RemHead,struct List *list,A0)
  29. { struct Node *node;
  30.   node=list->lh_Head->ln_Succ;
  31.   if(node!=NULL)
  32.   {
  33.     node->ln_Pred=(struct Node *)list;
  34.     node=list->lh_Head;
  35.     list->lh_Head=node->ln_Succ;
  36.   }
  37.   return node;
  38. }
  39.   
  40. FD2(41,void,AddTail,struct List *list,A0,struct Node *node,A1)
  41. { node->ln_Pred=list->lh_TailPred;
  42.   node->ln_Succ=(struct Node *)&list->lh_Tail;
  43.   list->lh_TailPred=node;
  44.   node->ln_Pred->ln_Succ=node;
  45. }
  46.  
  47. FD1(44,struct Node *,RemTail,struct List *list,A0)
  48. { struct Node *node;
  49.   node=list->lh_TailPred->ln_Pred;
  50.   if(node!=NULL)
  51.   {
  52.     node->ln_Succ=(struct Node *)&list->lh_Tail;
  53.     node=list->lh_TailPred;
  54.     list->lh_TailPred=node->ln_Pred;
  55.   }
  56.   return node;
  57. }
  58.  
  59. FD2(45,void,Enqueue,struct List *list,A0,struct Node *node,A1)
  60. { struct Node *n;
  61.   n=list->lh_Head;
  62.   while(n->ln_Succ!=NULL)
  63.   {
  64.     if(n->ln_Pri<node->ln_Pri)
  65.       break;
  66.      n=n->ln_Succ;
  67.   }
  68.   node->ln_Succ=n;
  69.   node->ln_Pred=n->ln_Pred;
  70.   node->ln_Pred->ln_Succ=node;
  71.   n->ln_Pred=node;
  72. }
  73.  
  74. FD2(46,struct Node *,FindName,struct List *list,A0,STRPTR name,A1)
  75. { struct Node *node;
  76.   node=list->lh_Head;
  77.   while(node->ln_Succ!=NULL)
  78.   {
  79.     char *s1=node->ln_Name;
  80.     char *s2=name;
  81.     while(*s1++==*s2)
  82.       if(!*s2++)
  83.         return node;
  84.     node=node->ln_Succ;
  85.   }
  86.   return NULL;
  87. }
  88.