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

 $AUT Holger Burkarth
 $DAT >>Hash.h<<   26 Oct 1996    11:08:51 - (C) ProDAD
*******************************************************************/
#ifndef __INC_POS_PEXEC_LIST_H
#include <pExec/List.h>
#endif
#ifndef __INC_POS_PEXEC_MEMORY_H
#include <pExec/Memory.h>
#endif



/*----------------------------------
-----------------------------------*/
struct pOS_HashNode
{
        struct pOS_Node  hn_Node;
  const VOID            *hn_ID;
        UWORD            hn_OpenCnt;
};



/*----------------------------------
-----------------------------------*/
struct pOS_HashStrNode
{
        struct pOS_Node  hsn_Node;
  const CHAR            *hsn_ID;
        UWORD            hsn_OpenCnt;
        ULONG            hsn_UserData[2];
};



/*----------------------------------
-----------------------------------*/
struct pOS_HashList
{
  struct pOS_MemPool  hl_MP;
  UWORD               hl_LstNum; /* Anzahl der hl_List */

  struct pOS_HashNode* (*hl_Crt_func)(_R_A0 struct pOS_HashList*,_R_A1 const VOID* data);
  VOID          (*hl_Del_func)(_R_A0 struct pOS_HashList*,_R_A1 struct pOS_HashNode*);
  ULONG         (*hl_Hash_func)(_R_A0 const struct pOS_HashList*,_R_A1 const VOID*);
  BOOL          (*hl_Cmp_func)(_R_A0 const struct pOS_HashList*,_R_A1 const VOID*,_R_A2 const struct pOS_HashNode*);

  UBYTE               hl_Reserved[64];
  struct pOS_List     hl_List[1];
};




#endif
