hashtab.h

来自「kaffe Java 解释器语言,源码,Java的子集系统,开放源代码」· C头文件 代码 · 共 59 行

H
59
字号
/* * hashtab.h * * Internal hash table library. * * Copyright (c) 1998 *	Transvirtual Technologies, Inc.  All rights reserved. * * See the file "license.terms" for information on usage and redistribution  * of this file.  */#ifndef __hashtab_h#define __hashtab_h/* * Intern hash table library. *  * This keeps a hash table consisting of pointers to whatever, where * whatever is some chunk of memory allocated from the GC. This is used * for intern'ing strings, etc.  Note that this hashtable implementation * operates on pointers only, it can't be used for storing arbitrary * (key, value) pairs. *  * The Hash table is not walked by the GC. * You can supply a function to allocate memory for the hashtable. * If you do not, kaffe's default KCALLOC/KFREE will be used. * * You are responsible for providing appropriate synchronization. * You are allowed to remove entries while more memory is being allocated * when the table is being resized. *  * You supply the hashing function and the equality tester. * * The hashfunc should return a 32 bit hash value. * * The compfunc_t should return 0 iff the two memory blocks are "equal". * It is assumed that compfunc(x, x) == 0. It is always called such * that the first argument is the pointer in question and the second * argument is the pointer already in the hash table. */struct _hashtab;typedef struct _hashtab	*hashtab_t;typedef int		(*hashfunc_t)(const void *ptr1);typedef int		(*compfunc_t)(const void *ptr1, const void *ptr2);typedef void*		(*allocfunc_t)(size_t);typedef void		(*freefunc_t)(const void *ptr);extern hashtab_t	hashInit(hashfunc_t, compfunc_t, 				 allocfunc_t, freefunc_t);extern void*		hashAdd(hashtab_t, const void*);extern void		hashRemove(hashtab_t, const void*);extern void*		hashFind(hashtab_t, const void*);extern void		hashDestroy(hashtab_t);#endif	/* __hashtab_h */

⌨️ 快捷键说明

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