aboutsummaryrefslogtreecommitdiff
path: root/include/BH/Hashmap.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/BH/Hashmap.h')
-rw-r--r--include/BH/Hashmap.h167
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);