cocos2d-x 3.0
- 首页 - 相关页面 - 模块 - 命名空间 - - 文件 -
类 - 图1 类 - 图2)
- 文件列表 - 文件成员

全部)) 命名空间) 文件) 函数) 变量) 类型定义) 枚举) 枚举值) 属性) 友元) 宏定义)))

| 宏定义

uthash.h 文件参考

#include

#include

#include

#include

##
struct UT_hash_bucket
struct UT_hash_table
struct UT_hash_handle
## 宏定义
#define DECLTYPE(x) (__typeof(x))
#define DECLTYPE_ASSIGN(dst, src)
#define UTHASH_VERSION 1.9.8
#define uthash_fatal(msg) exit(-1) / fatal error (out of memory,etc) /
#define uthash_malloc(sz) malloc(sz) / malloc fcn /
#define uthash_free(ptr, sz) free(ptr) / free fcn /
#define uthash_noexpand_fyi(tbl) / can be defined to log noexpand /
#define uthash_expand_fyi(tbl) / can be defined to log expands /
#define HASH_INITIAL_NUM_BUCKETS 32 / initial number of buckets /
#define HASH_INITIAL_NUM_BUCKETS_LOG2 5 / lg2 of initial number of buckets /
#define HASH_BKT_CAPACITY_THRESH 10 / expand when bucket count reaches /
#define ELMT_FROM_HH(tbl, hhp) ((void)(((char)(hhp)) - ((tbl)->hho)))
#define HASH_FIND(hh, head, keyptr, keylen, out)
#define HASH_BLOOM_MAKE(tbl)
#define HASH_BLOOM_FREE(tbl)
#define HASH_BLOOM_ADD(tbl, hashv)
#define HASH_BLOOM_TEST(tbl, hashv) (1)
#define HASH_BLOOM_BYTELEN 0
#define HASH_MAKE_TABLE(hh, head)
#define HASH_ADD(hh, head, fieldname, keylen_in, add) HASH_ADD_KEYPTR(hh,head,&((add)->fieldname),keylen_in,add)
#define HASH_REPLACE(hh, head, fieldname, keylen_in, add, replaced)
#define HASH_ADD_KEYPTR(hh, head, keyptr, keylen_in, add)
#define HASH_TO_BKT(hashv, num_bkts, bkt)
#define HASH_DELETE(hh, head, delptr)
#define HASH_FIND_STR(head, findstr, out) HASH_FIND(hh,head,findstr,strlen(findstr),out)
#define HASH_ADD_STR(head, strfield, add) HASH_ADD(hh,head,strfield,strlen(add->strfield),add)
#define HASH_REPLACE_STR(head, strfield, add, replaced) HASH_REPLACE(hh,head,strfield,strlen(add->strfield),add,replaced)
#define HASH_FIND_INT(head, findint, out) HASH_FIND(hh,head,findint,sizeof(int),out)
#define HASH_ADD_INT(head, intfield, add) HASH_ADD(hh,head,intfield,sizeof(int),add)
#define HASH_REPLACE_INT(head, intfield, add, replaced) HASH_REPLACE(hh,head,intfield,sizeof(int),add,replaced)
#define HASH_FIND_PTR(head, findptr, out) HASH_FIND(hh,head,findptr,sizeof(void ),out)
#define HASH_ADD_PTR(head, ptrfield, add) HASH_ADD(hh,head,ptrfield,sizeof(void ),add)
#define HASH_REPLACE_PTR(head, ptrfield, add) HASH_REPLACE(hh,head,ptrfield,sizeof(void *),add,replaced)
#define HASH_DEL(head, delptr) HASH_DELETE(hh,head,delptr)
#define HASH_FSCK(hh, head)
#define HASH_EMIT_KEY(hh, head, keyptr, fieldlen)
#define HASH_FCN HASH_JEN
#define HASH_BER(key, keylen, num_bkts, hashv, bkt)
#define HASH_SAX(key, keylen, num_bkts, hashv, bkt)
#define HASH_FNV(key, keylen, num_bkts, hashv, bkt)
#define HASH_OAT(key, keylen, num_bkts, hashv, bkt)
#define HASH_JEN_MIX(a, b, c)
#define HASH_JEN(key, keylen, num_bkts, hashv, bkt)
#define get16bits(d)
#define HASH_SFH(key, keylen, num_bkts, hashv, bkt)
#define HASH_KEYCMP(a, b, len) memcmp(a,b,len)
#define HASH_FIND_IN_BKT(tbl, hh, head, keyptr, keylen_in, out)
#define HASH_ADD_TO_BKT(head, addhh)
#define HASH_DEL_IN_BKT(hh, head, hh_del)
#define HASH_EXPAND_BUCKETS(tbl)
#define HASH_SORT(head, cmpfcn) HASH_SRT(hh,head,cmpfcn)
#define HASH_SRT(hh, head, cmpfcn)
#define HASH_SELECT(hh_dst, dst, hh_src, src, cond)
#define HASH_CLEAR(hh, head)
#define HASH_OVERHEAD(hh, head)
#define HASH_ITER(hh, head, el, tmp)
#define HASH_COUNT(head) HASH_CNT(hh,head)
#define HASH_CNT(hh, head) ((head)?((head)->hh.tbl->num_items):0)
#define HASH_SIGNATURE 0xa0111fe1
#define HASH_BLOOM_SIGNATURE 0xb12220f2

宏定义说明

#define DECLTYPE ( x) (__typeof(x))

#define DECLTYPE_ASSIGN ( dst,
src
)

值:

do { \

(dst) = DECLTYPE(dst)(src); \

} while(0)

DECLTYPE

define DECLTYPE(x)

Definition: uthash.h:43

#define ELMT_FROM_HH ( tbl,
hhp
) ((void)(((char)(hhp)) - ((tbl)->hho)))

#define get16bits ( d)

值:

((((uint32_t)(((const uint8_t *)(d))[1])) << 8) \

+(uint32_t)(((const uint8_t *)(d))[0]) )

uint8_t

unsigned char uint8_t

Definition: stdint.h:81

uint32_t

unsigned int uint32_t

Definition: stdint.h:83

#define HASH_ADD ( hh,
head,
fieldname,
keylen_in,
add
) HASH_ADD_KEYPTR(hh,head,&((add)->fieldname),keylen_in,add)

#define HASH_ADD_INT ( head,
intfield,
add
) HASH_ADD(hh,head,intfield,sizeof(int),add)

#define HASH_ADD_KEYPTR ( hh,
head,
keyptr,
keylen_in,
add
)

值:

do { \

unsigned _ha_bkt; \

(add)->hh.next = NULL; \

(add)->hh.key = (char*)keyptr; \

(add)->hh.keylen = (unsigned)keylen_in; \

if (!(head)) { \

head = (add); \

(head)->hh.prev = NULL; \

HASH_MAKE_TABLE(hh,head); \

} else { \

(head)->hh.tbl->tail->next = (add); \

(add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail); \

(head)->hh.tbl->tail = &((add)->hh); \

} \

(head)->hh.tbl->num_items++; \

(add)->hh.tbl = (head)->hh.tbl; \

HASH_FCN(keyptr,keylen_in, (head)->hh.tbl->num_buckets, \

(add)->hh.hashv, _ha_bkt); \

HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt],&(add)->hh); \

HASH_BLOOM_ADD((head)->hh.tbl,(add)->hh.hashv); \

HASH_EMIT_KEY(hh,head,keyptr,keylen_in); \

HASH_FSCK(hh,head); \

} while(0)

HASH_FSCK

define HASH_FSCK(hh, head)

Definition: uthash.h:330

HASH_FCN

define HASH_FCN

Definition: uthash.h:351

HASH_BLOOM_ADD

define HASH_BLOOM_ADD(tbl, hashv)

Definition: uthash.h:136

HASH_MAKE_TABLE

define HASH_MAKE_TABLE(hh, head)

Definition: uthash.h:141

NULL

define NULL

Definition: CCPlatformDefine.h:61

HASH_ADD_TO_BKT

define HASH_ADD_TO_BKT(head, addhh)

Definition: uthash.h:611

ELMT_FROM_HH

define ELMT_FROM_HH(tbl, hhp)

Definition: uthash.h:92

HASH_EMIT_KEY

define HASH_EMIT_KEY(hh, head, keyptr, fieldlen)

Definition: uthash.h:344

#define HASH_ADD_PTR ( head,
ptrfield,
add
) HASH_ADD(hh,head,ptrfield,sizeof(void *),add)

#define HASH_ADD_STR ( head,
strfield,
add
) HASH_ADD(hh,head,strfield,strlen(add->strfield),add)

#define HASH_ADD_TO_BKT ( head,
addhh
)

值:

do { \

head.count++; \

(addhh)->hh_next = head.hh_head; \

(addhh)->hh_prev = NULL; \

if (head.hh_head) { (head).hh_head->hh_prev = (addhh); } \

(head).hh_head=addhh; \

if (head.count >= ((head.expand_mult+1) * HASH_BKT_CAPACITY_THRESH) \

&& (addhh)->tbl->noexpand != 1) { \

HASH_EXPAND_BUCKETS((addhh)->tbl); \

} \

} while(0)

HASH_EXPAND_BUCKETS

define HASH_EXPAND_BUCKETS(tbl)

Definition: uthash.h:666

HASH_BKT_CAPACITY_THRESH

define HASH_BKT_CAPACITY_THRESH

Definition: uthash.h:89

NULL

define NULL

Definition: CCPlatformDefine.h:61

#define HASH_BER ( key,
keylen,
num_bkts,
hashv,
bkt
)

值:

do { \

unsigned _hb_keylen=keylen; \

char _hb_key=(char)(key); \

(hashv) = 0; \

while (_hb_keylen—) { (hashv) = ((hashv) 33) + _hb_key++; } \

bkt = (hashv) & (num_bkts-1); \

} while (0)

#define HASH_BKT_CAPACITY_THRESH 10 / expand when bucket count reaches /

#define HASH_BLOOM_ADD ( tbl,
hashv
)

#define HASH_BLOOM_BYTELEN 0

#define HASH_BLOOM_FREE ( tbl)

#define HASH_BLOOM_MAKE ( tbl)

#define HASH_BLOOM_SIGNATURE 0xb12220f2

#define HASH_BLOOM_TEST ( tbl,
hashv
) (1)

#define HASH_CLEAR ( hh,
head
)

值:

do { \

if (head) { \

uthash_free((head)->hh.tbl->buckets, \

(head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket)); \

HASH_BLOOM_FREE((head)->hh.tbl); \

uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \

(head)=NULL; \

} \

} while(0)

uthash_free

define uthash_free(ptr, sz)

Definition: uthash.h:76

HASH_BLOOM_FREE

define HASH_BLOOM_FREE(tbl)

Definition: uthash.h:135

UT_hash_table

Definition: uthash.h:896

NULL

define NULL

Definition: CCPlatformDefine.h:61

UT_hash_bucket

Definition: uthash.h:872

#define HASH_CNT ( hh,
head
) ((head)?((head)->hh.tbl->num_items):0)

#define HASH_COUNT ( head) HASH_CNT(hh,head)

#define HASH_DEL ( head,
delptr
) HASH_DELETE(hh,head,delptr)

#define HASH_DEL_IN_BKT ( hh,
head,
hh_del
)

值:

(head).count—; \

if ((head).hh_head == hh_del) { \

(head).hh_head = hh_del->hh_next; \

} \

if (hh_del->hh_prev) { \

hh_del->hh_prev->hh_next = hh_del->hh_next; \

} \

if (hh_del->hh_next) { \

hh_del->hh_next->hh_prev = hh_del->hh_prev; \

}

#define HASH_DELETE ( hh,
head,
delptr
)

#define HASH_EMIT_KEY ( hh,
head,
keyptr,
fieldlen
)

#define HASH_EXPAND_BUCKETS ( tbl)

#define HASH_FCN HASH_JEN

#define HASH_FIND ( hh,
head,
keyptr,
keylen,
out
)

值:

do { \

unsigned _hf_bkt,_hf_hashv; \

out=NULL; \

if (head) { \

HASH_FCN(keyptr,keylen, (head)->hh.tbl->num_buckets, _hf_hashv, _hf_bkt); \

if (HASH_BLOOM_TEST((head)->hh.tbl, _hf_hashv)) { \

HASH_FIND_IN_BKT((head)->hh.tbl, hh, (head)->hh.tbl->buckets[ _hf_bkt ], \

keyptr,keylen,out); \

} \

} \

} while (0)

HASH_FCN

define HASH_FCN

Definition: uthash.h:351

HASH_BLOOM_TEST

define HASH_BLOOM_TEST(tbl, hashv)

Definition: uthash.h:137

NULL

define NULL

Definition: CCPlatformDefine.h:61

HASH_FIND_IN_BKT

define HASH_FIND_IN_BKT(tbl, hh, head, keyptr, keylen_in, out)

Definition: uthash.h:597

#define HASH_FIND_IN_BKT ( tbl,
hh,
head,
keyptr,
keylen_in,
out
)

值:

do { \

if (head.hh_head) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,head.hh_head)); \

else out=NULL; \

while (out) { \

if ((out)->hh.keylen == keylen_in) { \

if ((HASH_KEYCMP((out)->hh.key,keyptr,keylen_in)) == 0) break; \

} \

if ((out)->hh.hh_next) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,(out)->hh.hh_next)); \

else out = NULL; \

} \

} while(0)

DECLTYPE_ASSIGN

define DECLTYPE_ASSIGN(dst, src)

Definition: uthash.h:53

NULL

define NULL

Definition: CCPlatformDefine.h:61

HASH_KEYCMP

define HASH_KEYCMP(a, b, len)

Definition: uthash.h:594

ELMT_FROM_HH

define ELMT_FROM_HH(tbl, hhp)

Definition: uthash.h:92

#define HASH_FIND_INT ( head,
findint,
out
) HASH_FIND(hh,head,findint,sizeof(int),out)

#define HASH_FIND_PTR ( head,
findptr,
out
) HASH_FIND(hh,head,findptr,sizeof(void *),out)

#define HASH_FIND_STR ( head,
findstr,
out
) HASH_FIND(hh,head,findstr,strlen(findstr),out)

#define HASH_FNV ( key,
keylen,
num_bkts,
hashv,
bkt
)

值:

do { \

unsigned _fn_i; \

char _hf_key=(char)(key); \

hashv = 2166136261UL; \

for(_fn_i=0; _fn_i < keylen; _fn_i++) \

hashv = (hashv * 16777619) ^ _hf_key[_fn_i]; \

bkt = hashv & (num_bkts-1); \

} while(0)

#define HASH_FSCK ( hh,
head
)

#define HASH_INITIAL_NUM_BUCKETS 32 / initial number of buckets /

#define HASH_INITIAL_NUM_BUCKETS_LOG2 5 / lg2 of initial number of buckets /

#define HASH_ITER ( hh,
head,
el,
tmp
)

值:

for((el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL); \

el; (el)=(tmp),(tmp)=DECLTYPE(el)((tmp)?(tmp)->hh.next:NULL))

NULL

define NULL

Definition: CCPlatformDefine.h:61

DECLTYPE

define DECLTYPE(x)

Definition: uthash.h:43

#define HASH_JEN ( key,
keylen,
num_bkts,
hashv,
bkt
)

#define HASH_JEN_MIX ( a,
b,
c
)

值:

do { \

a -= b; a -= c; a ^= ( c >> 13 ); \

b -= c; b -= a; b ^= ( a << 8 ); \

c -= a; c -= b; c ^= ( b >> 13 ); \

a -= b; a -= c; a ^= ( c >> 12 ); \

b -= c; b -= a; b ^= ( a << 16 ); \

c -= a; c -= b; c ^= ( b >> 5 ); \

a -= b; a -= c; a ^= ( c >> 3 ); \

b -= c; b -= a; b ^= ( a << 10 ); \

c -= a; c -= b; c ^= ( b >> 15 ); \

} while (0)

#define HASH_KEYCMP ( a,
b,
len
) memcmp(a,b,len)

#define HASH_MAKE_TABLE ( hh,
head
)

值:

do { \

(head)->hh.tbl = (UT_hash_table*)uthash_malloc( \

sizeof(UT_hash_table)); \

if (!((head)->hh.tbl)) { uthash_fatal( "out of memory"); } \

memset((head)->hh.tbl, 0, sizeof(UT_hash_table)); \

(head)->hh.tbl->tail = &((head)->hh); \

(head)->hh.tbl->num_buckets = HASH_INITIAL_NUM_BUCKETS; \

(head)->hh.tbl->log2_num_buckets = HASH_INITIAL_NUM_BUCKETS_LOG2; \

(head)->hh.tbl->hho = (char)(&(head)->hh) - (char)(head); \

(head)->hh.tbl->buckets = (UT_hash_bucket*)uthash_malloc( \

HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket)); \

if (! (head)->hh.tbl->buckets) { uthash_fatal( "out of memory"); } \

memset((head)->hh.tbl->buckets, 0, \

HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket)); \

HASH_BLOOM_MAKE((head)->hh.tbl); \

(head)->hh.tbl->signature = HASH_SIGNATURE; \

} while(0)

HASH_INITIAL_NUM_BUCKETS

define HASH_INITIAL_NUM_BUCKETS

Definition: uthash.h:87

HASH_SIGNATURE

define HASH_SIGNATURE

Definition: uthash.h:893

HASH_INITIAL_NUM_BUCKETS_LOG2

define HASH_INITIAL_NUM_BUCKETS_LOG2

Definition: uthash.h:88

uthash_malloc

define uthash_malloc(sz)

Definition: uthash.h:73

HASH_BLOOM_MAKE

define HASH_BLOOM_MAKE(tbl)

Definition: uthash.h:134

UT_hash_table

Definition: uthash.h:896

uthash_fatal

define uthash_fatal(msg)

Definition: uthash.h:70

UT_hash_bucket

Definition: uthash.h:872

#define HASH_OAT ( key,
keylen,
num_bkts,
hashv,
bkt
)

值:

do { \

unsigned _ho_i; \

char _ho_key=(char)(key); \

hashv = 0; \

for(_ho_i=0; _ho_i < keylen; _ho_i++) { \

hashv += _ho_key[_ho_i]; \

hashv += (hashv << 10); \

hashv ^= (hashv >> 6); \

} \

hashv += (hashv << 3); \

hashv ^= (hashv >> 11); \

hashv += (hashv << 15); \

bkt = hashv & (num_bkts-1); \

} while(0)

#define HASH_OVERHEAD ( hh,
head
)

值:

(size_t)((((head)->hh.tbl->num_items * sizeof(UT_hash_handle)) + \

((head)->hh.tbl->num_buckets * sizeof(UT_hash_bucket)) + \

(sizeof(UT_hash_table)) + \

(HASH_BLOOM_BYTELEN)))

UT_hash_table

Definition: uthash.h:896

HASH_BLOOM_BYTELEN

define HASH_BLOOM_BYTELEN

Definition: uthash.h:138

UT_hash_bucket

Definition: uthash.h:872

UT_hash_handle

Definition: uthash.h:929

#define HASH_REPLACE ( hh,
head,
fieldname,
keylen_in,
add,
replaced
)

值:

do { \

replaced=NULL; \

HASH_FIND(hh,head,&((add)->fieldname),keylen_in,replaced); \

if (replaced!=NULL) { \

HASH_DELETE(hh,head,replaced); \

}; \

HASH_ADD(hh,head,fieldname,keylen_in,add); \

} while(0)

HASH_DELETE

define HASH_DELETE(hh, head, delptr)

Definition: uthash.h:215

NULL

define NULL

Definition: CCPlatformDefine.h:61

HASH_ADD

define HASH_ADD(hh, head, fieldname, keylen_in, add)

Definition: uthash.h:160

HASH_FIND

define HASH_FIND(hh, head, keyptr, keylen, out)

Definition: uthash.h:94

#define HASH_REPLACE_INT ( head,
intfield,
add,
replaced
) HASH_REPLACE(hh,head,intfield,sizeof(int),add,replaced)

#define HASH_REPLACE_PTR ( head,
ptrfield,
add
) HASH_REPLACE(hh,head,ptrfield,sizeof(void *),add,replaced)

#define HASH_REPLACE_STR ( head,
strfield,
add,
replaced
) HASH_REPLACE(hh,head,strfield,strlen(add->strfield),add,replaced)

#define HASH_SAX ( key,
keylen,
num_bkts,
hashv,
bkt
)

值:

do { \

unsigned _sx_i; \

char _hs_key=(char)(key); \

hashv = 0; \

for(_sx_i=0; _sx_i < keylen; _sx_i++) \

hashv ^= (hashv << 5) + (hashv >> 2) + _hs_key[_sx_i]; \

bkt = hashv & (num_bkts-1); \

} while (0)

#define HASH_SELECT ( hh_dst,
dst,
hh_src,
src,
cond
)

#define HASH_SFH ( key,
keylen,
num_bkts,
hashv,
bkt
)

#define HASH_SIGNATURE 0xa0111fe1

#define HASH_SORT ( head,
cmpfcn
) HASH_SRT(hh,head,cmpfcn)

#define HASH_SRT ( hh,
head,
cmpfcn
)

#define HASH_TO_BKT ( hashv,
num_bkts,
bkt
)

值:

do { \

bkt = ((hashv) & ((num_bkts) - 1)); \

} while(0)

#define uthash_expand_fyi ( tbl) / can be defined to log expands /

#define uthash_fatal ( msg) exit(-1) / fatal error (out of memory,etc) /

#define uthash_free ( ptr,
sz
) free(ptr) / free fcn /

#define uthash_malloc ( sz) malloc(sz) / malloc fcn /

#define uthash_noexpand_fyi ( tbl) / can be defined to log noexpand /

#define UTHASH_VERSION 1.9.8
  • cocos
  • 2d
  • uthash.h
  • 生成于 2014年 五月 29日 星期四 09:41:41 , 为 cocos2d-x使用 doxygen 1.8.6