Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
畅游知识海洋
json
提交
61461ec4
J
json
项目概览
畅游知识海洋
/
json
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
json
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
61461ec4
编写于
7月 05, 2013
作者:
N
Niels
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
- fixes from Harro
上级
23ada516
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
96 addition
and
13 deletion
+96
-13
src/JSON.cc
src/JSON.cc
+31
-6
src/JSON.h
src/JSON.h
+1
-1
test/JSON_test.cc
test/JSON_test.cc
+64
-6
未找到文件。
src/JSON.cc
浏览文件 @
61461ec4
...
...
@@ -643,6 +643,7 @@ std::string JSON::parser::parseString() {
const
size_t
length
=
p
-
_buffer
-
_pos
;
char
*
tmp
=
new
char
[
length
+
1
];
std
::
strncpy
(
tmp
,
_buffer
+
_pos
,
length
);
tmp
[
length
]
=
0
;
std
::
string
result
(
tmp
);
delete
[]
tmp
;
...
...
@@ -838,11 +839,11 @@ JSON::iterator::iterator(JSON* j) : _object(j), _vi(nullptr), _oi(nullptr) {
JSON
::
iterator
::
iterator
(
const
JSON
::
iterator
&
o
)
:
_object
(
o
.
_object
),
_vi
(
nullptr
),
_oi
(
nullptr
)
{
switch
(
_object
->
_type
)
{
case
(
array
):
{
_vi
=
new
std
::
vector
<
JSON
>::
iterator
(
static_cast
<
std
::
vector
<
JSON
>*>
(
_object
->
_payload
)
->
begin
(
));
_vi
=
new
std
::
vector
<
JSON
>::
iterator
(
*
(
o
.
_vi
));
break
;
}
case
(
object
):
{
_oi
=
new
std
::
map
<
std
::
string
,
JSON
>::
iterator
(
static_cast
<
std
::
map
<
std
::
string
,
JSON
>*>
(
_object
->
_payload
)
->
begin
(
));
_oi
=
new
std
::
map
<
std
::
string
,
JSON
>::
iterator
(
*
(
o
.
_oi
));
break
;
}
default:
...
...
@@ -857,6 +858,18 @@ JSON::iterator::~iterator() {
JSON
::
iterator
&
JSON
::
iterator
::
operator
=
(
const
JSON
::
iterator
&
o
)
{
_object
=
o
.
_object
;
switch
(
_object
->
_type
)
{
case
(
array
):
{
_vi
=
new
std
::
vector
<
JSON
>::
iterator
(
*
(
o
.
_vi
));
break
;
}
case
(
object
):
{
_oi
=
new
std
::
map
<
std
::
string
,
JSON
>::
iterator
(
*
(
o
.
_oi
));
break
;
}
default:
break
;
}
return
*
this
;
}
...
...
@@ -985,11 +998,11 @@ JSON::const_iterator::const_iterator(const JSON* j) : _object(j), _vi(nullptr),
JSON
::
const_iterator
::
const_iterator
(
const
JSON
::
const_iterator
&
o
)
:
_object
(
o
.
_object
),
_vi
(
nullptr
),
_oi
(
nullptr
)
{
switch
(
_object
->
_type
)
{
case
(
array
):
{
_vi
=
new
std
::
vector
<
JSON
>::
const_iterator
(
static_cast
<
std
::
vector
<
JSON
>*>
(
_object
->
_payload
)
->
begin
(
));
_vi
=
new
std
::
vector
<
JSON
>::
const_iterator
(
*
(
o
.
_vi
));
break
;
}
case
(
object
):
{
_oi
=
new
std
::
map
<
std
::
string
,
JSON
>::
const_iterator
(
static_cast
<
std
::
map
<
std
::
string
,
JSON
>*>
(
_object
->
_payload
)
->
begin
(
));
_oi
=
new
std
::
map
<
std
::
string
,
JSON
>::
const_iterator
(
*
(
o
.
_oi
));
break
;
}
default:
...
...
@@ -1000,11 +1013,11 @@ JSON::const_iterator::const_iterator(const JSON::const_iterator& o) : _object(o.
JSON
::
const_iterator
::
const_iterator
(
const
JSON
::
iterator
&
o
)
:
_object
(
o
.
_object
),
_vi
(
nullptr
),
_oi
(
nullptr
)
{
switch
(
_object
->
_type
)
{
case
(
array
):
{
_vi
=
new
std
::
vector
<
JSON
>::
const_iterator
(
static_cast
<
std
::
vector
<
JSON
>*>
(
_object
->
_payload
)
->
begin
(
));
_vi
=
new
std
::
vector
<
JSON
>::
const_iterator
(
*
(
o
.
_vi
));
break
;
}
case
(
object
):
{
_oi
=
new
std
::
map
<
std
::
string
,
JSON
>::
const_iterator
(
static_cast
<
std
::
map
<
std
::
string
,
JSON
>*>
(
_object
->
_payload
)
->
begin
(
));
_oi
=
new
std
::
map
<
std
::
string
,
JSON
>::
const_iterator
(
*
(
o
.
_oi
));
break
;
}
default:
...
...
@@ -1019,6 +1032,18 @@ JSON::const_iterator::~const_iterator() {
JSON
::
const_iterator
&
JSON
::
const_iterator
::
operator
=
(
const
JSON
::
const_iterator
&
o
)
{
_object
=
o
.
_object
;
switch
(
_object
->
_type
)
{
case
(
array
):
{
_vi
=
new
std
::
vector
<
JSON
>::
const_iterator
(
*
(
o
.
_vi
));
break
;
}
case
(
object
):
{
_oi
=
new
std
::
map
<
std
::
string
,
JSON
>::
const_iterator
(
*
(
o
.
_oi
));
break
;
}
default:
break
;
}
return
*
this
;
}
...
...
src/JSON.h
浏览文件 @
61461ec4
...
...
@@ -6,8 +6,8 @@
#endif
// allow us to use "nullptr" everywhere
#ifndef nullptr
#include <cstddef>
#ifndef nullptr
#define nullptr NULL
#endif
...
...
test/JSON_test.cc
浏览文件 @
61461ec4
...
...
@@ -202,20 +202,78 @@ void test_array() {
#endif
// iterators
{
size_t
count
=
0
;
for
(
JSON
::
iterator
i
=
a
.
begin
();
i
!=
a
.
end
();
++
i
)
{
std
::
cerr
<<
*
i
<<
'\n'
;
count
++
;
}
assert
(
count
==
a
.
size
());
}
{
/*
size_t count = 0;
for (JSON::const_iterator i = a.begin(); i != a.end(); ++i) {
std::cerr << *i << '\n';
count++;
}
assert(count == a.size());
*/
}
{
size_t
count
=
0
;
for
(
JSON
::
const_iterator
i
=
a
.
cbegin
();
i
!=
a
.
cend
();
++
i
)
{
std
::
cerr
<<
*
i
<<
'\n'
;
count
++
;
}
assert
(
count
==
a
.
size
());
}
#ifdef __cplusplus11
{
size_t
count
=
0
;
for
(
auto
element
:
a
)
{
std
::
cerr
<<
element
<<
'\n'
;
count
++
;
}
assert
(
count
==
a
.
size
());
}
#endif
{
JSON
::
iterator
i
;
size_t
count
=
0
;
for
(
i
=
a
.
begin
();
i
!=
a
.
end
();
++
i
)
{
std
::
cerr
<<
*
i
<<
'\n'
;
count
++
;
}
assert
(
count
==
a
.
size
());
}
{
/*
JSON::const_iterator i;
size_t count = 0;
for (i = a.begin(); i != a.end(); ++i) {
std::cerr << *i << '\n';
count++;
}
assert(count == a.size());
*/
}
{
JSON
::
const_iterator
i
;
size_t
count
=
0
;
for
(
i
=
a
.
cbegin
();
i
!=
a
.
cend
();
++
i
)
{
std
::
cerr
<<
*
i
<<
'\n'
;
count
++
;
}
assert
(
count
==
a
.
size
());
}
{
// get payload
std
::
vector
<
JSON
>*
array
=
static_cast
<
std
::
vector
<
JSON
>*>
(
a
.
data
());
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录