xref: /openbsd/usr.bin/mandoc/mandoc_ohash.c (revision c4b66cae)
1*c4b66caeSschwarze /*	$OpenBSD: mandoc_ohash.c,v 1.1 2015/10/13 15:50:15 schwarze Exp $ */
2*c4b66caeSschwarze /*
3*c4b66caeSschwarze  * Copyright (c) 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
4*c4b66caeSschwarze  *
5*c4b66caeSschwarze  * Permission to use, copy, modify, and distribute this software for any
6*c4b66caeSschwarze  * purpose with or without fee is hereby granted, provided that the above
7*c4b66caeSschwarze  * copyright notice and this permission notice appear in all copies.
8*c4b66caeSschwarze  *
9*c4b66caeSschwarze  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES
10*c4b66caeSschwarze  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*c4b66caeSschwarze  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
12*c4b66caeSschwarze  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*c4b66caeSschwarze  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*c4b66caeSschwarze  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*c4b66caeSschwarze  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*c4b66caeSschwarze  */
17*c4b66caeSschwarze #include <sys/types.h>
18*c4b66caeSschwarze #include <stddef.h>
19*c4b66caeSschwarze #include <stdlib.h>
20*c4b66caeSschwarze 
21*c4b66caeSschwarze #include "mandoc_aux.h"
22*c4b66caeSschwarze #include "mandoc_ohash.h"
23*c4b66caeSschwarze 
24*c4b66caeSschwarze static	void	 *hash_alloc(size_t, void *);
25*c4b66caeSschwarze static	void	 *hash_calloc(size_t, size_t, void *);
26*c4b66caeSschwarze static	void	  hash_free(void *, void *);
27*c4b66caeSschwarze 
28*c4b66caeSschwarze 
29*c4b66caeSschwarze void
30*c4b66caeSschwarze mandoc_ohash_init(struct ohash *h, unsigned int sz, ptrdiff_t ko)
31*c4b66caeSschwarze {
32*c4b66caeSschwarze 	struct ohash_info info;
33*c4b66caeSschwarze 
34*c4b66caeSschwarze 	info.alloc = hash_alloc;
35*c4b66caeSschwarze 	info.calloc = hash_calloc;
36*c4b66caeSschwarze 	info.free = hash_free;
37*c4b66caeSschwarze 	info.data = NULL;
38*c4b66caeSschwarze 	info.key_offset = ko;
39*c4b66caeSschwarze 
40*c4b66caeSschwarze 	ohash_init(h, sz, &info);
41*c4b66caeSschwarze }
42*c4b66caeSschwarze 
43*c4b66caeSschwarze static void *
44*c4b66caeSschwarze hash_alloc(size_t sz, void *arg)
45*c4b66caeSschwarze {
46*c4b66caeSschwarze 
47*c4b66caeSschwarze 	return mandoc_malloc(sz);
48*c4b66caeSschwarze }
49*c4b66caeSschwarze 
50*c4b66caeSschwarze static void *
51*c4b66caeSschwarze hash_calloc(size_t n, size_t sz, void *arg)
52*c4b66caeSschwarze {
53*c4b66caeSschwarze 
54*c4b66caeSschwarze 	return mandoc_calloc(n, sz);
55*c4b66caeSschwarze }
56*c4b66caeSschwarze 
57*c4b66caeSschwarze static void
58*c4b66caeSschwarze hash_free(void *p, void *arg)
59*c4b66caeSschwarze {
60*c4b66caeSschwarze 
61*c4b66caeSschwarze 	free(p);
62*c4b66caeSschwarze }
63