1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22 /* 23 * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. 24 */ 25 #ifndef _HASH_H 26 #define _HASH_H 27 28 typedef struct hash_entry { 29 struct hash_entry *next_entry; 30 struct hash_entry *right_entry; 31 struct hash_entry *left_entry; 32 char *key; 33 char *data; 34 } hash_entry; 35 36 typedef struct hash { 37 size_t size; 38 hash_entry **table; 39 hash_entry *start; 40 enum hash_type { 41 String_Key = 0, 42 Integer_Key = 1 43 } hash_type; 44 } hash; 45 46 extern hash *make_hash(size_t); 47 extern hash *make_ihash(size_t); 48 extern char **get_hash(hash *, char *); 49 extern char **find_hash(hash *, const char *); 50 extern char *del_hash(hash *, const char *); 51 extern size_t operate_hash(hash *, void (*)(), const char *); 52 extern void destroy_hash(hash *, int (*)(), const char *); 53 54 #endif /* _HASH_H */ 55