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

📄 ds_hash.h

📁 Coda分布式文件系统源代码。其特色在于可以支持离线文件操作以及在线后的自动更新
💻 H
字号:
/*** The "hash" data structure; a hash table*/#ifndef _DS_HASH_H_#define _DS_HASH_H_#include <odytypes.h>#include <ds_list.h>/*   A hash table is a collection of ds_list_t's.   They are not thread safe   Hash tables have many of the same properties that lists do.   It's probably necessary to understand ds_list_t to understand   ds_hash_t.  In particular, the ordering function determines whether   or not the buckets are sorted, and whether the member and duplicate   tests use pointer-equality or the ordering function for equality.*/typedef struct ds_hash_t ds_hash_t;    /* opaque hashtable */#ifdef __STDC__                       /* hash tables have hash functions */typedef long (*HFN)(void*);#elsetypedef long (*HFN)();#endif/*   The following operations are allowed on hash tables*//*** Observers ***/extern bool            ds_hash_valid    (ds_hash_t *t);extern int             ds_hash_count    (ds_hash_t *t);extern void           *ds_hash_first    (ds_hash_t *t, 					 void *e);       extern void           *ds_hash_last     (ds_hash_t *t, 					 void *e);       extern void           *ds_hash_member   (ds_hash_t *t, 					 void *e); /*** Mutators ***/extern ds_hash_t       *ds_hash_create     (COMPFN c,					    HFN h,					    int nbuckets,					    bool safe_destroy,					    bool dups_ok);extern void             ds_hash_destroy    (ds_hash_t *t);extern void            *ds_hash_insert     (ds_hash_t *t, void *e);extern void            *ds_hash_append     (ds_hash_t *t, void *e);extern void            *ds_hash_get_first  (ds_hash_t *t, void *e);extern void            *ds_hash_get_last   (ds_hash_t *t, void *e);extern void            *ds_hash_remove     (ds_hash_t *t, void *e);					 /*** Iterators ***/typedef struct ds_hash_iter_t ds_hash_iter_t;  /* opaque *//*    You can create an interator, destroy an iterator, or ask for the   "next" element in the sequence.  Iterators and hash tables   communicate with one another: if an iterator's "next" element is   removed from the iterator's table, the iterator will be advanced   one element.  Once an iterator has reached the end of the table   (i.e.  ds_hash_iter_next returns NULL) it is considered closed: new   items added to the table will not be picked up by the iterator.   New items added to a table may or may not be picked up by the   iterator.  Frankly, twiddling the table while the iterator is   hooked up is kinda silly anyway.*/extern ds_hash_iter_t *ds_hash_iter_create  (ds_hash_t *t);extern void            ds_hash_iter_destroy (ds_hash_iter_t *i);extern void           *ds_hash_iter_next    (ds_hash_iter_t *i);#endif /* _DS_HASH_H_ */

⌨️ 快捷键说明

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