Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party CJSON
提交
88cbe57b
T
Third Party CJSON
项目概览
OpenHarmony
/
Third Party CJSON
大约 1 年 前同步成功
通知
6
Star
22
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party CJSON
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
88cbe57b
编写于
9月 27, 2016
作者:
M
Max Bruckner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
reformatting: parse_number
上级
46cfa68a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
65 addition
and
17 deletion
+65
-17
cJSON.c
cJSON.c
+65
-17
未找到文件。
cJSON.c
浏览文件 @
88cbe57b
...
...
@@ -130,25 +130,73 @@ void cJSON_Delete(cJSON *c)
}
/* Parse the input text to generate a number, and populate the result into item. */
static
const
char
*
parse_number
(
cJSON
*
item
,
const
char
*
num
)
static
const
char
*
parse_number
(
cJSON
*
item
,
const
char
*
num
)
{
double
n
=
0
,
sign
=
1
,
scale
=
0
;
int
subscale
=
0
,
signsubscale
=
1
;
if
(
*
num
==
'-'
)
sign
=-
1
,
num
++
;
/* Has sign? */
if
(
*
num
==
'0'
)
num
++
;
/* is zero */
if
(
*
num
>=
'1'
&&
*
num
<=
'9'
)
do
n
=
(
n
*
10
.
0
)
+
(
*
num
++
-
'0'
);
while
(
*
num
>=
'0'
&&
*
num
<=
'9'
);
/* Number? */
if
(
*
num
==
'.'
&&
num
[
1
]
>=
'0'
&&
num
[
1
]
<=
'9'
)
{
num
++
;
do
n
=
(
n
*
10
.
0
)
+
(
*
num
++
-
'0'
),
scale
--
;
while
(
*
num
>=
'0'
&&
*
num
<=
'9'
);}
/* Fractional part? */
if
(
*
num
==
'e'
||
*
num
==
'E'
)
/* Exponent? */
{
num
++
;
if
(
*
num
==
'+'
)
num
++
;
else
if
(
*
num
==
'-'
)
signsubscale
=-
1
,
num
++
;
/* With sign? */
while
(
*
num
>=
'0'
&&
*
num
<=
'9'
)
subscale
=
(
subscale
*
10
)
+
(
*
num
++
-
'0'
);
/* Number? */
}
double
n
=
0
;
double
sign
=
1
;
double
scale
=
0
;
int
subscale
=
0
;
int
signsubscale
=
1
;
/* Has sign? */
if
(
*
num
==
'-'
)
{
sign
=
-
1
;
num
++
;
}
/* is zero */
if
(
*
num
==
'0'
)
{
num
++
;
}
/* Number? */
if
((
*
num
>=
'1'
)
&&
(
*
num
<=
'9'
))
{
do
{
n
=
(
n
*
10
.
0
)
+
(
*
num
++
-
'0'
);
}
while
((
*
num
>=
'0'
)
&&
(
*
num
<=
'9'
));
}
/* Fractional part? */
if
((
*
num
==
'.'
)
&&
(
num
[
1
]
>=
'0'
)
&&
(
num
[
1
]
<=
'9'
))
{
num
++
;
do
{
n
=
(
n
*
10
.
0
)
+
(
*
num
++
-
'0'
);
scale
--
;
}
while
((
*
num
>=
'0'
)
&&
(
*
num
<=
'9'
));
}
/* Exponent? */
if
((
*
num
==
'e'
)
||
(
*
num
==
'E'
))
{
num
++
;
/* With sign? */
if
(
*
num
==
'+'
)
{
num
++
;
}
else
if
(
*
num
==
'-'
)
{
signsubscale
=
-
1
;
num
++
;
}
/* Number? */
while
((
*
num
>=
'0'
)
&&
(
*
num
<=
'9'
))
{
subscale
=
(
subscale
*
10
)
+
(
*
num
++
-
'0'
);
}
}
n
=
sign
*
n
*
pow
(
10
.
0
,(
scale
+
subscale
*
signsubscale
));
/* number = +/- number.fraction * 10^+/- exponent */
item
->
valuedouble
=
n
;
item
->
valueint
=
(
int
)
n
;
item
->
type
=
cJSON_Number
;
return
num
;
/* number = +/- number.fraction * 10^+/- exponent */
n
=
sign
*
n
*
pow
(
10
.
0
,
(
scale
+
subscale
*
signsubscale
));
item
->
valuedouble
=
n
;
item
->
valueint
=
(
int
)
n
;
item
->
type
=
cJSON_Number
;
return
num
;
}
static
int
pow2gt
(
int
x
)
{
--
x
;
x
|=
x
>>
1
;
x
|=
x
>>
2
;
x
|=
x
>>
4
;
x
|=
x
>>
8
;
x
|=
x
>>
16
;
return
x
+
1
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录