|
WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
|
类型定义 | |
| typedef struct CstlHashInfo | CstlHash |
| hash表句柄 | |
| typedef struct TagHashNode * | CstlHashIterator |
| hash表迭代器定义,指向hash节点 | |
| typedef size_t(* | CstlHashCodeCalcFunc) (uintptr_t key, size_t bktSize) |
| 根据输入的Key生成hash表索引。 | |
| typedef bool(* | CstlHashMatchFunc) (uintptr_t key1, uintptr_t key2) |
| 该函数把输入数据与Key进行匹配比较。第一个哈希表中保存的key,第二个是用户需要匹配的Key。如果不匹配,返回值为false。 | |
| typedef struct CstlHashInfo CstlHash |
hash表句柄
根据输入的Key生成hash表索引。
| key | [IN] hash key |
| bktSize | [IN] hash桶大小 |
| typedef struct TagHashNode* CstlHashIterator |
hash表迭代器定义,指向hash节点
查找节点,返回节点数据。
| hash | [IN] hash表的句柄。 |
| key | [IN] key或保存key的地址。 |
| value | [OUT] 查到的数据。 |
| CSTL_OK | 查找成功。 |
| CSTL_ERROR | 查找失败。 |
| void CstlHashClear | ( | CstlHash * | hash | ) |
删除hash表所有节点。
| hash | [IN] hash表句柄。 |
| 无。 |
默认整型哈希函数。
| key | [IN] 待计算的key。 |
| bktSize | [IN] 哈希桶大小。 |
| #哈希值 | 根据用户key计算出的哈希值。 |
默认字符串哈希函数。
| key | [IN] 待计算的key。 |
| bktSize | [IN] 哈希桶大小。 |
| #哈希值 | 根据用户key计算出的哈希值。 |
| CstlHash * CstlHashCreate | ( | size_t | bktSize, |
| CstlHashCodeCalcFunc | hashFunc, | ||
| CstlHashMatchFunc | matchFunc, | ||
| CstlDupFreeFuncPair * | keyFunc, | ||
| CstlDupFreeFuncPair * | valueFunc | ||
| ) |
创建一个Hash表,返回Hash表的句柄
| bktSize | [IN] hash桶的个数 |
| hashCalcFunc | [IN] hash值计算函数。如果为NULL,则默认key为整型,使用::CstlHashCodeCalcInt。 |
| matchFunc | [IN] hash key匹配函数。如为NULL,则默认key为整型,使用::CstlHashMatchInt。 |
| keyFunc | [IN] hash key拷贝及释放函数对,如果用户未注册keyFunc->dupFunc,则默认为key为整型。 |
| valueFunc | [IN] hash data拷贝及释放函数对。如果用户未注册valueFunc->dupFunc,则默认为data为整型。 |
| hash表句柄。NULL表示创建失败。 |
| void CstlHashDestory | ( | CstlHash * | hash | ) |
删除hash表
| hash | [IN] hash表句柄。 |
| 无。 |
| bool CstlHashEmpty | ( | const CstlHash * | hash | ) |
判断当前HASH表是否为空。
| hash | [IN] hash表句柄。取值范围为有效指针。 |
| #true, | 表示HASH表为空。 |
| #false,表示HASH表非空。 |
| CstlHashIterator CstlHashErase | ( | CstlHash * | hash, |
| uintptr_t | key | ||
| ) |
从hash表中移除指定结点。
| hash | [IN] hash表句柄。取值范围为有效指针。 |
| key | [IN] 移除节点key。 |
| key存在时,返回key所在迭代器的下一个迭代器(指向Node所在地址),其他则返回::CstlHashIterEnd()。 |
| CstlHashIterator CstlHashFind | ( | const CstlHash * | hash, |
| uintptr_t | key | ||
| ) |
查找key所在迭代器。
| hash | [IN] hash表的句柄。 |
| key | [IN] key或保存key的地址。 |
| key存在时,返回key所在迭代器(指向Node所在地址),其他情况返回::CstlHashIterEnd()。 |
| int32_t CstlHashInsert | ( | CstlHash * | hash, |
| uintptr_t | key, | ||
| size_t | keySize, | ||
| uintptr_t | value, | ||
| size_t | valueSize | ||
| ) |
插入hash数据
| hash | [IN] hash表的句柄。 |
| key | [IN] key或保存key的地址。 |
| keySize | [IN] key拷贝长度,若用户未注册dupFunc,该参数将不被使用 |
| value | [IN] value或保存value的地址。 |
| valueSize | [IN] value拷贝长度,若用户未注册dupFunc,该参数将不被使用 |
| CSTL_OK | 插入节点成功。 |
| CSTL_ERROR | 插入失败。 |
| CstlHashIterator CstlHashIterBegin | ( | const CstlHash * | hash | ) |
获取hash表中的第一个节点的迭代器。
| hash | [IN] hash表的句柄。 |
| 第一个节点迭代器,若hash为空则返回::CstlHashIterEnd()。 |
| CstlHashIterator CstlHashIterEnd | ( | const CstlHash * | hash | ) |
获取hash表中最后一个节点之后预留的迭代器。
| hash | [IN] hash表的句柄。 |
| 最后一个节点之后预留的迭代器。 |
| uintptr_t CstlHashIterKey | ( | const CstlHash * | hash, |
| CstlHashIterator | it | ||
| ) |
获取迭代器的key。
| hash | [IN] hash表的句柄。 |
| it | [IN] 当前迭代器。 |
| 迭代器对应的key。it等于::CstlHashIterEnd()时则返回0。 |
| CstlHashIterator CstlHashIterNext | ( | const CstlHash * | hash, |
| CstlHashIterator | it | ||
| ) |
获取hash表的下一个节点迭代器。
| hash | [IN] hash表的句柄。 |
| it | [IN] 当前迭代器。 |
| 下一个节点迭代器。若当前节点已是最后一个迭代器则返回::CstlHashIterEnd()。 |
| uintptr_t CstlHashIterValue | ( | const CstlHash * | hash, |
| CstlHashIterator | it | ||
| ) |
获取迭代器的value。
| hash | [IN] hash表的句柄。 |
| it | [IN] 当前迭代器。 |
| 迭代器对应的value。it等于::CstlHashIterEnd()时则返回0。 |
| int32_t CstlHashPut | ( | CstlHash * | hash, |
| uintptr_t | key, | ||
| size_t | keySize, | ||
| uintptr_t | value, | ||
| size_t | valueSize | ||
| ) |
插入或更新hash数据
| hash | [IN] hash表的句柄。 |
| key | [IN] key或保存key的地址。 |
| keySize | [IN] key拷贝长度,若用户未注册dupFunc,该参数将不被使用 |
| value | [IN] value或保存value的地址。 |
| valueSize | [IN] value拷贝长度,若用户未注册dupFunc,该参数将不被使用 |
| CSTL_OK | 插入或更新节点成功。 |
| CSTL_ERROR | 插入或更新节点失败。 |