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