1 #ifndef cxsa_hash_table_h_ 2 #define cxsa_hash_table_h_ 3 4 #include "cxsa_memory.h" 5 6 #include "EXTERN.h" 7 #include "ppport.h" 8 #include "perl.h" 9 10 typedef struct HashTableEntry { 11 struct HashTableEntry* next; 12 const char* key; 13 STRLEN len; 14 void * value; 15 } HashTableEntry; 16 17 typedef struct { 18 struct HashTableEntry** array; 19 UV size; 20 UV items; 21 NV threshold; 22 } HashTable; 23 24 /* void * CXSA_HashTable_delete(HashTable* table, const char* key, STRLEN len); */ 25 void * CXSA_HashTable_fetch(HashTable* table, const char* key, STRLEN len); 26 void * CXSA_HashTable_store(HashTable* table, const char* key, STRLEN len, void * value); 27 HashTableEntry* CXSA_HashTable_find(HashTable* table, const char* key, STRLEN len); 28 HashTable* CXSA_HashTable_new(UV size, NV threshold); 29 void CXSA_HashTable_clear(HashTable* table, bool do_release_values); 30 void CXSA_HashTable_free(HashTable* table, bool do_release_values); 31 void CXSA_HashTable_grow(HashTable* table); 32 33 #endif 34