/************** 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 */