ohash_interval(3)
Canonical URL: /ohash_interval.3/
NAME
ohash_interval,
ohash_create_entry,
ohash_qlookup,
ohash_qlookupi —
helper functions for open
hashing
SYNOPSIS
/* -lutil */
#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.
Need conceptual guidance? Continue in the OpenBSD Handbook.