1*a36eca08SCraig Rodrigues.\" $OpenBSD: ohash_interval.3,v 1.1 2014/05/12 19:09:00 espie Exp $ 2*a36eca08SCraig Rodrigues.\" Copyright (c) 2001 Marc Espie <espie@openbsd.org> 3*a36eca08SCraig Rodrigues.\" 4*a36eca08SCraig Rodrigues.\" Permission to use, copy, modify, and distribute this software for any 5*a36eca08SCraig Rodrigues.\" purpose with or without fee is hereby granted, provided that the above 6*a36eca08SCraig Rodrigues.\" copyright notice and this permission notice appear in all copies. 7*a36eca08SCraig Rodrigues.\" 8*a36eca08SCraig Rodrigues.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9*a36eca08SCraig Rodrigues.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10*a36eca08SCraig Rodrigues.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11*a36eca08SCraig Rodrigues.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12*a36eca08SCraig Rodrigues.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13*a36eca08SCraig Rodrigues.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14*a36eca08SCraig Rodrigues.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15*a36eca08SCraig Rodrigues.\" 16*a36eca08SCraig Rodrigues.Dd June 5, 2013 17*a36eca08SCraig Rodrigues.Dt OHASH_INTERVAL 3 18*a36eca08SCraig Rodrigues.Os 19*a36eca08SCraig Rodrigues.Sh NAME 20*a36eca08SCraig Rodrigues.Nm ohash_interval , 21*a36eca08SCraig Rodrigues.Nm ohash_create_entry , 22*a36eca08SCraig Rodrigues.Nm ohash_qlookup , 23*a36eca08SCraig Rodrigues.Nm ohash_qlookupi 24*a36eca08SCraig Rodrigues.Nd helper functions for open hashing 25*a36eca08SCraig Rodrigues.Sh SYNOPSIS 26*a36eca08SCraig Rodrigues.In stdint.h 27*a36eca08SCraig Rodrigues.In stddef.h 28*a36eca08SCraig Rodrigues.In ohash.h 29*a36eca08SCraig Rodrigues.Ft uint32_t 30*a36eca08SCraig Rodrigues.Fn ohash_interval "const char *start" "const char **pend" 31*a36eca08SCraig Rodrigues.Ft "void *" 32*a36eca08SCraig Rodrigues.Fn ohash_create_entry "struct ohash_info *info" "const char *start" "const char **pend" 33*a36eca08SCraig Rodrigues.Ft "unsigned int" 34*a36eca08SCraig Rodrigues.Fn ohash_qlookupi "struct ohash *h" "const char *start" "const char **pend" 35*a36eca08SCraig Rodrigues.Ft "unsigned int" 36*a36eca08SCraig Rodrigues.Fn ohash_qlookup "struct ohash *h" "const char *start" 37*a36eca08SCraig Rodrigues.Sh DESCRIPTION 38*a36eca08SCraig RodriguesThese functions are commonly used to simplify open hashing usage, and use 39*a36eca08SCraig Rodriguessimilar conventions. 40*a36eca08SCraig RodriguesThey operate indifferently on NUL-terminated strings 41*a36eca08SCraig Rodrigues.Po 42*a36eca08SCraig Rodriguesby setting 43*a36eca08SCraig Rodrigues.Fa *pend 44*a36eca08SCraig Rodrigues= 45*a36eca08SCraig Rodrigues.Dv NULL 46*a36eca08SCraig Rodrigues.Pc 47*a36eca08SCraig Rodriguesor memory ranges 48*a36eca08SCraig Rodrigues.Po 49*a36eca08SCraig Rodriguesdelimited by 50*a36eca08SCraig Rodrigues.Fa start 51*a36eca08SCraig Rodriguesand 52*a36eca08SCraig Rodrigues.Fa *pend 53*a36eca08SCraig Rodrigues.Pc . 54*a36eca08SCraig RodriguesFor NUL-terminated strings, as a side effect, those functions 55*a36eca08SCraig Rodriguesset 56*a36eca08SCraig Rodrigues.Fa *pend 57*a36eca08SCraig Rodriguesto the terminating NUL byte. 58*a36eca08SCraig Rodrigues.Pp 59*a36eca08SCraig Rodrigues.Fn ohash_interval 60*a36eca08SCraig Rodriguesis a simple hashing function that yields good results on common data sets. 61*a36eca08SCraig Rodrigues.Pp 62*a36eca08SCraig Rodrigues.Fn ohash_create_entry 63*a36eca08SCraig Rodriguescan be used to create a new record with a given key. 64*a36eca08SCraig RodriguesIn that case, 65*a36eca08SCraig Rodriguesthe alloc field of 66*a36eca08SCraig Rodrigues.Fa info 67*a36eca08SCraig Rodriguesshould point to a 68*a36eca08SCraig Rodrigues.Xr malloc 3 Ns -like 69*a36eca08SCraig Rodriguesfunction to allocate the storage: 70*a36eca08SCraig Rodrigues.Bd -literal -offset indent 71*a36eca08SCraig Rodriguesp = (*info->alloc)(sz, info->data); 72*a36eca08SCraig Rodrigues.Ed 73*a36eca08SCraig Rodrigues.Pp 74*a36eca08SCraig Rodrigues.Fn ohash_qlookupi 75*a36eca08SCraig Rodriguesis a wrapper function that simply calls 76*a36eca08SCraig Rodrigues.Fn ohash_interval 77*a36eca08SCraig Rodriguesand 78*a36eca08SCraig Rodrigues.Fn ohash_lookup_interval . 79*a36eca08SCraig Rodrigues.Pp 80*a36eca08SCraig Rodrigues.Fn ohash_qlookup 81*a36eca08SCraig Rodriguesis a variation on 82*a36eca08SCraig Rodrigues.Fn ohash_qlookupi 83*a36eca08SCraig Rodriguesdesigned for NUL-terminated strings. 84*a36eca08SCraig Rodrigues.Sh SEE ALSO 85*a36eca08SCraig Rodrigues.Xr ohash_init 3 86*a36eca08SCraig Rodrigues.Sh STANDARDS 87*a36eca08SCraig RodriguesThose functions are completely non-standard and should be avoided in 88*a36eca08SCraig Rodriguesportable programs. 89*a36eca08SCraig Rodrigues.Sh HISTORY 90*a36eca08SCraig RodriguesThose functions were designed and written for 91*a36eca08SCraig Rodrigues.Ox 92*a36eca08SCraig Rodrigues.Xr make 1 93*a36eca08SCraig Rodriguesby Marc Espie in 1999. 94