/*------------------------------------------------------------------------------ FILE : Hash.h CREATED : 98/05/12 AUTHOR : Catalin Cocos CONTENTS: variable size hash table ------------------------------------------------------------------------------*/ #ifndef __LDT_HASH__ #define __LDT_HASH__ #include "DynArray.h" /* * To export code. */ #undef CPA_EXPORT #if defined(CPA_WANTS_IMPORT) #define CPA_EXPORT __declspec(dllimport) #elif defined(CPA_WANTS_EXPORT) #define CPA_EXPORT __declspec(dllexport) #else /* CPA_WANTS_IMPORT */ #define CPA_EXPORT #endif /* CPA_WANTS_IMPORT */ /*------------------------------------------------------------------------------ TYPES ------------------------------------------------------------------------------*/ typedef struct LDT_tdst_DSHash_ LDT_tdst_DSHash; struct LDT_tdst_DSHash_ { int (* pfnDispersion ) (void*); /* the dispersion function */ void (* pfnDelete ) (void*); /* the element deletion function */ LDT_tdst_DSArray* pData; /* the vector */ }; /*------------------------------------------------------------------------------ FUNCTIONS ------------------------------------------------------------------------------*/ /*creation, initialization, deletion --------------------------------------*/ CPA_EXPORT LDT_tdst_DSHash* LDT_DSHs_new(int (* _pfnDispersion ) (void*), int (* _pfnCompare) (const void**, const void** ), void (* _pfnDelete) (void*) ); /* creates a new hash */ CPA_EXPORT int LDT_DSHs_Init(LDT_tdst_DSHash*, int (* _pfnDispersion ) (void*), int (* _pfnCompare)(const void**, const void** ), void (* _pfnDelete) (void*) ); /* initializes an existing hash */ CPA_EXPORT void LDT_DSHs_delete( LDT_tdst_DSHash*, int ); /* deletes an existing array*/ CPA_EXPORT void LDT_DSHs_SetGranularity( LDT_tdst_DSHash*, int); /* sets the dynamic aray elements granularity */ /* Clean up -------------*/ CPA_EXPORT void LDT_DSHs_FreeExtra( LDT_tdst_DSHash* ); /* frees the unused memory */ CPA_EXPORT void LDT_DSHs_RemoveAll( LDT_tdst_DSHash*, int ); /* removes all elements */ CPA_EXPORT void LDT_DSHs_Close( LDT_tdst_DSHash*, int ); /* clears the hash memory */ /* Accessing elements -----------------------*/ CPA_EXPORT void* LDT_DSHs_GetEqOf( LDT_tdst_DSHash*, void* ); /* gets the hash element matching the parameter*/ CPA_EXPORT void* LDT_DSHs_RemoveEqOf( LDT_tdst_DSHash*, void* ); /* removes the hash element matching the parameter*/ CPA_EXPORT void* LDT_DSHs_Insert( LDT_tdst_DSHash*, void*, int ); /* inserts the element in the hash table*/ #endif