Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
畅游知识海洋
json
提交
caf82be2
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,发现更多精彩内容 >>
提交
caf82be2
编写于
2月 08, 2015
作者:
N
Niels
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
added reverse iterators
上级
87c250d8
变更
2
展开全部
隐藏空白更改
内联
并排
Showing
2 changed file
with
777 addition
and
336 deletion
+777
-336
src/json.hpp
src/json.hpp
+714
-321
src/json.hpp.re2c
src/json.hpp.re2c
+63
-15
未找到文件。
src/json.hpp
浏览文件 @
caf82be2
此差异已折叠。
点击以展开。
src/json.hpp.re2c
浏览文件 @
caf82be2
...
@@ -84,6 +84,10 @@ class basic_json
...
@@ -84,6 +84,10 @@ class basic_json
using iterator = basic_json::iterator;
using iterator = basic_json::iterator;
/// a const iterator for a basic_json container
/// a const iterator for a basic_json container
using const_iterator = basic_json::const_iterator;
using const_iterator = basic_json::const_iterator;
// a reverse iterator for a basic_json container
using reverse_iterator = std::reverse_iterator<iterator>;
/// a const reverse iterator for a basic_json container
using const_reverse_iterator = std::reverse_iterator<const_iterator>;
///////////////////////////
///////////////////////////
...
@@ -255,6 +259,8 @@ class basic_json
...
@@ -255,6 +259,8 @@ class basic_json
std::enable_if<
std::enable_if<
not std::is_same<V, basic_json::iterator>::value and
not std::is_same<V, basic_json::iterator>::value and
not std::is_same<V, basic_json::const_iterator>::value and
not std::is_same<V, basic_json::const_iterator>::value and
not std::is_same<V, basic_json::reverse_iterator>::value and
not std::is_same<V, basic_json::const_reverse_iterator>::value and
std::is_constructible<basic_json, typename V::value_type>::value, int>::type
std::is_constructible<basic_json, typename V::value_type>::value, int>::type
= 0>
= 0>
inline basic_json(const V& value)
inline basic_json(const V& value)
...
@@ -437,7 +443,7 @@ class basic_json
...
@@ -437,7 +443,7 @@ class basic_json
: m_type(std::move(other.m_type)),
: m_type(std::move(other.m_type)),
m_value(std::move(other.m_value))
m_value(std::move(other.m_value))
{
{
// inval
u
date payload
// inval
i
date payload
other.m_type = value_t::null;
other.m_type = value_t::null;
other.m_value = {};
other.m_value = {};
}
}
...
@@ -461,23 +467,24 @@ class basic_json
...
@@ -461,23 +467,24 @@ class basic_json
m_value.object = nullptr;
m_value.object = nullptr;
break;
break;
}
}
case (value_t::array):
case (value_t::array):
{
{
delete m_value.array;
delete m_value.array;
m_value.array = nullptr;
m_value.array = nullptr;
break;
break;
}
}
case (value_t::string):
case (value_t::string):
{
{
delete m_value.string;
delete m_value.string;
m_value.string = nullptr;
m_value.string = nullptr;
break;
break;
}
}
case (value_t::null):
case (value_t::boolean):
default:
case (value_t::number_integer):
case (value_t::number_float):
{
{
// all other types need no specific destructor
break;
break;
}
}
}
}
...
@@ -815,6 +822,38 @@ class basic_json
...
@@ -815,6 +822,38 @@ class basic_json
return result;
return result;
}
}
/// returns a reverse iterator to the end of the container
inline reverse_iterator rbegin() const noexcept
{
reverse_iterator result(this);
result.set_end();
return result;
}
/// returns a reverse iterator to the beginning of the container
inline reverse_iterator rend() const noexcept
{
reverse_iterator result(this);
result.set_begin();
return result;
}
/// returns a const reverse iterator to the end of the container
inline const_reverse_iterator crbegin() const noexcept
{
const_reverse_iterator result(this);
result.set_end();
return result;
}
/// returns a const reverse iterator to the beginning of the container
inline const_reverse_iterator crend() const noexcept
{
const_reverse_iterator result(this);
result.set_begin();
return result;
}
//////////////
//////////////
// capacity //
// capacity //
...
@@ -839,10 +878,13 @@ class basic_json
...
@@ -839,10 +878,13 @@ class basic_json
{
{
return m_value.object->empty();
return m_value.object->empty();
}
}
}
// all other types are nonempty
default:
return false;
{
// all other types are nonempty
return false;
}
}
}
}
/// returns the number of elements
/// returns the number of elements
...
@@ -864,10 +906,13 @@ class basic_json
...
@@ -864,10 +906,13 @@ class basic_json
{
{
return m_value.object->size();
return m_value.object->size();
}
}
}
// all other types have size 1
default:
return 1;
{
// all other types have size 1
return 1;
}
}
}
}
/// returns the maximum possible number of elements
/// returns the maximum possible number of elements
...
@@ -889,10 +934,13 @@ class basic_json
...
@@ -889,10 +934,13 @@ class basic_json
{
{
return m_value.object->max_size();
return m_value.object->max_size();
}
}
}
// all other types have max_size 1
default:
return 1;
{
// all other types have max_size 1
return 1;
}
}
}
}
...
@@ -2744,7 +2792,7 @@ class basic_json
...
@@ -2744,7 +2792,7 @@ class basic_json
);
);
}
}
private:
private:
/// the buffer
/// the buffer
std::string buffer;
std::string buffer;
/// a pointer to the next character to read from the buffer
/// a pointer to the next character to read from the buffer
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录