Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
hanoi2005
redis
提交
d428569d
R
redis
项目概览
hanoi2005
/
redis
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
redis
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d428569d
编写于
4月 14, 2014
作者:
A
antirez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
More robust HLL_SPARSE macros protecting 'p' with parens.
Now the macros will work with arguments such as "ptr+1".
上级
2d1e35a5
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
8 deletion
+8
-8
src/hyperloglog.c
src/hyperloglog.c
+8
-8
未找到文件。
src/hyperloglog.c
浏览文件 @
d428569d
...
...
@@ -361,13 +361,13 @@ struct hllhdr {
* The macros parameter is expected to be an uint8_t pointer. */
#define HLL_SPARSE_XZERO_BIT 0x40
/* 01xxxxxx */
#define HLL_SPARSE_VAL_BIT 0x80
/* 1vvvvvxx */
#define HLL_SPARSE_IS_ZERO(p) (((*
p
) & 0xc0) == 0)
/* 00xxxxxx */
#define HLL_SPARSE_IS_XZERO(p) (((*
p
) & 0xc0) == HLL_SPARSE_XZERO_BIT)
#define HLL_SPARSE_IS_VAL(p) ((*
p
) & HLL_SPARSE_VAL_BIT)
#define HLL_SPARSE_ZERO_LEN(p) (((*
p
) & 0x3f)+1)
#define HLL_SPARSE_XZERO_LEN(p) (((((*
p) & 0x3f) << 8) | (*(p
+1)))+1)
#define HLL_SPARSE_VAL_VALUE(p) ((((*
p
) >> 2) & 0x1f)+1)
#define HLL_SPARSE_VAL_LEN(p) (((*
p
) & 0x3)+1)
#define HLL_SPARSE_IS_ZERO(p) (((*
(p)
) & 0xc0) == 0)
/* 00xxxxxx */
#define HLL_SPARSE_IS_XZERO(p) (((*
(p)
) & 0xc0) == HLL_SPARSE_XZERO_BIT)
#define HLL_SPARSE_IS_VAL(p) ((*
(p)
) & HLL_SPARSE_VAL_BIT)
#define HLL_SPARSE_ZERO_LEN(p) (((*
(p)
) & 0x3f)+1)
#define HLL_SPARSE_XZERO_LEN(p) (((((*
(p)) & 0x3f) << 8) | (*((p)
+1)))+1)
#define HLL_SPARSE_VAL_VALUE(p) ((((*
(p)
) >> 2) & 0x1f)+1)
#define HLL_SPARSE_VAL_LEN(p) (((*
(p)
) & 0x3)+1)
#define HLL_SPARSE_VAL_MAX_VALUE 32
#define HLL_SPARSE_VAL_MAX_LEN 4
#define HLL_SPARSE_ZERO_MAX_LEN 64
...
...
@@ -381,7 +381,7 @@ struct hllhdr {
#define HLL_SPARSE_XZERO_SET(p,len) do { \
int _l = (len)-1; \
*(p) = (_l>>8) | HLL_SPARSE_XZERO_BIT; \
*(
p
+1) = (_l&0xff); \
*(
(p)
+1) = (_l&0xff); \
} while(0)
/* ========================= HyperLogLog algorithm ========================= */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录