#include "shash.h"
#include <limits.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
Go to the source code of this file.
◆ SHASH_API_VERSION
#define SHASH_API_VERSION 1002000 |
◆ SHASH_API_VERSION_STR
#define SHASH_API_VERSION_STR "1.2.0" |
◆ SHASH_FILLPCT
How full to get before doubling the size of the shash, 0-99.
This counts values, not actual buckets filled.
Definition at line 28 of file shash.c.
◆ SHASH_IMPLEMENTATION
#define SHASH_IMPLEMENTATION 1002000 |
◆ SHASH_IMPLEMENTATION_STR
#define SHASH_IMPLEMENTATION_STR "1.2.0" |
◆ SHASH_INITIAL_SIZE
#define SHASH_INITIAL_SIZE 64 |
Size to initialize shash to upon creation.
This has to be 2^n due to some bit math cheating ("index & size-1" to do modulus division to wrap the target bucket).
Definition at line 20 of file shash.c.
◆ shash_create()
shash* shash_create |
( |
uint32_t |
options | ) |
|
Initialize a shash object.
- Parameters
-
[in] | options | Bitwise OR'd option flags. Currently unused. |
- Returns
- Pointer to malloc'd shash.
Definition at line 105 of file shash.c.
◆ shash_destroy()
int shash_destroy |
( |
shash * |
h | ) |
|
Destroy a shash object, free'ing the memory used.
- Parameters
-
[in] | h | Pointer to shash to be destroyed. |
- Returns
- 0 on success.
Definition at line 136 of file shash.c.
◆ shash_get()
Find a pointer associated with the given string.
- Parameters
-
[in] | h | Pointer to shash to be searched. |
[in] | key | Key for which to search. |
- Returns
- Pointer to value, or NULL if key is not found.
Definition at line 205 of file shash.c.
◆ shash_next()
Retrieves the next key-value pair in the shash. The order in which the pointers are returned shall be consistent but may be arbitrary.
Consistent refers only to running identical code and rewinding and traversing the data. Adding or removing pointers may modify the order in which keys are returned.
On end-of-shash, the shash is rewind()'d and the state of the key and value inputs are set to NULL.
- Parameters
-
[in] | h | Pointer to shash to be traversed. |
[out] | key | Pointer to fill with the next key, NULL to ignore. |
[out] | value | Pointer to fill with the next value, NULL to ignore. |
- Returns
- -1 on error, positive 1 on end-of-shash, and 0 on success.
Definition at line 283 of file shash.c.
◆ shash_remove()
Remove a pointer associated with the given string.
- Parameters
-
[in] | h | Pointer to shash to be modified. |
[in] | key | Key for which to remove. |
- Returns
- 0 on success.
Definition at line 146 of file shash.c.
◆ shash_rewind()
int shash_rewind |
( |
shash * |
h | ) |
|
Rewind iterator for traversing all the keys and values.
- Parameters
-
[in] | h | Pointer to shash to be reset. |
- Returns
- number of items currently in the shash.
Definition at line 277 of file shash.c.
◆ shash_set()
Add or overwrite a pointer, associating it with the given key.
- Parameters
-
[in] | h | Pointer to shash to be modified. |
[in] | key | Null-terminated string with which to associate the new pointer. |
[in] | value | New pointer to store.. |
- Returns
- 0 on add, 1 on overwrite, and -1 on error.
Definition at line 224 of file shash.c.
◆ shash_size()
int shash_size |
( |
shash * |
h | ) |
|
Retrieves the number of key-value pairs in the hash object.
- Parameters
-
[in] | h | Pointer to shash to be analyzed. |
Definition at line 320 of file shash.c.
◆ shash_version()
const char* shash_version |
( |
| ) |
|
Returns the source code version and the implemented API version.
No assumptions are made about the format of the return value.
Definition at line 324 of file shash.c.