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

📄 ha0ha.ic

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 IC
字号:
/************************************************************************The hash table with external chains(c) 1994-1997 Innobase OyCreated 8/18/1994 Heikki Tuuri*************************************************************************/#include "ut0rnd.h"#include "mem0mem.h"/***************************************************************Deletes a hash node. */voidha_delete_hash_node(/*================*/	hash_table_t*	table,		/* in: hash table */	ha_node_t*	del_node);	/* in: node to be deleted *//**********************************************************************Gets a hash node data. */UNIV_INLINEvoid*ha_node_get_data(/*=============*/				/* out: pointer to the data */	ha_node_t*	node)	/* in: hash chain node */{	return(node->data);}/**********************************************************************Sets hash node data. */UNIV_INLINEvoidha_node_set_data(/*=============*/	ha_node_t*	node,	/* in: hash chain node */	void*		data)	/* in: pointer to the data */{	node->data = data;}/**********************************************************************Gets the next node in a hash chain. */UNIV_INLINEha_node_t*ha_chain_get_next(/*==============*/				/* out: next node, NULL if none */	ha_node_t*	node)	/* in: hash chain node */{	return(node->next);}/**********************************************************************Gets the first node in a hash chain. */UNIV_INLINEha_node_t*ha_chain_get_first(/*===============*/				/* out: first node, NULL if none */	hash_table_t*	table,	/* in: hash table */	ulint		fold)	/* in: fold value determining the chain */{	return(hash_get_nth_cell(table, hash_calc_hash(fold, table))->node);}/*****************************************************************Looks for an element in a hash table. */UNIV_INLINEha_node_t*ha_search(/*======*/				/* out: pointer to the first hash table node				in chain having the fold number, NULL if not				found */	hash_table_t*	table,	/* in: hash table */	ulint		fold)	/* in: folded value of the searched data */{	ha_node_t*	node;#ifdef UNIV_SYNC_DEBUG	ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));#endif /* UNIV_SYNC_DEBUG */	node = ha_chain_get_first(table, fold);	while (node) {		if (node->fold == fold) {			return(node);		}		node = ha_chain_get_next(node);	}	return(NULL);}/*****************************************************************Looks for an element in a hash table. */UNIV_INLINEvoid*ha_search_and_get_data(/*===================*/				/* out: pointer to the data of the first hash				table node in chain having the fold number,				NULL if not found */	hash_table_t*	table,	/* in: hash table */	ulint		fold)	/* in: folded value of the searched data */{	ha_node_t*	node;#ifdef UNIV_SYNC_DEBUG	ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));#endif /* UNIV_SYNC_DEBUG */	node = ha_chain_get_first(table, fold);	while (node) {		if (node->fold == fold) {			return(node->data);		}		node = ha_chain_get_next(node);	}	return(NULL);}/*************************************************************Looks for an element when we know the pointer to the data. */UNIV_INLINEha_node_t*ha_search_with_data(/*================*/				/* out: pointer to the hash table node, NULL				if not found in the table */	hash_table_t*	table,	/* in: hash table */	ulint		fold,	/* in: folded value of the searched data */	void*		data)	/* in: pointer to the data */{	ha_node_t*	node;#ifdef UNIV_SYNC_DEBUG	ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));#endif /* UNIV_SYNC_DEBUG */	node = ha_chain_get_first(table, fold);	while (node) {		if (node->data == data) {			return(node);		}		node = ha_chain_get_next(node);	}	return(NULL);}/*************************************************************Looks for an element when we know the pointer to the data, and deletesit from the hash table, if found. */UNIV_INLINEiboolha_search_and_delete_if_found(/*==========================*/				/* out: TRUE if found */	hash_table_t*	table,	/* in: hash table */	ulint		fold,	/* in: folded value of the searched data */	void*		data)	/* in: pointer to the data */{	ha_node_t*	node;#ifdef UNIV_SYNC_DEBUG	ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));#endif /* UNIV_SYNC_DEBUG */	node = ha_search_with_data(table, fold, data);	if (node) {		ha_delete_hash_node(table, node);		return(TRUE);	}	return(FALSE);}/*****************************************************************Reserves the necessary hash table mutex and inserts an entry into the hashtable. */UNIV_INLINEiboolha_insert_for_fold_mutex(/*=====================*/				/* out: TRUE if succeed, FALSE if no more				memory could be allocated */	hash_table_t*	table,	/* in: hash table */	ulint		fold,	/* in: folded value of data; if a node with				the same fold value already exists, it is				updated to point to the same data, and no new				node is created! */	void*		data)	/* in: data, must not be NULL */{	ibool	ret;	hash_mutex_enter(table, fold);	ret = ha_insert_for_fold(table, fold, data);	hash_mutex_exit(table, fold);	return(ret);}

⌨️ 快捷键说明

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