📄 hash0hash.ic
字号:
/******************************************************The simple hash table utility(c) 1997 Innobase OyCreated 5/20/1997 Heikki Tuuri*******************************************************/#include "ut0rnd.h"/****************************************************************Gets the nth cell in a hash table. */UNIV_INLINEhash_cell_t*hash_get_nth_cell(/*==============*/ /* out: pointer to cell */ hash_table_t* table, /* in: hash table */ ulint n) /* in: cell index */{ ut_ad(n < table->n_cells); return(table->array + n);}/*****************************************************************Returns the number of cells in a hash table. */UNIV_INLINEulinthash_get_n_cells(/*=============*/ /* out: number of cells */ hash_table_t* table) /* in: table */{ return(table->n_cells);}/******************************************************************Calculates the hash value from a folded value. */UNIV_INLINEulinthash_calc_hash(/*===========*/ /* out: hashed value */ ulint fold, /* in: folded value */ hash_table_t* table) /* in: hash table */{ return(ut_hash_ulint(fold, table->n_cells));}/****************************************************************Gets the mutex index for a fold value in a hash table. */UNIV_INLINEulinthash_get_mutex_no(/*==============*/ /* out: mutex number */ hash_table_t* table, /* in: hash table */ ulint fold) /* in: fold */{ return(ut_2pow_remainder(fold, table->n_mutexes));}/****************************************************************Gets the nth heap in a hash table. */UNIV_INLINEmem_heap_t*hash_get_nth_heap(/*==============*/ /* out: mem heap */ hash_table_t* table, /* in: hash table */ ulint i) /* in: index of the heap */{ ut_ad(i < table->n_mutexes); return(table->heaps[i]);}/****************************************************************Gets the heap for a fold value in a hash table. */UNIV_INLINEmem_heap_t*hash_get_heap(/*==========*/ /* out: mem heap */ hash_table_t* table, /* in: hash table */ ulint fold) /* in: fold */{ ulint i; if (table->heap) { return(table->heap); } i = hash_get_mutex_no(table, fold); return(hash_get_nth_heap(table, i));}/****************************************************************Gets the nth mutex in a hash table. */UNIV_INLINEmutex_t*hash_get_nth_mutex(/*===============*/ /* out: mutex */ hash_table_t* table, /* in: hash table */ ulint i) /* in: index of the mutex */{ ut_ad(i < table->n_mutexes); return(table->mutexes + i);}/****************************************************************Gets the mutex for a fold value in a hash table. */UNIV_INLINEmutex_t*hash_get_mutex(/*===========*/ /* out: mutex */ hash_table_t* table, /* in: hash table */ ulint fold) /* in: fold */{ ulint i; i = hash_get_mutex_no(table, fold); return(hash_get_nth_mutex(table, i));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -