📄 hash.h
字号:
/* * Copyright (c) 1983, 1985, 1991 Peter J. Nicklin. * Copyright (c) 1991 Version Technology. * All Rights Reserved. * * $License: VT.1.1 $ * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: (1) Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. (2) Redistributions in binary form must reproduce the * above copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. (3) All advertising materials mentioning * features or use of this software must display the following * acknowledgement: ``This product includes software developed by * Version Technology.'' Neither the name of Version Technology nor * the name of Peter J. Nicklin may be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY VERSION TECHNOLOGY ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL VERSION TECHNOLOGY BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * Report problems and direct questions to nicklin@netcom.com * * $Header: hash.h,v 4.3 91/11/25 19:45:47 nicklin Exp $ * * Hash table definitions * * Author: Peter J. Nicklin *//* * Singly-linked list block containing a pointer to a hash table * block for an include file */typedef struct _iblk { int i_loop; struct _hblk *i_hblk; struct _iblk *i_next; } INCBLK;/* * Hash table block */typedef struct _hblk { char *h_key; /* points to key */ char *h_def; /* points to definition string */ int h_val; /* integer value */ struct _iblk *h_sub; /* ptr to include subchain */ struct _hblk *h_tag; /* ptr to auxiliary tag chain */ struct _hblk *h_next; /* ptr to next block */ } HASHBLK;/* * Hash pointer table struct */typedef struct _hash { HASHBLK **hashtab; /* hash pointer table */ HASHBLK *thisblk; /* current hash table block */ int headblk; /* index of head of block chain */ int hashsiz; /* hash table size */ int nk; /* number of keys in table */ } HASH;/* * Functions defined for hash tables */#define htnum(ht) ((ht)->nk) /* return number of keys in table */#define htkey(ht) ((ht)->thisblk->h_key)/* return key from current block */#define htdef(ht) ((ht)->thisblk->h_def)/* return definition from current block */#define htval(ht) ((ht)->thisblk->h_val)/* return value from current block */extern HASHBLK *htbrm(); /* remove hash table block */extern int hthash(); /* compute hash value */extern int htnext(); /* set hash table ptr to next block */extern HASH *htinit(); /* initialize hash table */extern HASHBLK *htinstall(); /* install hash table entry */extern HASHBLK *htlookup(); /* find hash table entry */extern void htrewind(); /* rewind hash table to first block */extern void htrm(); /* remove hash table entry */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -