Listing 2 The Module Header

/************** Associative Array Module *************/
/*   Entry Points: aa_create, aa_resize, aa_addr,    */
/*                 aa_keys, aa_delete, aa_defined    */
/*   Test Platforms: HP-UX Version 9.01              */
/*                   PC-DOS 3.1 with Turbo C++       */
/*****************************************************/
#include "aa.h"

#define DELETED_KEY 1
#define MAX_KEY_SIZE 1024
#define NULLKEY(addr) (addr == NULL)
#define MAXFULL(size) (size * 0.75)
#define TOO_FULL(count,max) \
  ((count > MAXFULL(max)) ? TRUE : FALSE)
#define KEY_MATCH(type,key,ptr,size) \
  (type!=STRING_KEY && memcmp(key,*ptr,size)==0)
#define STRING_KEY_MATCH(t,k,p) \
  (t==STRING_KEY && strcmp((char *)k,*(char **)p)==0)
#define VALID_KEY(addr) \
  (addr != (void *)NULL && addr != (void *)DELETED_KEY)
#define INC_SIZE(size) \
  ((size_t)(size * 1.5))
#define HASH_FUNCTION(a,key,size) \
  (*(a->hash_function))(key,a->key_size,size,a->type)
#define KEYSIZE(aa,key) \
  (aa->type==STRING_KEY ? strlen(key)+1 : aa->key_size)
#define KEYCOPY(aa,dest,key) (aa->type==STRING_KEY ? \
  strcpy(*dest,key) : memcpy(*dest,key,aa->key_size))
#define TRUE 1
#define FALSE 0

typedef unsigned char BYTE;
typedef unsigned char BOOLEAN;

static int hash_function();
static size_t prime_size();

/* End of File */