summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/rapidjson/doc/features.zh-cn.md
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/rapidjson/doc/features.zh-cn.md')
-rw-r--r--3rdparty/rapidjson/doc/features.zh-cn.md97
1 files changed, 97 insertions, 0 deletions
diff --git a/3rdparty/rapidjson/doc/features.zh-cn.md b/3rdparty/rapidjson/doc/features.zh-cn.md
new file mode 100644
index 00000000000..85a7db16274
--- /dev/null
+++ b/3rdparty/rapidjson/doc/features.zh-cn.md
@@ -0,0 +1,97 @@
+# 特点
+
+## 总体
+
+* 跨平台
+ * 编译器:Visual Studio、gcc、clang等
+ * 架构:x86、x64、ARM等
+ * 操作系统:Windows、Mac OS X、Linux、iOS、Android等
+* 容易安装
+ * 只有头文件的库。只需把头文件复制至你的项目中。
+* 独立、最小依赖
+ * 不需依赖STL、BOOST等。
+ * 只包含`<cstdio>`, `<cstdlib>`, `<cstring>`, `<inttypes.h>`, `<new>`, `<stdint.h>`。
+* 没使用C++异常、RTTI
+* 高性能
+ * 使用模版及内联函数去降低函数调用开销。
+ * 内部经优化的Grisu2及浮点数解析实现。
+ * 可选的SSE2/SSE4.2支持。
+
+## 符合标准
+
+* RapidJSON应完全符合RFC4627/ECMA-404标准。
+* 支持Unicod代理对(surrogate pair)。
+* 支持空字符(`"\u0000"`)。
+ * 例如,可以优雅地解析及处理`["Hello\u0000World"]`。含读写字符串长度的API。
+* 支持放宽的可选语法
+ * 单行(`// ...`)及多行(`/* ... */`) 注释。
+
+## Unicode
+
+* 支持UTF-8、UTF-16、UTF-32编码,包括小端序和大端序。
+ * 这些编码用于输入输出流,以及内存中的表示。
+* 支持从输入流自动检测编码。
+* 内部支持编码的转换。
+ * 例如,你可以读取一个UTF-8文件,让RapidJSON把JSON字符串转换至UTF-16的DOM。
+* 内部支持编码校验。
+ * 例如,你可以读取一个UTF-8文件,让RapidJSON检查是否所有JSON字符串是合法的UTF-8字节序列。
+* 支持自定义的字符类型。
+ * 预设的字符类型是:UTF-8为`char`,UTF-16为`wchar_t`,UTF32为`uint32_t`。
+* 支持自定义的编码。
+
+## API风格
+
+* SAX(Simple API for XML)风格API
+ * 类似于[SAX](http://en.wikipedia.org/wiki/Simple_API_for_XML), RapidJSON提供一个事件循序访问的解析器API(`rapidjson::GenericReader`)。RapidJSON也提供一个生成器API(`rapidjson::Writer`),可以处理相同的事件集合。
+* DOM(Document Object Model)风格API
+ * 类似于HTML/XML的[DOM](http://en.wikipedia.org/wiki/Document_Object_Model),RapidJSON可把JSON解析至一个DOM表示方式(`rapidjson::GenericDocument`),以方便操作。如有需要,可把DOM转换(stringify)回JSON。
+ * DOM风格API(`rapidjson::GenericDocument`)实际上是由SAX风格API(`rapidjson::GenericReader`)实现的。SAX更快,但有时DOM更易用。用户可根据情况作出选择。
+
+## 解析
+
+* 递归式(预设)及迭代式解析器
+ * 递归式解析器较快,但在极端情况下可出现堆栈溢出。
+ * 迭代式解析器使用自定义的堆栈去维持解析状态。
+* 支持原位(*in situ*)解析。
+ * 把JSON字符串的值解析至原JSON之中,然后让DOM指向那些字符串。
+ * 比常规分析更快:不需字符串的内存分配、不需复制(如字符串不含转义符)、缓存友好。
+* 对于JSON数字类型,支持32-bit/64-bit的有号/无号整数,以及`double`。
+* 错误处理
+ * 支持详尽的解析错误代号。
+ * 支持本地化错误信息。
+
+## DOM (Document)
+
+* RapidJSON在类型转换时会检查数值的范围。
+* 字符串字面量的优化
+ * 只储存指针,不作复制
+* 优化“短”字符串
+ * 在`Value`内储存短字符串,无需额外分配。
+ * 对UTF-8字符串来说,32位架构下可存储最多11字符,64位下15字符。
+* 可选地支持`std::string`(定义`RAPIDJSON_HAS_STDSTRING=1`)
+
+## 生成
+
+* 支持`rapidjson::PrettyWriter`去加入换行及缩进。
+
+## 输入输出流
+
+* 支持`rapidjson::GenericStringBuffer`,把输出的JSON储存于字符串内。
+* 支持`rapidjson::FileReadStream`及`rapidjson::FileWriteStream`,使用`FILE`对象作输入输出。
+* 支持自定义输入输出流。
+
+## 内存
+
+* 最小化DOM的内存开销。
+ * 对大部分32/64位机器而言,每个JSON值只占16或20字节(不包含字符串)。
+* 支持快速的预设分配器。
+ * 它是一个堆栈形式的分配器(顺序分配,不容许单独释放,适合解析过程之用)。
+ * 使用者也可提供一个预分配的缓冲区。(有可能达至无需CRT分配就能解析多个JSON)
+* 支持标准CRT(C-runtime)分配器。
+* 支持自定义分配器。
+
+## 其他
+
+* 一些C++11的支持(可选)
+ * 右值引用(rvalue reference)
+ * `noexcept`修饰符