/*
** hash.h
** hash manager for lua
** $Id: hash.h,v 2.15 1997/03/31 14:02:58 roberto Exp roberto $
*/

#ifndef hash_h
#define hash_h

#include "types.h"
#include "opcode.h"

typedef struct node {
 TObject ref;
 TObject val;
} Node;

typedef struct Hash {
  struct Hash *next;
  Node *node;
  int nhash;
  int nuse;
  int htag;
  char mark;
} Hash;


int      lua_equalObj (TObject *t1, TObject *t2);
int      luaI_redimension (int nhash);
Hash    *lua_createarray (int nhash);
void     lua_hashmark (Hash *h);
Hash    *luaI_hashcollector (long *count);
void luaI_hashcallIM (Hash *l);
void luaI_hashfree (Hash *frees);
TObject  *lua_hashget (Hash *t, TObject *ref);
TObject 	*lua_hashdefine (Hash *t, TObject *ref);
void     lua_next (void);

#endif
