Files
inh-ros2/lib/util.c
2025-09-02 10:27:53 +02:00

20 lines
541 B
C

/* utils.c */
/** @brief Hash `str` to `hash` for use in a switch case
*
* A string needs to be hashed for it to be used
* inside of a switch statement. We want to use a switch
* statement instead of an if-else chain for it's
* simplicity and lower amount of low-level operations.
*
* @param str The string to hash
*
* @returns hash The hashed version of `str`
*/
unsigned long hash(const char *str) {
unsigned long hash = 5381;
unsigned long int c;
while ((c = *str++))
hash = ((hash << 5) + hash) + c;
return hash;
}