|
ucx
UAP Common Extensions
|
Interface for map implementations. More...
Go to the source code of this file.
Data Structures | |
| struct | cx_hash_key_s |
| Internal structure for a key within a hash map. More... | |
Macros | |
| #define | CX_HASH_KEY(key) |
| Creates a hash key from any of the supported types with implicit length. | |
Typedefs | |
| typedef struct cx_hash_key_s | CxHashKey |
| Type for a hash key. | |
Functions | |
| void | cx_hash_murmur (CxHashKey *key) |
| Computes a murmur2 32-bit hash. | |
| static uint32_t | cx_hash_u32 (uint32_t x) |
| Mixes up a 32-bit integer to be used as a hash. | |
| static uint64_t | cx_hash_u64 (uint64_t x) |
| Mixes up a 64-bit integer to be used as a hash. | |
| CxHashKey | cx_hash_key (const void *obj, size_t len) |
| Computes a hash key for an arbitrary object. | |
| static CxHashKey | cx_hash_key_u32 (uint32_t x) |
| Computes a hash key from a 32-bit integer. | |
| static CxHashKey | cx_hash_key_u64 (uint64_t x) |
| Computes a hash key from a 64-bit integer. | |
| static CxHashKey | cx_hash_key_str (const char *str) |
| Computes a hash key from a string. | |
| static CxHashKey | cx_hash_key_ustr (const unsigned char *str) |
| Computes a hash key from a string. | |
| static CxHashKey | cx_hash_key_bytes (const unsigned char *bytes, size_t len) |
| Computes a hash key from a byte array. | |
| static CxHashKey | cx_hash_key_cxstr (cxstring str) |
| Computes a hash key from a UCX string. | |
| static CxHashKey | cx_hash_key_mutstr (cxmutstr str) |
| Computes a hash key from a UCX string. | |
| static CxHashKey | cx_hash_key_identity (CxHashKey key) |
| The identity function for the CX_HASH_KEY() macro. | |
| static CxHashKey | cx_hash_key_deref (const CxHashKey *key) |
| The dereference function for the CX_HASH_KEY() macro. | |
| int | cx_hash_key_cmp (const void *left, const void *right) |
| Compare function for hash keys. | |
| cxstring | cx_hash_key_as_string (const CxHashKey *key) |
| Interprets the key data as a string and returns it. | |
Interface for map implementations.
| #define CX_HASH_KEY | ( | key | ) |
Creates a hash key from any of the supported types with implicit length.
Does nothing when passing a CxHashKey and dereferences CxHashKey pointers.
Supported types are UCX strings, zero-terminated C strings, and 32-bit or 64-bit unsigned integers.
| key | the key data |
CxHashKey | CxHashKey cx_hash_key | ( | const void * | obj, |
| size_t | len ) |
Computes a hash key for an arbitrary object.
The computation uses the in-memory representation that might not be the same on different platforms. Therefore, this hash should not be used for data exchange with different machines.
| obj | a pointer to an arbitrary object |
| len | the length of the object in memory |
Interprets the key data as a string and returns it.
| key | the key |
|
inlinestatic |
Computes a hash key from a byte array.
| bytes | the array |
| len | the length |
| int cx_hash_key_cmp | ( | const void * | left, |
| const void * | right ) |
Compare function for hash keys.
The pointers are untyped to be compatible with the cx_compare_func signature.
| left | (CxHashKey*) the first key |
| right | (CxHashKey*) the second key |
Computes a hash key from a UCX string.
| str | the string |
The dereference function for the CX_HASH_KEY() macro.
You should never need to use this manually.
| key | a pointer to a key |
The identity function for the CX_HASH_KEY() macro.
You should never need to use this manually.
| key | the key |
Computes a hash key from a UCX string.
| str | the string |
|
inlinestatic |
Computes a hash key from a string.
The string needs to be zero-terminated.
| str | the string |
|
inlinestatic |
Computes a hash key from a 32-bit integer.
| x | the integer |
|
inlinestatic |
Computes a hash key from a 64-bit integer.
| x | the integer |
|
inlinestatic |
Computes a hash key from a string.
Use this function when the string is represented as an unsigned char array.
The string needs to be zero-terminated.
| str | the string |
| void cx_hash_murmur | ( | CxHashKey * | key | ) |
Computes a murmur2 32-bit hash.
You need to initialize data and len in the key struct. The hash is then directly written to that struct.
Usually you should not need this function. Use cx_hash_key(), instead.
data is NULL, the hash is defined as 1574210520.| key | the key, the hash shall be computed for |
|
inlinestatic |
Mixes up a 32-bit integer to be used as a hash.
This function produces no collisions and has a good statistical distribution.
| x | the integer |
|
inlinestatic |
Mixes up a 64-bit integer to be used as a hash.
This function produces no collisions and has a good statistical distribution.
| x | the integer |