NAME
ohash_interval
,
ohash_create_entry
,
ohash_qlookup
,
ohash_qlookupi
—
helper functions for open
hashing
SYNOPSIS
#include
<stdint.h>
#include <stddef.h>
#include <ohash.h>
uint32_t
ohash_interval
(const
char *start, const char
**pend);
void *
ohash_create_entry
(struct
ohash_info *info, const
char *start, const char
**pend);
unsigned int
ohash_qlookupi
(struct
ohash *h, const char
*start, const char
**pend);
unsigned int
ohash_qlookup
(struct
ohash *h, const char
*start);
DESCRIPTION
These functions are commonly used to simplify open hashing usage,
and use similar conventions. They operate indifferently on NUL-terminated
strings (by setting *pend =
NULL
) or memory ranges (delimited by
start and *pend). For
NUL-terminated strings, as a side effect, those functions set
*pend to the terminating NUL byte.
ohash_interval
()
is a simple hashing function that yields good results on common data
sets.
ohash_create_entry
()
can be used to create a new record with a given key. In that case, the alloc
field of info should point to a
malloc(3)-like function to allocate the storage:
p = (*info->alloc)(sz, info->data);
ohash_qlookupi
()
is a wrapper function that simply calls
ohash_interval
() and
ohash_lookup_interval
().
ohash_qlookup
()
is a variation on ohash_qlookupi
() designed for
NUL-terminated strings.
SEE ALSO
STANDARDS
Those functions are completely non-standard and should be avoided in portable programs.
HISTORY
Those functions were designed and written for OpenBSD make(1) by Marc Espie in 1999.