1 /* 2 * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. 3 * All Rights Reserved. 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the "Software"), 7 * to deal in the Software without restriction, including without limitation 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 * and/or sell copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice (including the next 13 * paragraph) shall be included in all copies or substantial portions of the 14 * Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19 * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22 * DEALINGS IN THE SOFTWARE. 23 * 24 * Authors: Rickard E. (Rik) Faith <faith@valinux.com> 25 */ 26 27 #define HASH_SIZE 512 /* Good for about 100 entries */ 28 /* If you change this value, you probably 29 have to change the HashHash hashing 30 function! */ 31 32 typedef struct HashBucket { 33 unsigned long key; 34 void *value; 35 struct HashBucket *next; 36 } HashBucket, *HashBucketPtr; 37 38 typedef struct HashTable { 39 unsigned long magic; 40 unsigned long entries; 41 unsigned long hits; /* At top of linked list */ 42 unsigned long partials; /* Not at top of linked list */ 43 unsigned long misses; /* Not in table */ 44 HashBucketPtr buckets[HASH_SIZE]; 45 int p0; 46 HashBucketPtr p1; 47 } HashTable, *HashTablePtr; 48