stage1 解决重构哈希 nob优化支持头文件缓存以及win下exe缓存

This commit is contained in:
zzy committed 2026-09-17 20:55:21 +08:00
1 parent 70ac7380e9
commit fb0ff9b663
8 files changed
+236 -98

No files matched your search

-27
View File
@@ -202,33 +202,6 @@ static inline usize map_hash_str(const char *s) {
_found; \
}))
/**
* 查询(续探):首次调用前将 *in_out_idx 置为 (usize)-1,
* 则从键自身的 hash 桶开始查找;命中后 *out_val 被赋值、返回 1,
* 且 *in_out_idx 更新为命中槽位,下次调用从该槽的下一个继续探测(碰撞续探)。
* 扫描到空槽返回 0。用于 key 碰撞后需要回表二次比较的场景。
*/
#define map_get_continue(map, _key, out_val, in_out_idx) \
(({ \
int _found = 0; \
if ((map).cap > 0) { \
usize _mask = (map).cap - 1; \
usize _idx = (*(in_out_idx) == (usize) - 1) ? (map).hash(_key) & _mask \
: (*(in_out_idx) + 1) & _mask; \
while ((map).data[_idx].state != __MAP_SLOT_EMPTY) { \
if ((map).data[_idx].state == __MAP_SLOT_OCCUPIED && \
(map).cmp((map).data[_idx].key, _key) == 0) { \
*out_val = (map).data[_idx].val; \
*(in_out_idx) = _idx; \
_found = 1; \
break; \
} \
_idx = (_idx + 1) & _mask; \
} \
} \
_found; \
}))
/**
* 删除指定键
*/