15702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes/*-
25702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * Copyright (c) 2015 Nuxi, https://nuxi.nl/
35702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes *
45702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * Redistribution and use in source and binary forms, with or without
55702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * modification, are permitted provided that the following conditions
65702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * are met:
75702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * 1. Redistributions of source code must retain the above copyright
85702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes *    notice, this list of conditions and the following disclaimer.
95702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * 2. Redistributions in binary form must reproduce the above copyright
105702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes *    notice, this list of conditions and the following disclaimer in the
115702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes *    documentation and/or other materials provided with the distribution.
125702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes *
135702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
145702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
155702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
165702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
175702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
185702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
195702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
205702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
215702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
225702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
235702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * SUCH DAMAGE.
245702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes *
255702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes * $FreeBSD: head/lib/libc/stdlib/hsearch.h 292767 2015-12-27 07:50:11Z ed $
265702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes */
275702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes
285702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes#ifndef HSEARCH_H
295702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes#define HSEARCH_H
305702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes
315702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes#include <search.h>
325702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes
335702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughesstruct __hsearch {
345702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes	size_t offset_basis;	/* Initial value for FNV-1a hashing. */
355702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes	size_t index_mask;	/* Bitmask for indexing the table. */
365702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes	size_t entries_used;	/* Number of entries currently used. */
375702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes	ENTRY *entries;		/* Hash table entries. */
385702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes};
395702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes
405702c6ff454a8a9695fae64597d7692b06fc27b5Elliott Hughes#endif
41