Commit 8979c14f authored by Milo Yip's avatar Milo Yip

Merge branch 'master' into issue716_parsebyparts

parents 0f9dbe0a 9f668828
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
* RapidJSON 应完全符合 RFC4627/ECMA-404 标准。 * RapidJSON 应完全符合 RFC4627/ECMA-404 标准。
* 支持 JSON Pointer (RFC6901). * 支持 JSON Pointer (RFC6901).
* 支持 JSON Schema Draft v4. * 支持 JSON Schema Draft v4.
* 支持 Unicod 代理对(surrogate pair)。 * 支持 Unicode 代理对(surrogate pair)。
* 支持空字符(`"\u0000"`)。 * 支持空字符(`"\u0000"`)。
* 例如,可以优雅地解析及处理 `["Hello\u0000World"]`。含读写字符串长度的 API。 * 例如,可以优雅地解析及处理 `["Hello\u0000World"]`。含读写字符串长度的 API。
* 支持可选的放宽语法 * 支持可选的放宽语法
......
...@@ -316,8 +316,6 @@ struct GenericStringRef { ...@@ -316,8 +316,6 @@ struct GenericStringRef {
GenericStringRef(const GenericStringRef& rhs) : s(rhs.s), length(rhs.length) {} GenericStringRef(const GenericStringRef& rhs) : s(rhs.s), length(rhs.length) {}
GenericStringRef& operator=(const GenericStringRef& rhs) { s = rhs.s; length = rhs.length; }
//! implicit conversion to plain CharType pointer //! implicit conversion to plain CharType pointer
operator const Ch *() const { return s; } operator const Ch *() const { return s; }
...@@ -328,6 +326,8 @@ private: ...@@ -328,6 +326,8 @@ private:
//! Disallow construction from non-const array //! Disallow construction from non-const array
template<SizeType N> template<SizeType N>
GenericStringRef(CharType (&str)[N]) /* = delete */; GenericStringRef(CharType (&str)[N]) /* = delete */;
//! Copy assignment operator not permitted - immutable type
GenericStringRef& operator=(const GenericStringRef& rhs) /* = delete */;
}; };
//! Mark a character pointer as constant string //! Mark a character pointer as constant string
......
...@@ -1473,7 +1473,7 @@ private: ...@@ -1473,7 +1473,7 @@ private:
if (i > 0) { // Remote reference, resolve immediately if (i > 0) { // Remote reference, resolve immediately
if (remoteProvider_) { if (remoteProvider_) {
if (const GenericSchemaDocument* remoteDocument = remoteProvider_->GetRemoteDocument(s, i - 1)) { if (const GenericSchemaDocument* remoteDocument = remoteProvider_->GetRemoteDocument(s, i)) {
PointerType pointer(&s[i], len - i, allocator_); PointerType pointer(&s[i], len - i, allocator_);
if (pointer.IsValid()) { if (pointer.IsValid()) {
if (const SchemaType* sc = remoteDocument->GetSchema(pointer)) { if (const SchemaType* sc = remoteDocument->GetSchema(pointer)) {
......
...@@ -80,13 +80,13 @@ RapidJSON 依赖于以下软件: ...@@ -80,13 +80,13 @@ RapidJSON 依赖于以下软件:
生成测试及例子的步骤: 生成测试及例子的步骤:
1. 执行 `git submodule update --init` 去获取 thirdparty submodules (google test)。 1. 执行 `git submodule update --init` 去获取 thirdparty submodules (google test)。
2. 在 rapidjson 目下,建立一个 `build` 目录。 2. 在 rapidjson 目下,建立一个 `build` 目录。
3.`build` 目录下执行 `cmake ..` 命令以设置生成。Windows 用户可使用 cmake-gui 应用程序。 3.`build` 目录下执行 `cmake ..` 命令以设置生成。Windows 用户可使用 cmake-gui 应用程序。
4. 在 Windows 下,编译生成在 build 目录中的 solution。在 Linux 下,于 build 目录运行 `make` 4. 在 Windows 下,编译生成在 build 目录中的 solution。在 Linux 下,于 build 目录运行 `make`
成功生成后,你会在 `bin` 的目录下找到编译后的测试及例子可执行文件。而生成的文档将位于 build 下的 `doc/html` 目录。要执行测试,请在 build 下执行 `make test``ctest`。使用 `ctest -V` 命令可获取详细的输出。 成功生成后,你会在 `bin` 的目录下找到编译后的测试及例子可执行文件。而生成的文档将位于 build 下的 `doc/html` 目录。要执行测试,请在 build 下执行 `make test``ctest`。使用 `ctest -V` 命令可获取详细的输出。
我们也可以把程序库安装至全系统中,只要在具管理限下从 build 目录执行 `make install` 命令。这样会按系统的偏好设置安装所有文件。当安装 RapidJSON 后,其他的 CMake 项目需要使用它时,可以通过在 `CMakeLists.txt` 加入一句 `find_package(RapidJSON)` 我们也可以把程序库安装至全系统中,只要在具管理限下从 build 目录执行 `make install` 命令。这样会按系统的偏好设置安装所有文件。当安装 RapidJSON 后,其他的 CMake 项目需要使用它时,可以通过在 `CMakeLists.txt` 加入一句 `find_package(RapidJSON)`
## 用法一览 ## 用法一览
......
...@@ -1101,7 +1101,7 @@ public: ...@@ -1101,7 +1101,7 @@ public:
}; };
for (size_t i = 0; i < kCount; i++) for (size_t i = 0; i < kCount; i++)
if (strncmp(uri, uris[i], length) == 0) if (strncmp(uri, uris[i], length) == 0 && strlen(uris[i]) == length)
return sd_[i]; return sd_[i];
return 0; return 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment