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