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

📄 hash.h

📁 SVMcfg: Learns a weighted context free grammar from examples. Training examples (e.g. for natural la
💻 H
字号:
/* hash.h
 *
 */

#include <stdlib.h>
#include <stdio.h>
#include <limits.h>

#include "mmm.h"

/* 
 * typedef size_t 	(*KEY_HASH)(const HASH_KEY);
 * typedef int    	(*KEY_NEQ)(const HASH_KEY, const HASH_KEY);
 * typedef HASH_KEY	(*KEY_COPY)(const HASH_KEY);
 * typedef void		(*KEY_FREE)(HASH_KEY);
 * typedef void		(*VALUE_FREE)(HASH_VALUE);
 * typedef HASH_VALUE	NULL_VALUE
 */

#define HASH_HEADER(HASH, HASH_KEY, HASH_VALUE)	\
						\
typedef struct HASH ## _cell {	\
  HASH_KEY	   key;		\
  size_t	   hashedkey;	\
  struct HASH ## _cell *next;	\
  HASH_VALUE	   value;	\
} * HASH ## _cell_ptr;		\
				\
typedef struct HASH ## _table {	/* hash table of pointers */ 	\
  HASH ## _cell_ptr *table;					\
  size_t 	    tablesize;	/* size of table */		\
  size_t 	    size; 	/* no of elts in hash table */	\
} * HASH;							\
	\
HASH make_ ## HASH(size_t initial_size);	\
HASH_VALUE HASH ## _ref(const HASH ht, const HASH_KEY key);	\
HASH_VALUE HASH ## _set(HASH ht, HASH_KEY key, HASH_VALUE value);	\
HASH_VALUE HASH ## _delete(HASH ht, HASH_KEY key);	\
void free_ ## HASH(HASH ht);	\
size_t HASH ## _size(HASH ht);	\
HASH ## _cell_ptr HASH ## _find(HASH ht, const HASH_KEY key);	\
HASH_VALUE *HASH ## _valuep(HASH ht, const HASH_KEY key);      	\
	\
	\
typedef struct HASH ## it { 	\
  HASH_KEY          key;	\
  HASH_VALUE        value;	\
  HASH		    ht;		\
  HASH ## _cell_ptr next;	\
  size_t            index;	\
} HASH ## it;			\
				\
HASH ## it HASH ## it_init(HASH ht);		\
HASH ## it HASH ## it_next(HASH ## it hit);	\
int HASH ## it_ok(HASH ## it hit);  

#define HASH_HEADER_ADD(HASH, HASH_KEY, HASH_VALUE)	\
							\
HASH_HEADER(HASH, HASH_KEY, HASH_VALUE)			\
HASH_VALUE HASH ## _inc(HASH ht, const HASH_KEY key, HASH_VALUE inc);

⌨️ 快捷键说明

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