diff options
Diffstat (limited to 'include/BH/Hashmap.h')
| -rw-r--r-- | include/BH/Hashmap.h | 167 |
1 files changed, 17 insertions, 150 deletions
diff --git a/include/BH/Hashmap.h b/include/BH/Hashmap.h index 7dda9ec..5337ee4 100644 --- a/include/BH/Hashmap.h +++ b/include/BH/Hashmap.h @@ -8,215 +8,82 @@ typedef struct BH_Hashmap BH_Hashmap; -/** - * Creates the new hashmap with specified \a equal and \a hash callbacks. - * - * \param equal Comparision function - * \param hash Key hash function - * - * \return On success, returns hashmap pointer. - * \return On failure, returns a null pointer. - */ + BH_Hashmap *BH_HashmapNew(BH_EqualCallback equal, BH_HashCallback hash); -/** - * Destroys the \a hashmap. - * - * \param hashmap Hashmap pointer - */ + void BH_HashmapFree(BH_Hashmap *hashmap); -/** - * Clears the \a hashmap. - * - * \param hashmap Hashmap pointer - */ + void BH_HashmapClear(BH_Hashmap *hashmap); -/** - * Reserves space for \a size amount of elements in the \a hashmap. - * - * This function can both expand and shrink the available space in hashmap. - * This function takes into account current hashmap load factor. - * - * \param hashmap Hahsmap pointer - * \param size Capacity - * - * \note Calling this function will invalidate iterators. - * \note Actual hashmap capacity can be bigger then requested. - * - * \return On success, returns zero. - * \return On failure, returns error code. - */ + int BH_HashmapReserve(BH_Hashmap *hashmap, size_t size); -/** - * Inserts the pair \a key \a value pair into the \a hashmap. - * - * \param hashmap Hashmap pointer - * \param key Key - * \param value Value - * - * \note This function allows duplicates to be inserted. - * \note Calling this function will invalidate iterators. - * - * \return On success, returns zero. - * \return On failure, returns error code. - */ + int BH_HashmapInsert(BH_Hashmap *hashmap, void *key, void *value); -/** - * Removes value from the \a hashmap by \a key. - * - * \param hashmap Hashmap pointer - * \param key Key - * - * \note Calling this function will invalidate iterators. - * \note If hashmap contains several elements with the same key, this function - * will remove only one key-value pair. - */ + void BH_HashmapRemove(BH_Hashmap *hashmap, void *key); -/** - * Returns \a value from the \a hashmap by \a key. - * - * \param hashmap Hashmap pointer - * \param key Key - * \param value Value (optional) - * - * \return On success, returns zero. - * \return On failure, returns error code. - */ + int BH_HashmapAt(BH_Hashmap *hashmap, void *key, void **value); -/** - * Checks if the \a hashmap is empty. - * - * \param hashmap Hashmap pointer - * - * \return If hashmap is empty, returns non-zero value - * \return If hashmap is not empty, returns zero - */ + int BH_HashmapEmpty(BH_Hashmap *hashmap); -/** - * Returns the size of the \a hashmap. - * - * \param hashmap Hashmap pointer - * - * \return Returns the size of the hashmap. - */ + size_t BH_HashmapSize(BH_Hashmap *hashmap); -/** - * Returns the capacity of the \a hashmap. - * - * \param hashmap Hashmap pointer - * - * \return Returns the capacity of the hashmap. - */ + size_t BH_HashmapCapacity(BH_Hashmap *hashmap); -/** - * Returns the load factor of the \a hashmap. - * - * \param hashmap Hashmap pointer - * - * \return Returns the load factor of the hashmap. - */ + float BH_HashmapFactor(BH_Hashmap *hashmap); -/** - * Sets the load \a factor of the \a hashmap. - * - * \param hashmap Hashmap pointer - * \param factor Load factor - * - * \note New load factor will be applied on the next reserve/insert operation. - */ + void BH_HashmapSetFactor(BH_Hashmap *hashmap, float factor); -/** - * Returns the iterator to the element in the \a hashmap by \a key. - * - * \param hashmap Hashmap pointer - * \param iter Iterator - * - * \return On success, returns iterator value. - * \return On failure, returns NULL pointer. - * - * \note If hashmap contains several elements with the same key, this function - * will return iterator to one of them - */ + void *BH_HashmapIterAt(BH_Hashmap *hashmap, void *key); -/** - * Returns next element \a iter in the \a hashmap. - * - * If \a iter is NULL pointer, then this function will return iter to the - * first element of the hashmap. - * - * \param hashmap Hashmap pointer - * \param iter Iterator - * - * \return On success, returns new iterator value for the next element. - * \return On failure, returns NULL pointer. - */ + void *BH_HashmapIterNext(BH_Hashmap *hashmap, void *iter); -/** - * Removes key-value from the \a hashmap pointed by \a iter. - * - * \param hashmap Hashmap pointer - * \param iter Iterator - * - * \note Calling this function will invalidate iterators. - */ + void BH_HashmapIterRemove(BH_Hashmap *hashmap, void *iter); -/** - * Returns key, pointed by the \a iter. - * - * \param iter Iterator - * - * \return Returns key. - */ + void *BH_HashmapIterKey(void *iter); -/** - * Returns value, pointed by the \a iter. - * - * \param iter Iterator - * - * \return Returns value. - */ + void *BH_HashmapIterValue(void *iter); |
