#ifndef __INC_POS_PEXEC_LIST_H
#define __INC_POS_PEXEC_LIST_H
/*******************************************************************
 Includes Release 24
 (C) Copyright 1995-1997 proDAD
     All Rights Reserved

 $AUT Holger Burkarth
 $DAT >>List.h<<   12 Sep 1996    10:04:08 - (C) ProDAD
*******************************************************************/
#ifndef __INC_POS_PEXEC_TYPES_H
#include <pExec/Types.h>
#endif


/*----------------------------------
-----------------------------------*/
struct pOS_Node
{
  struct pOS_Node* ln_Succ;
  struct pOS_Node* ln_Pred;
};

/*----------------------------------
-----------------------------------*/
struct pOS_List
{
  struct pOS_Node* lh_Head;
  struct pOS_Node* lh_Tail;
  struct pOS_Node* lh_TailPred;
};


/*----------------------------------
     Extended-Node
-----------------------------------*/
struct pOS_ExNode
{
  struct pOS_ExNode* ln_Succ;
  struct pOS_ExNode* ln_Pred;
  UBYTE              ln_Type;   /* enum pOS_ExNodeType */
  SBYTE              ln_Pri;    /* Priority, for sorting */
  const CHAR        *ln_Name;   /* ID string, null terminated */
};



/*----------------------------------
-----------------------------------*/
struct pOS_ExList
{
  struct pOS_ExNode* lh_Head;
  struct pOS_ExNode* lh_Tail;
  struct pOS_ExNode* lh_TailPred;
  UBYTE              lh_Pad[2];
};


/****************** Macros *************************************/
#ifdef pOS_DEBUG
 #define ww_LIST(lst) \
   ww.CheckRefPointer(#lst,(APTR)lst); \
   ww.CheckRefPointer("lh_Head",(lst)->lh_Head); \
   ww.CheckRefPointer("lh_TailPred",(lst)->lh_TailPred); \
   ww.Compare("lh_Tail",(lst)->lh_Tail!=NULL);

 #define ww_InitNode(nd) \
   (nd)->ln_Succ=NULL; (nd)->ln_Pred=NULL;

#else
 #define ww_LIST(lst) ;
 #define ww_InitNode(nd) ;
#endif




#endif
