
#include <exec/types.h>

#define SIZE(bits)	((((bits)+31L)/32L)*4L)

extern APTR	AllocMem ();

ULONG *
NewHashTable ( size )
ULONG size;
{
	ULONG *table;

	table = (ULONG *) AllocMem ( SIZE ( size ) , (LONG)MEMF_CLEAR );
	if ( table != NULL )
		*table = size;
	return ( table );
}


void
FreeHashTable ( table )
ULONG *table;
{
	FreeMem ( table , SIZE ( *table ) );
}


void
AddHashTable ( table , num )
ULONG *table;
ULONG num;
{
	LONG bit;

	bit = num % *table + 32;
	table[ bit >> 5L ] |= ( 1L << ( bit & 31L ) );
}


ULONG
TestHashTable ( table , num )
ULONG *table;
ULONG num;
{
	LONG bit;

	bit = num % *table + 32;
	return ( ( table[ bit >> 5L ] & ( 1L << ( bit & 31L ) ) ) ? 1 : 0 );
}
