Go to the source code of this file.
|
unordered_multimap | unordered_multimap_init (size_t key_size, size_t value_size, unsigned long(*hash)(const void *const key), int(*key_comparator)(const void *const one, const void *const two), int(*value_comparator)(const void *const one, const void *const two)) |
|
bk_err | unordered_multimap_rehash (unordered_multimap me) |
|
size_t | unordered_multimap_size (unordered_multimap me) |
|
bk_bool | unordered_multimap_is_empty (unordered_multimap me) |
|
bk_err | unordered_multimap_put (unordered_multimap me, void *key, void *value) |
|
void | unordered_multimap_get_start (unordered_multimap me, void *key) |
|
bk_bool | unordered_multimap_get_next (void *value, unordered_multimap me) |
|
size_t | unordered_multimap_count (unordered_multimap me, void *key) |
|
bk_bool | unordered_multimap_contains (unordered_multimap me, void *key) |
|
bk_bool | unordered_multimap_remove (unordered_multimap me, void *key, void *value) |
|
bk_bool | unordered_multimap_remove_all (unordered_multimap me, void *key) |
|
bk_err | unordered_multimap_clear (unordered_multimap me) |
|
unordered_multimap | unordered_multimap_destroy (unordered_multimap me) |
|
◆ unordered_multimap
The unordered_multimap data structure, which is a collection of key-value pairs, hashed by keys.
◆ unordered_multimap_clear()
Clears the key-value pairs from the unordered multi-map.
- Parameters
-
me | the unordered multi-map to clear |
- Returns
- BK_OK if no error
-
-BK_ENOMEM if out of memory
◆ unordered_multimap_contains()
Determines if the unordered multi-map contains the specified key. The pointer to the key being passed in should point to the key type which this unordered multi-map holds. For example, if this unordered multi-map holds key integers, the key pointer should be a pointer to an integer. Since the key is being copied, the pointer only has to be valid when this function is called.
- Parameters
-
me | the unordered multi-map to check for the key |
key | the key to check |
- Returns
- BK_TRUE if the unordered multi-map contained the key, otherwise BK_FALSE
◆ unordered_multimap_count()
Determines the number of times the key appears in the unordered multi-map. The pointer to the key being passed in should point to the key type which this unordered multi-map holds. For example, if this unordered multi-map holds key integers, the key pointer should be a pointer to an integer. Since the key is being copied, the pointer only has to be valid when this function is called.
- Parameters
-
me | the unordered multi-map to check for the key |
key | the key to check |
- Returns
- the number of times the key appears in the unordered multi-map
◆ unordered_multimap_destroy()
Frees the unordered multi-map memory. Performing further operations after calling this function results in undefined behavior. Freeing NULL is legal, and causes no operation to be performed.
- Parameters
-
me | the unordered multi-map to free from memory |
- Returns
- NULL
◆ unordered_multimap_get_next()
Iterates over the values for the specified key. Must be called after starting the iterator. The unordered multi-map must not be mutated between start and iterations. The pointer to the value being obtained should point to the value type which this unordered multi-map holds. For example, if this unordered multi-map holds value integers, the value pointer should be a pointer to an integer. Since the value is being copied, the pointer only has to be valid when this function is called.
- Parameters
-
value | the value to be copied to from iteration |
me | the unordered multi-map to iterate over |
- Returns
- BK_TRUE if there exist more values for the key which is being iterated over, otherwise BK_FALSE
◆ unordered_multimap_get_start()
Creates the iterator for the specified key. To iterate over the values, keep getting the next value. Between starting and iterations, the unordered multi-map must not be mutated. The pointer to the key being passed in should point to the key type which this unordered multi-map holds. For example, if this unordered multi-map holds key integers, the key pointer should be a pointer to an integer. Since the key is being copied, the pointer only has to be valid when this function is called.
- Parameters
-
me | the unordered multi-map to start the iterator for |
key | the key to start the iterator for |
◆ unordered_multimap_init()
unordered_multimap unordered_multimap_init |
( |
size_t |
key_size, |
|
|
size_t |
value_size, |
|
|
unsigned long(*)(const void *const key) |
hash, |
|
|
int(*)(const void *const one, const void *const two) |
key_comparator, |
|
|
int(*)(const void *const one, const void *const two) |
value_comparator |
|
) |
| |
◆ unordered_multimap_is_empty()
Determines whether or not the unordered multi-map is empty.
- Parameters
-
me | the unordered multi-map to check |
- Returns
- BK_TRUE if the unordered multi-map is empty, otherwise BK_FALSE
◆ unordered_multimap_put()
Adds a key-value pair to the unordered multi-map. The pointer to the key and value being passed in should point to the key and value type which this unordered multi-map holds. For example, if this unordered multi-map holds integer keys and values, the key and value pointer should be a pointer to an integer. Since the key and value are being copied, the pointer only has to be valid when this function is called.
- Parameters
-
me | the unordered multi-map to add to |
key | the key to add |
value | the value to add |
- Returns
- BK_OK if no error
-
-BK_ENOMEM if out of memory
◆ unordered_multimap_rehash()
Rehashes all the keys in the unordered multi-map. Used when storing references and changing the keys. This should rarely be used.
- Parameters
-
me | the unordered multi-map to rehash |
- Returns
- BK_OK if no error
-
-BK_ENOMEM if out of memory
◆ unordered_multimap_remove()
Removes the key-value pair from the unordered multi-map if it contains it. The pointer to the key and value being passed in should point to the key and value type which this unordered multi-map holds. For example, if this unordered multi-map holds integer keys and values, the key and value pointer should be a pointer to an integer. Since the key and value are being copied, the pointer only has to be valid when this function is called.
- Parameters
-
me | the unordered multi-map to remove a key from |
key | the key to remove |
value | the value to remove |
- Returns
- BK_TRUE if the unordered multi-map contained the key, otherwise BK_FALSE
◆ unordered_multimap_remove_all()
Removes all the key-value pairs from the unordered multi-map specified by the key. The pointer to the key being passed in should point to the key type which this unordered multi-map holds. For example, if this unordered multi-map holds key integers, the key pointer should be a pointer to an integer. Since the key is being copied, the pointer only has to be valid when this function is called.
- Parameters
-
me | the unordered multi-map to remove a key-value pair from |
key | the key to remove |
- Returns
- BK_TRUE if the unordered multi-map contained the key, otherwise BK_FALSE
◆ unordered_multimap_size()
Gets the size of the unordered multi-map.
- Parameters
-
me | the unordered multi-map to check |
- Returns
- the size of the unordered multi-map