⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hash.h

📁 操作系统SunOS 4.1.3版本的源码
💻 H
字号:
/*	@(#)hash.h 1.1 92/07/30 SMI	*//* * Copyright (c) 1985 by Sun Microsystems, Inc. *//* * This file contains the routine definitions for all of the routines exported * by the hash table package. */#ifndef	hash_defined#define	hash_defined/* * Do not typedef Hash if this header file is being used by hash.c. */#ifndef Hash_defined#define	Hash_definedstruct _hash {	int count;		/* Current number of entires */	long key_empty;		/* Value to use for an empty key */	char (*key_equal)();	/* Routine to test equality of two keys */	int (*key_hash)();	/* Function to hash a key */	int (*key_insert)();	/* Function to insert a key */	long *keys;		/* Array of keys */	int limit;		/* Maximum entries before rehashing */	long value_empty;	/* Value to use for an empty value */	int (*value_insert)();	/* Routine to insert a value */	long *values;		/* Values array */	int slots;		/* Number of slots in hash table */};typedef struct _hash *Hash;#endif/* * hash_create(Size, Key_Empty, Key_Equal, Key_Hash, Key_Insert, Value_Empty, * Value_Insert, 7) will create and return a hash table using the parameters. * Due to the large  number of arguments, the last argument must be the number * 7 so that a quick check can be made to make sure that they are all there. * All of the arguments except the last one can be NULL'ed out. */Hash hash_create();/* * hash_find(Hash, Key, &Value)=>{True,False} will lookup Key in Hash.  If Key * is found in Hash, True will be returned and the associated value will be * stored into Value, provided Value is non-Null.  Otherwise, False will be * returned. */Bool hash_find();/* * hash_get(Hash, Key)=>Value will lookup the value for Key in Hash.  If Key * is not in Hash, a fatal error occurs. */long hash_get();/* * hash_insert(Hash, Key, Value)=>{True,False} will insert Value into Hash * under Key.  If Key is already in Hash, False will be returned and the * previous value will not be changed.  Otherwise, True will be returned. */Bool hash_insert();/* * hash_lookup(Hash, Key)=>value will lookup Key in Hash.  If Key is not * in Hash, Empty_Value will be returned. */long hash_lookup();/* * hash_replace(Hash, Key, Value)=>{True,False} will insert Value into Hash * under Key.  If Key was already in Hash, True will be returned and the * previous value will be replaced.  Otherwise, False will be returned and * the Value will be inserted under Key. */Bool hash_replace();/* * hash_show(Hash) will show the contents of Hash on the console.  This * routine is used for testing and debugging purposes only. */void hash_show();/* * hash_size(Hash) returns the number of entries in Hash. */int hash_size();#endif#define	SMALLEST_BLK	sizeof(struct dblk) 	/* Size of smallest block *//* * Description of a data block.   * A data block consists of a length word, possibly followed by * a filler word for alignment, followed by the user's data. * To back up from the user's data to the length word, use * (address of data) - ALIGNSIZ; */#ifdef sparc#define ALIGNSIZ	sizeof(double)struct	dblk	{	long	size;			/* Size of the block */	long	filler;			/* filler, for double alignment */	char	data[ALIGNSIZ];		/* Addr returned to the caller */};#endif#ifdef mc68000#define ALIGNSIZ	sizeof(long)struct	dblk	{	long	size;			/* Size of the block */	char	data[ALIGNSIZ];		/* Addr returned to the caller */};#endif#define	roundup(x, y)   ((((x)+((y)-1))/(y))*(y))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -