亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hash.h

?? 一個很棒的視頻服務器
?? H
字號:
/* * Hash Table Data Type * Copyright (C) 1997 Kaz Kylheku <kaz@ashi.footprints.net> * * Free Software License: * * All rights are reserved by the author, with the following exceptions: * Permission is granted to freely reproduce and distribute this software, * possibly in exchange for a fee, provided that this copyright notice appears * intact. Permission is also granted to adapt this software to produce * derivative works, as long as the modified versions carry this copyright * notice and additional notices stating that the work has been modified. * The copyright extends to translations of this work into other languages, * including machine languages.  * * $Id: hash.h,v 1.1 1999/11/05 00:22:34 jtravis Exp $ * $Name:  $ */#ifndef HASH_H#define HASH_H#include <limits.h>#ifdef KAZLIB_SIDEEFFECT_DEBUG#include "sfx.h"#endif/* * Blurb for inclusion into C++ translation units */#ifdef __cplusplusextern "C" {#endiftypedef unsigned long hashcount_t;#define HASHCOUNT_T_MAX ULONG_MAXtypedef unsigned long hash_val_t;#define HASH_VAL_T_MAX ULONG_MAXextern int hash_val_t_bit;#ifndef HASH_VAL_T_BIT#define HASH_VAL_T_BIT ((int) hash_val_t_bit)#endif/* * Hash chain node structure. * Notes: * 1. This preprocessing directive is for debugging purposes.  The effect is *    that if the preprocessor symbol KAZLIB_OPAQUE_DEBUG is defined prior to the *    inclusion of this header,  then the structure shall be declared as having *    the single member   int __OPAQUE__.   This way, any attempts by the *    client code to violate the principles of information hiding (by accessing *    the structure directly) can be diagnosed at translation time. However, *    note the resulting compiled unit is not suitable for linking. * 2. This is a pointer to the next node in the chain. In the last node of a *    chain, this pointer is null. * 3. This is a back-pointer to the primary pointer to this node.  The primary *    pointer is the previous node's next pointer to this node. If there is no *    previous node, the primary pointer is the pointer that resides in the *    hash table. This back-pointer lets us handle deletions easily without *    searching the chain. * 4. The key is a pointer to some user supplied data that contains a unique *    identifier for each hash node in a given table. The interpretation of *    the data is up to the user. When creating or initializing a hash table, *    the user must supply a pointer to a function for comparing two keys, *    and a pointer to a function for hashing a key into a numeric value. * 5. The value is a user-supplied pointer to void which may refer to *    any data object. It is not interpreted in any way by the hashing *    module. * 6. The hashed key is stored in each node so that we don't have to rehash *    each key when the table must grow or shrink. */typedef struct hnode_t {    #if defined(HASH_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)	/* 1 */    struct hnode_t *next;	/* 2 */    struct hnode_t **pself;	/* 3 */    void *key;			/* 4 */    void *data;			/* 5 */    hash_val_t hkey;		/* 6 */    #else    int OPAQUE;    #endif} hnode_t;/* * The comparison function pointer type. A comparison function takes two keys * and produces a value of -1 if the left key is less than the right key, a * value of 0 if the keys are equal, and a value of 1 if the left key is * greater than the right key. */typedef int (*hash_comp_t)(const void *, const void *);/* * The hashing function performs some computation on a key and produces an * integral value of type hash_val_t based on that key. For best results, the * function should have a good randomness properties in *all* significant bits * over the set of keys that are being inserted into a given hash table. In * particular, the most significant bits of hash_val_t are most significant to * the hash module. Only as the hash table expands are less significant bits * examined. Thus a function that has good distribution in its upper bits but * not lower is preferrable to one that has poor distribution in the upper bits * but not the lower ones. */typedef hash_val_t (*hash_fun_t)(const void *);/* * allocator functions */typedef hnode_t *(*hnode_alloc_t)(void *);typedef void (*hnode_free_t)(hnode_t *, void *);/* * This is the hash table control structure. It keeps track of information * about a hash table, as well as the hash table itself. * Notes: * 1.  Pointer to the hash table proper. The table is an array of pointers to *     hash nodes (of type hnode_t). If the table is empty, every element of *     this table is a null pointer. A non-null entry points to the first *     element of a chain of nodes. * 2.  This member keeps track of the size of the hash table---that is, the *     number of chain pointers. * 3.  The count member maintains the number of elements that are presently *     in the hash table. * 4.  The maximum count is the greatest number of nodes that can populate this *     table. If the table contains this many nodes, no more can be inserted, *     and the hash_isfull() function returns true. * 5.  The high mark is a population threshold, measured as a number of nodes, *     which, if exceeded, will trigger a table expansion. Only dynamic hash *     tables are subject to this expansion. * 6.  The low mark is a minimum population threshold, measured as a number of *     nodes. If the table population drops below this value, a table shrinkage *     will occur. Only dynamic tables are subject to this reduction.  No table *     will shrink beneath a certain absolute minimum number of nodes. * 7.  This is the a pointer to the hash table's comparison function. The *     function is set once at initialization or creation time. * 8.  Pointer to the table's hashing function, set once at creation or *     initialization time. * 9.  The current hash table mask. If the size of the hash table is 2^N, *     this value has its low N bits set to 1, and the others clear. It is used *     to select bits from the result of the hashing function to compute an *     index into the table. * 10. A flag which indicates whether the table is to be dynamically resized. It *     is set to 1 in dynamically allocated tables, 0 in tables that are *     statically allocated. */typedef struct hash_t {    #if defined(HASH_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)    struct hnode_t **table;			/* 1 */    hashcount_t nchains;			/* 2 */    hashcount_t count;				/* 3 */    hashcount_t maxcount;			/* 4 */    hashcount_t highmark;			/* 5 */    hashcount_t lowmark;			/* 6 */    hash_comp_t compare;			/* 7 */    hash_fun_t hash;				/* 8 */    hnode_alloc_t allocnode;    hnode_free_t freenode;    void *context;    hash_val_t mask;				/* 9 */    int dynamic;				/* 10 */    #else    int OPAQUE;    #endif} hash_t;/* * Hash scanner structure, used for traversals of the data structure. * Notes: * 1. Pointer to the hash table that is being traversed. * 2. Reference to the current chain in the table being traversed (the chain *    that contains the next node that shall be retrieved). * 3. Pointer to the node that will be retrieved by the subsequent call to *    hash_scan_next(). */typedef struct hscan_t {    #if defined(HASH_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)    hash_t *hash;	/* 1 */    hash_val_t chain;	/* 2 */    hnode_t *next;	/* 3 */    #else    int OPAQUE;    #endif} hscan_t;extern hash_t *hash_create(hashcount_t, hash_comp_t, hash_fun_t);extern void hash_set_allocator(hash_t *, hnode_alloc_t, hnode_free_t, void *);extern void hash_destroy(hash_t *);extern void hash_free(hash_t *);extern hash_t *hash_init(hash_t *, hashcount_t, hash_comp_t,	hash_fun_t, hnode_t **, hashcount_t);extern void hash_insert(hash_t *, hnode_t *, void *);extern hnode_t *hash_lookup(hash_t *, void *);extern hnode_t *hash_delete(hash_t *, hnode_t *);extern int hash_alloc_insert(hash_t *, void *, void *);extern void hash_delete_free(hash_t *, hnode_t *);extern void hnode_put(hnode_t *, void *);extern void *hnode_get(hnode_t *);extern void *hnode_getkey(hnode_t *);extern hashcount_t hash_count(hash_t *);extern hashcount_t hash_size(hash_t *);extern int hash_isfull(hash_t *);extern int hash_isempty(hash_t *);extern void hash_scan_begin(hscan_t *, hash_t *);extern hnode_t *hash_scan_next(hscan_t *);extern hnode_t *hash_scan_delete(hash_t *, hnode_t *);extern int hash_verify(hash_t *);extern hnode_t *hnode_create(void *);extern hnode_t *hnode_init(hnode_t *, void *);extern void hnode_destroy(hnode_t *);#if defined(HASH_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)#ifdef KAZLIB_SIDEEFFECT_DEBUG#define hash_isfull(H) (SFX_CHECK(H)->count == (H)->maxcount)#else#define hash_isfull(H) ((H)->count == (H)->maxcount)#endif#define hash_isempty(H) ((H)->count == 0)#define hash_count(H) ((H)->count)#define hash_size(H) ((H)->nchains)#define hnode_get(N) ((N)->data)#define hnode_getkey(N) ((N)->key)#define hnode_put(N, V) ((N)->data = (V))#endif#ifdef __cplusplus}#endif#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品色哟哟| 国产日韩欧美精品电影三级在线| 国产成人av一区二区三区在线 | 国产日韩欧美不卡| 欧美大片拔萝卜| 久久这里只有精品首页| 日韩亚洲欧美一区| 26uuu精品一区二区三区四区在线| 欧美精选午夜久久久乱码6080| 欧美日韩中文国产| 666欧美在线视频| 精品国精品自拍自在线| 日韩欧美一级二级三级久久久| 精品国产91乱码一区二区三区| 久久精品免费在线观看| 国产精品乱码妇女bbbb| 亚洲人成网站在线| 日韩精品一二三区| 国产一本一道久久香蕉| 丰满白嫩尤物一区二区| 色综合色综合色综合| 欧美性大战久久| 精品国产污网站| 亚洲免费电影在线| 蜜桃av一区二区| 9色porny自拍视频一区二区| 色哟哟欧美精品| 亚洲一区二区三区视频在线| 丝袜国产日韩另类美女| 国产**成人网毛片九色| 91成人看片片| 2020国产精品自拍| 亚洲综合在线免费观看| 蜜桃视频在线观看一区| av综合在线播放| 日韩一级片在线观看| 中文字幕欧美日韩一区| 性做久久久久久久免费看| 精品一区二区免费看| 在线免费不卡电影| 国产欧美1区2区3区| 亚洲国产精品精华液网站| 国产在线国偷精品免费看| 色香色香欲天天天影视综合网| 日韩欧美成人激情| 一区二区三区在线视频观看58| 精品一区二区免费| 制服.丝袜.亚洲.中文.综合| 国产三级精品视频| 美女一区二区三区| 欧美猛男超大videosgay| 国产欧美日韩不卡免费| 久久99日本精品| 欧美一区二区三区四区五区| 久99久精品视频免费观看| 欧美色图在线观看| 中文字幕在线不卡国产视频| 国产一区二区视频在线播放| 欧美电影一区二区三区| 亚洲一区影音先锋| 色天天综合色天天久久| 国产精品久久久久久久岛一牛影视| 激情成人综合网| 日韩视频123| 免费一级片91| 日韩欧美一区在线| 免费观看30秒视频久久| 欧美日韩国产综合草草| 亚洲二区在线观看| 欧洲一区在线观看| 亚洲福利视频导航| 欧美福利视频一区| 麻豆精品一二三| 精品国产乱码久久| 久久99精品国产.久久久久久| 欧美一区二区三区爱爱| 青椒成人免费视频| 亚洲精品在线网站| 国产成人在线视频网站| 国产欧美日本一区视频| av一区二区不卡| 一级做a爱片久久| 亚洲人成亚洲人成在线观看图片 | 另类小说图片综合网| 欧美午夜片在线看| 日韩1区2区3区| 日韩欧美一区在线| 懂色av一区二区夜夜嗨| 国产精品天美传媒| 91女神在线视频| 亚洲成年人影院| 欧美一区二区视频在线观看2022| 狂野欧美性猛交blacked| 欧美成va人片在线观看| 国产二区国产一区在线观看| 国产欧美视频一区二区| 色综合激情五月| 麻豆视频观看网址久久| 久久先锋影音av| 在线一区二区视频| 日韩激情一区二区| 国产亚洲婷婷免费| 91久久精品国产91性色tv| 日本亚洲视频在线| 国产精品二三区| 91精品久久久久久蜜臀| 成人一区二区三区视频在线观看| 夜夜揉揉日日人人青青一国产精品| 欧美一区二区视频在线观看2022 | 在线中文字幕一区二区| 蜜臀av一区二区在线观看| 国产欧美日韩在线| 欧美精品成人一区二区三区四区| 国产在线精品一区二区不卡了| 尤物在线观看一区| 久久久久久久久久美女| 在线观看精品一区| 高清国产一区二区三区| 视频一区二区中文字幕| 欧美激情资源网| 欧美一区二区三区四区高清| thepron国产精品| 国产一区二区三区在线观看精品 | 94-欧美-setu| 激情六月婷婷久久| 亚洲第一主播视频| 日韩美女精品在线| 国产女主播一区| 日韩久久免费av| 8x福利精品第一导航| 91在线视频观看| 国产成人夜色高潮福利影视| 日韩在线播放一区二区| 亚洲激情成人在线| 136国产福利精品导航| 国产网站一区二区三区| 精品国产伦一区二区三区观看体验| 久久久久久久久久久久电影| 欧美一区日韩一区| 欧美猛男gaygay网站| 色中色一区二区| 色婷婷综合久久久中文一区二区 | 国产乱码精品一区二区三区忘忧草 | 石原莉奈一区二区三区在线观看 | 欧美日韩和欧美的一区二区| 99精品欧美一区二区三区小说 | 亚洲午夜私人影院| 国产精品伦理在线| 国产精品免费人成网站| 中文字幕不卡一区| 国产精品电影院| 亚洲人成在线观看一区二区| 国产精品卡一卡二卡三| 国产欧美日本一区视频| 国产女人aaa级久久久级 | 蜜桃视频一区二区三区| 麻豆中文一区二区| 国产精品一区一区| www.色综合.com| 色国产综合视频| 欧美日韩三级一区| 91麻豆精品国产91久久久久久久久 | 国产欧美久久久精品影院| 久久亚洲捆绑美女| 中文字幕一区二区三区在线不卡| 国产精品看片你懂得| 亚洲免费在线看| 亚洲一区二区在线播放相泽| 亚洲国产sm捆绑调教视频 | 久久久久久久久久久久久女国产乱| 精品国产亚洲一区二区三区在线观看 | 亚洲一区二区视频在线观看| 亚洲二区视频在线| 精品一二三四在线| www.亚洲免费av| 精品污污网站免费看| 日韩视频一区在线观看| 久久亚洲免费视频| 亚洲美女淫视频| 日韩国产精品大片| 欧美高清hd18日本| 国产亚洲福利社区一区| 国产精品国产三级国产普通话三级 | 亚洲精品美国一| 美女在线视频一区| 成人免费看黄yyy456| 欧美日韩亚洲综合| 精品久久久久久亚洲综合网 | 欧美麻豆精品久久久久久| 精品少妇一区二区三区在线播放| 亚洲国产精品av| 亚洲成国产人片在线观看| 激情综合色丁香一区二区| 91美女蜜桃在线| 久久久久久久久蜜桃| 亚洲一区二区三区四区中文字幕| 国产一区二区三区最好精华液| 欧美性xxxxx极品少妇| 久久久久久久久久久电影| 亚洲国产色一区|