/* --------------------------------------------------------------------------- * (Chain) Hash Table * * author: suzuki hironobu (hironobu@interdb.jp) 2009.Nov.17 * Copyright (C) 2009 suzuki hironobu * * --------------------------------------------------------------------------- */ #ifndef _HASH_H_ #define _HASH_H_ #include "common.h" typedef struct _node_t { lkey_t key; /* key */ val_t value; /* 値 */ struct _node_t *next; /* 次のnodeへのポインタ*/ } node_t; typedef struct _list_t { node_t *head; } list_t; typedef struct _hashtable_t { unsigned long long int setSize; /* 全node数 */ list_t *bucket; /* ハッシュテーブル本体 */ unsigned int table_size; /* ハッシュテーブルの大きさ(長さ) */ list_t *old_bucket; /* resizeする際に、一時的に利用するハッシュテーブル */ unsigned int old_table_size; /* old_bucketの大きさ = resize前のテーブルの大きさ */ pthread_mutex_t mtx; } hashtable_t; void show_hashtable (hashtable_t *); hashtable_t * init_hashtable (const unsigned int); void free_hashtable (hashtable_t *); bool_t add (hashtable_t *, const lkey_t, const val_t); bool_t delete (hashtable_t *, const lkey_t, val_t *); bool_t find (hashtable_t *, const lkey_t); #endif