From 01e78d7a0a1bd58e03f19467e7e7b9cafffd06af Mon Sep 17 00:00:00 2001 From: spacewander Date: Mon, 27 Oct 2014 16:26:08 +0800 Subject: [PATCH 1/6] Use absolute path for the link to examples So the example link in documentation will always point to correct place. --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 3c53cc2..ad5b204 100644 --- a/readme.md +++ b/readme.md @@ -97,4 +97,4 @@ The following diagram shows the process. ![simpledom](doc/diagram/simpledom.png) -More [examples](example/) are available. +More [examples](https://github.com/miloyip/rapidjson/tree/master/example) are available. From c35bbe54d9f34f6b054f664243492731e32224aa Mon Sep 17 00:00:00 2001 From: "Philipp A. Hartmann" Date: Mon, 17 Nov 2014 13:26:49 +0100 Subject: [PATCH 2/6] Writer: fix documentation of stackAllocator param (closes #196) --- include/rapidjson/writer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/rapidjson/writer.h b/include/rapidjson/writer.h index fdade6e..dc41a1b 100644 --- a/include/rapidjson/writer.h +++ b/include/rapidjson/writer.h @@ -59,7 +59,7 @@ public: //! Constructor /*! \param os Output stream. - \param allocator User supplied allocator. If it is null, it will create a private one. + \param stackAllocator User supplied allocator. If it is null, it will create a private one. \param levelDepth Initial capacity of stack. */ Writer(OutputStream& os, StackAllocator* stackAllocator = 0, size_t levelDepth = kDefaultLevelDepth) : From 6b69662ce8d34f72f4789497fef4034ca8e494c5 Mon Sep 17 00:00:00 2001 From: "Philipp A. Hartmann" Date: Mon, 17 Nov 2014 13:27:54 +0100 Subject: [PATCH 3/6] Writer: declare constructors as explicit Avoids implicit conversion from an `OutputStream` (or an allocator pointer) to a `Writer` instance. --- include/rapidjson/writer.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/rapidjson/writer.h b/include/rapidjson/writer.h index dc41a1b..02d6680 100644 --- a/include/rapidjson/writer.h +++ b/include/rapidjson/writer.h @@ -62,9 +62,11 @@ public: \param stackAllocator User supplied allocator. If it is null, it will create a private one. \param levelDepth Initial capacity of stack. */ + explicit Writer(OutputStream& os, StackAllocator* stackAllocator = 0, size_t levelDepth = kDefaultLevelDepth) : os_(&os), level_stack_(stackAllocator, levelDepth * sizeof(Level)), hasRoot_(false) {} + explicit Writer(StackAllocator* allocator = 0, size_t levelDepth = kDefaultLevelDepth) : os_(0), level_stack_(allocator, levelDepth * sizeof(Level)), hasRoot_(false) {} From c88cc331d5c9816745082e7e8d1294bc1c5ebdd0 Mon Sep 17 00:00:00 2001 From: "Philipp A. Hartmann" Date: Mon, 17 Nov 2014 13:31:24 +0100 Subject: [PATCH 4/6] DiyFp: avoid shadowing (closes #195) --- include/rapidjson/internal/dtoa.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/rapidjson/internal/dtoa.h b/include/rapidjson/internal/dtoa.h index 9645e9b..289a224 100644 --- a/include/rapidjson/internal/dtoa.h +++ b/include/rapidjson/internal/dtoa.h @@ -45,7 +45,7 @@ RAPIDJSON_DIAG_OFF(effc++) struct DiyFp { DiyFp() {} - DiyFp(uint64_t f, int e) : f(f), e(e) {} + DiyFp(uint64_t fp, int exp) : f(fp), e(exp) {} DiyFp(double d) { union { From 3220438aa51b320651083222537706ec29e5b4c6 Mon Sep 17 00:00:00 2001 From: "Philipp A. Hartmann" Date: Fri, 21 Nov 2014 13:05:54 +0100 Subject: [PATCH 5/6] GenericDocument: explicitly prohibit copying See #201. --- include/rapidjson/document.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/rapidjson/document.h b/include/rapidjson/document.h index bdea8e7..047bc66 100644 --- a/include/rapidjson/document.h +++ b/include/rapidjson/document.h @@ -1862,6 +1862,8 @@ private: } private: + //! Prohibit copying + GenericDocument(const GenericDocument&); //! Prohibit assignment GenericDocument& operator=(const GenericDocument&); From c8bed6b8cc96e95ffde950ecfc080297f1be5c37 Mon Sep 17 00:00:00 2001 From: Milo Yip Date: Sun, 23 Nov 2014 08:38:48 +0800 Subject: [PATCH 6/6] Fix compilation errors in unit tests for VC --- test/unittest/documenttest.cpp | 42 ++++++++++++++++++----------- test/unittest/valuetest.cpp | 48 ++++++++++++++++++++++------------ 2 files changed, 58 insertions(+), 32 deletions(-) diff --git a/test/unittest/documenttest.cpp b/test/unittest/documenttest.cpp index 250d67b..a8467e3 100644 --- a/test/unittest/documenttest.cpp +++ b/test/unittest/documenttest.cpp @@ -232,26 +232,38 @@ TEST(Document, UTF16_Document) { #include TEST(Document, Traits) { - static_assert( std::is_constructible::value, ""); - static_assert( std::is_default_constructible::value, ""); - static_assert(!std::is_copy_constructible::value, ""); - static_assert( std::is_move_constructible::value, ""); + static_assert(std::is_constructible::value, ""); + static_assert(std::is_default_constructible::value, ""); +#ifndef _MSC_VER + static_assert(!std::is_copy_constructible::value, ""); +#endif + static_assert(std::is_move_constructible::value, ""); - static_assert(!std::is_nothrow_constructible::value, ""); - static_assert(!std::is_nothrow_default_constructible::value, ""); - static_assert(!std::is_nothrow_copy_constructible::value, ""); - static_assert( std::is_nothrow_move_constructible::value, ""); + static_assert(!std::is_nothrow_constructible::value, ""); + static_assert(!std::is_nothrow_default_constructible::value, ""); + static_assert(!std::is_nothrow_copy_constructible::value, ""); +#ifndef _MSC_VER + static_assert(std::is_nothrow_move_constructible::value, ""); +#endif - static_assert( std::is_assignable::value, ""); + static_assert(std::is_assignable::value, ""); +#ifndef _MSC_VER static_assert(!std::is_copy_assignable::value, ""); - static_assert( std::is_move_assignable::value, ""); +#endif + static_assert(std::is_move_assignable::value, ""); - static_assert( std::is_nothrow_assignable::value, ""); - static_assert(!std::is_nothrow_copy_assignable::value, ""); - static_assert( std::is_nothrow_move_assignable::value, ""); +#ifndef _MSC_VER + static_assert(std::is_nothrow_assignable::value, ""); +#endif + static_assert(!std::is_nothrow_copy_assignable::value, ""); +#ifndef _MSC_VER + static_assert(std::is_nothrow_move_assignable::value, ""); +#endif - static_assert( std::is_destructible::value, ""); - static_assert( std::is_nothrow_destructible::value, ""); + static_assert( std::is_destructible::value, ""); +#ifndef _MSC_VER + static_assert(std::is_nothrow_destructible::value, ""); +#endif } template diff --git a/test/unittest/valuetest.cpp b/test/unittest/valuetest.cpp index 1f3ffe8..986f23a 100644 --- a/test/unittest/valuetest.cpp +++ b/test/unittest/valuetest.cpp @@ -43,27 +43,41 @@ TEST(Value, DefaultConstructor) { #include TEST(Value, Traits) { - typedef GenericValue, CrtAllocator> Value; - static_assert( std::is_constructible::value, ""); - static_assert( std::is_default_constructible::value, ""); - static_assert(!std::is_copy_constructible::value, ""); - static_assert( std::is_move_constructible::value, ""); + typedef GenericValue, CrtAllocator> Value; + static_assert(std::is_constructible::value, ""); + static_assert(std::is_default_constructible::value, ""); +#ifndef _MSC_VER + static_assert(!std::is_copy_constructible::value, ""); +#endif + static_assert(std::is_move_constructible::value, ""); - static_assert( std::is_nothrow_constructible::value, ""); - static_assert( std::is_nothrow_default_constructible::value, ""); - static_assert(!std::is_nothrow_copy_constructible::value, ""); - static_assert( std::is_nothrow_move_constructible::value, ""); +#ifndef _MSC_VER + static_assert(std::is_nothrow_constructible::value, ""); + static_assert(std::is_nothrow_default_constructible::value, ""); +#endif + static_assert(!std::is_nothrow_copy_constructible::value, ""); +#ifndef _MSC_VER + static_assert(std::is_nothrow_move_constructible::value, ""); +#endif - static_assert( std::is_assignable::value, ""); - static_assert(!std::is_copy_assignable::value, ""); - static_assert( std::is_move_assignable::value, ""); + static_assert(std::is_assignable::value, ""); +#ifndef _MSC_VER + static_assert(!std::is_copy_assignable::value, ""); +#endif + static_assert(std::is_move_assignable::value, ""); - static_assert( std::is_nothrow_assignable::value, ""); - static_assert(!std::is_nothrow_copy_assignable::value, ""); - static_assert( std::is_nothrow_move_assignable::value, ""); +#ifndef _MSC_VER + static_assert(std::is_nothrow_assignable::value, ""); +#endif + static_assert(!std::is_nothrow_copy_assignable::value, ""); +#ifndef _MSC_VER + static_assert(std::is_nothrow_move_assignable::value, ""); +#endif - static_assert( std::is_destructible::value, ""); - static_assert( std::is_nothrow_destructible::value, ""); + static_assert(std::is_destructible::value, ""); +#ifndef _MSC_VER + static_assert(std::is_nothrow_destructible::value, ""); +#endif } TEST(Value, MoveConstructor) {