Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party CJSON
提交
c0b17dc6
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,发现更多精彩内容 >>
提交
c0b17dc6
编写于
10月 29, 2016
作者:
M
Max Bruckner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
reformatting: cJSONUtils_GenerateMergePatch
上级
01a813f6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
53 addition
and
29 deletion
+53
-29
cJSON_Utils.c
cJSON_Utils.c
+53
-29
未找到文件。
cJSON_Utils.c
浏览文件 @
c0b17dc6
...
...
@@ -756,34 +756,58 @@ cJSON* cJSONUtils_MergePatch(cJSON *target, cJSON *patch)
return
target
;
}
cJSON
*
cJSONUtils_GenerateMergePatch
(
cJSON
*
from
,
cJSON
*
to
)
cJSON
*
cJSONUtils_GenerateMergePatch
(
cJSON
*
from
,
cJSON
*
to
)
{
cJSON
*
patch
=
0
;
if
(
!
to
)
return
cJSON_CreateNull
();
if
(
to
->
type
!=
cJSON_Object
||
!
from
||
from
->
type
!=
cJSON_Object
)
return
cJSON_Duplicate
(
to
,
1
);
cJSONUtils_SortObject
(
from
);
cJSONUtils_SortObject
(
to
);
from
=
from
->
child
;
to
=
to
->
child
;
patch
=
cJSON_CreateObject
();
while
(
from
||
to
)
{
int
compare
=
from
?
(
to
?
strcmp
(
from
->
string
,
to
->
string
)
:-
1
)
:
1
;
if
(
compare
<
0
)
{
cJSON_AddItemToObject
(
patch
,
from
->
string
,
cJSON_CreateNull
());
from
=
from
->
next
;
}
else
if
(
compare
>
0
)
{
cJSON_AddItemToObject
(
patch
,
to
->
string
,
cJSON_Duplicate
(
to
,
1
));
to
=
to
->
next
;
}
else
{
if
(
cJSONUtils_Compare
(
from
,
to
))
cJSON_AddItemToObject
(
patch
,
to
->
string
,
cJSONUtils_GenerateMergePatch
(
from
,
to
));
from
=
from
->
next
;
to
=
to
->
next
;
}
}
if
(
!
patch
->
child
)
{
cJSON_Delete
(
patch
);
return
0
;}
return
patch
;
cJSON
*
patch
=
0
;
if
(
!
to
)
{
/* patch to delete everything */
return
cJSON_CreateNull
();
}
if
((
to
->
type
!=
cJSON_Object
)
||
!
from
||
(
from
->
type
!=
cJSON_Object
))
{
return
cJSON_Duplicate
(
to
,
1
);
}
cJSONUtils_SortObject
(
from
);
cJSONUtils_SortObject
(
to
);
from
=
from
->
child
;
to
=
to
->
child
;
patch
=
cJSON_CreateObject
();
while
(
from
||
to
)
{
int
compare
=
from
?
(
to
?
strcmp
(
from
->
string
,
to
->
string
)
:
-
1
)
:
1
;
if
(
compare
<
0
)
{
/* from has a value that to doesn't have -> remove */
cJSON_AddItemToObject
(
patch
,
from
->
string
,
cJSON_CreateNull
());
from
=
from
->
next
;
}
else
if
(
compare
>
0
)
{
/* to has a value that from doesn't have -> add to patch */
cJSON_AddItemToObject
(
patch
,
to
->
string
,
cJSON_Duplicate
(
to
,
1
));
to
=
to
->
next
;
}
else
{
/* object key exists in both objects */
if
(
cJSONUtils_Compare
(
from
,
to
))
{
/* not identical --> generate a patch */
cJSON_AddItemToObject
(
patch
,
to
->
string
,
cJSONUtils_GenerateMergePatch
(
from
,
to
));
}
/* next key in the object */
from
=
from
->
next
;
to
=
to
->
next
;
}
}
if
(
!
patch
->
child
)
{
cJSON_Delete
(
patch
);
return
0
;
}
return
patch
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录