/*******************************************************************************
* YORKTOWN ADVANCED SGML PARSER (YASP)                                         *
*         An SGML Parser conforming to International Standard ISO 8879 --      *
*         Standard Generalized Markup Language                                 *
*------------------------------------------------------------------------------*
* Written 1987 - 1993 by                                                       *
*         Pierre G. Richard                                                    *
*         IBM T.J. Watson Research Center                                      *
*         Yorktown Heights, New York                                           *
*         petrus@watson.ibm.com                                                *
*------------------------------------------------------------------------------*
* FUNCTION NAME    = YASP / Header File                                        *
* STATUS           = Version 0, Release 1, Level 16 and up                     *
* COMPONENT NAME   = hash.h                                                    *
* DESCRIPTIVE NAME = Unstringized HASH table                                   *
* DATE_WR          = 01/11/1987                                                *
* AUTHOR           = Pierre G. Richard - PETRUS at YKTVMX                      *
*                                                                              *
* FUNCTIONAL DESCRIPTION =                                                     *
*     Define Block and prototype functions that are used to build the          *
*     unstringized hash table.                                                 *
*                                                                              *
* IMPLEMENTATION NOTES =                                                       *
*     The functions to access to the stringized table are described            *
*     in USRLIB.H, as those are the "standard" functions.                      *
*     Access to the unstringized table is "exceptional" and done               *
*     only by the compilers.  Having its block and prototypes defined          *
*     separately prevent inadvertent usage.                                    *
*                                                                              *
* CHANGE HISTORY =                                                             *
*     (see hash.c)                                                             *
*******************************************************************************/
typedef struct t_EHSH {
   struct t_EHSH *next;        /* For hashing: collision chain */
   uchar *name_p;              /* offset of the entry name */
   void  *var_p;               /* for user usage */
}EHSH;

extern void * P_FCT ehsh_ini      (GA_P, uint);
extern void   P_FCT ehsh_tvr      (
   void *, void (P_FCT *)(void STACK_BASED *, EHSH *), void STACK_BASED *
);
extern void * P_FCT ehsh_fnd      (void *, uchar *);
extern EHSH * P_FCT ehsh_acc      (void *, uchar *, boolean);
extern void * P_FCT ehsh_lnk      (void *, uchar *, uint);
extern uint   P_FCT ehsh_uld      (void *, uint, boolean, void **);

#define ehsh_open(scope,name)   ehsh_acc(scope,name,TRUE)
/******************************************************************************/
