00001 #ifndef H_HASH 00002 #define H_HASH 00003 00008 struct hash_table; 00009 typedef struct hash_table * hashTable; 00010 00011 struct ht_iterator { 00012 int bucket; 00013 int item; 00014 }; 00015 00016 typedef struct ht_iterator htIterator; 00017 00018 /*@only@*/ /*@null@*/ struct hash_table * htNewTable(int size); 00019 void htFreeHashTable(/*@only@*/ struct hash_table *ht); 00020 void htHashStats(const struct hash_table *t); 00021 int htInTable(struct hash_table *t, const char * dir, const char * base); 00022 void htAddToTable(struct hash_table *t, const char * dir, const char * base); 00023 void htPrintHashStats(struct hash_table *t); 00024 int htNumEntries(struct hash_table *t); 00025 void htRemoveFromTable(struct hash_table *t, const char * dir, 00026 const char * base); 00027 00028 /* these use static storage */ 00029 void htIterStart(htIterator * iter); 00030 int htIterGetNext(struct hash_table * t, htIterator * iter, 00031 const char ** dir, const char ** base); 00032 00033 #endif