From 9f3f07eec6686b4f39b9a74c2b036642dc5082b8 Mon Sep 17 00:00:00 2001 From: Milo Yip Date: Sun, 21 Feb 2016 11:42:58 +0800 Subject: [PATCH 1/9] Try adding VS2015 to appveyor --- appveyor.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 7d586e8..90a752e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,3 +1,4 @@ +os: Visual Studio 2015 CTP version: 1.0.2.{build} configuration: @@ -14,6 +15,10 @@ environment: VS_PLATFORM: win32 - VS_VERSION: 12 VS_PLATFORM: x64 + - VS_VERSION: 13 + VS_PLATFORM: win32 + - VS_VERSION: 13 + VS_PLATFORM: x64 before_build: - git submodule update --init --recursive From e1617b4798c0fc9929718b40e24c1bdeeb216dde Mon Sep 17 00:00:00 2001 From: Milo Yip Date: Sun, 21 Feb 2016 12:26:24 +0800 Subject: [PATCH 2/9] Try to fix VS2015 and add 2008, 2010 --- appveyor.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 90a752e..ce1c308 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -7,6 +7,14 @@ configuration: environment: matrix: + - VS_VERSION: 9 + VS_PLATFORM: win32 + - VS_VERSION: 9 + VS_PLATFORM: x64 + - VS_VERSION: 10 + VS_PLATFORM: win32 + - VS_VERSION: 10 + VS_PLATFORM: x64 - VS_VERSION: 11 VS_PLATFORM: win32 - VS_VERSION: 11 @@ -15,9 +23,9 @@ environment: VS_PLATFORM: win32 - VS_VERSION: 12 VS_PLATFORM: x64 - - VS_VERSION: 13 + - VS_VERSION: 14 VS_PLATFORM: win32 - - VS_VERSION: 13 + - VS_VERSION: 14 VS_PLATFORM: x64 before_build: From 4620fa60f590e8a1d5d76632ec1bfdc4d43eedfb Mon Sep 17 00:00:00 2001 From: Milo Yip Date: Sun, 21 Feb 2016 12:52:14 +0800 Subject: [PATCH 3/9] Fix VS2010 compilation errors --- include/rapidjson/document.h | 2 +- include/rapidjson/istreamwrapper.h | 7 ++++++- include/rapidjson/rapidjson.h | 2 +- test/unittest/valuetest.cpp | 4 ++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/include/rapidjson/document.h b/include/rapidjson/document.h index cffc701..423c543 100644 --- a/include/rapidjson/document.h +++ b/include/rapidjson/document.h @@ -2254,7 +2254,7 @@ public: template GenericDocument& Parse(const std::basic_string& str) { - return Parse(str); + return Parse(str.c_str()); } GenericDocument& Parse(const std::basic_string& str) { diff --git a/include/rapidjson/istreamwrapper.h b/include/rapidjson/istreamwrapper.h index 9efeea2..c73586e 100644 --- a/include/rapidjson/istreamwrapper.h +++ b/include/rapidjson/istreamwrapper.h @@ -20,6 +20,11 @@ RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_OFF(padded) #endif +#ifdef _MSC_VER +RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(4351) // new behavior: elements of array 'array' will be default initialized +#endif + RAPIDJSON_NAMESPACE_BEGIN //! Wrapper of \c std::basic_istream into RapidJSON's Stream concept. @@ -98,7 +103,7 @@ private: typedef BasicIStreamWrapper IStreamWrapper; typedef BasicIStreamWrapper WIStreamWrapper; -#ifdef __clang__ +#if defined(__clang__) || defined(_MSC_VER) RAPIDJSON_DIAG_POP #endif diff --git a/include/rapidjson/rapidjson.h b/include/rapidjson/rapidjson.h index 13e2e24..7688c02 100644 --- a/include/rapidjson/rapidjson.h +++ b/include/rapidjson/rapidjson.h @@ -565,7 +565,7 @@ RAPIDJSON_NAMESPACE_END #if defined(__clang__) #define RAPIDJSON_HAS_CXX11_RANGE_FOR __has_feature(cxx_range_for) #elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,3,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \ - (defined(_MSC_VER) && _MSC_VER >= 1600) + (defined(_MSC_VER) && _MSC_VER >= 1700) #define RAPIDJSON_HAS_CXX11_RANGE_FOR 1 #else #define RAPIDJSON_HAS_CXX11_RANGE_FOR 0 diff --git a/test/unittest/valuetest.cpp b/test/unittest/valuetest.cpp index 8a6ac35..bcc2a0a 100644 --- a/test/unittest/valuetest.cpp +++ b/test/unittest/valuetest.cpp @@ -666,10 +666,10 @@ TEST(Value, IsLosslessDouble) { EXPECT_TRUE(Value(12.34).IsLosslessDouble()); EXPECT_TRUE(Value(-123).IsLosslessDouble()); EXPECT_TRUE(Value(2147483648u).IsLosslessDouble()); - EXPECT_TRUE(Value(static_cast(-RAPIDJSON_UINT64_C2(0x40000000, 0x00000000))).IsLosslessDouble()); + EXPECT_TRUE(Value(-static_cast(RAPIDJSON_UINT64_C2(0x40000000, 0x00000000))).IsLosslessDouble()); EXPECT_TRUE(Value(RAPIDJSON_UINT64_C2(0xA0000000, 0x00000000)).IsLosslessDouble()); - EXPECT_FALSE(Value(static_cast(-RAPIDJSON_UINT64_C2(0x7FFFFFFF, 0xFFFFFFFF))).IsLosslessDouble()); + EXPECT_FALSE(Value(-static_cast(RAPIDJSON_UINT64_C2(0x7FFFFFFF, 0xFFFFFFFF))).IsLosslessDouble()); EXPECT_FALSE(Value(RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0xFFFFFFFF)).IsLosslessDouble()); } From 3227aa0533918d5c213c6b4116828780a8b89e79 Mon Sep 17 00:00:00 2001 From: Milo Yip Date: Sun, 21 Feb 2016 12:57:52 +0800 Subject: [PATCH 4/9] Try to change VS generator names --- appveyor.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index ce1c308..5676f12 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -7,25 +7,25 @@ configuration: environment: matrix: - - VS_VERSION: 9 + - VS_VERSION: 9 2008 VS_PLATFORM: win32 - - VS_VERSION: 9 + - VS_VERSION: 9 2008 VS_PLATFORM: x64 - - VS_VERSION: 10 + - VS_VERSION: 10 2010 VS_PLATFORM: win32 - - VS_VERSION: 10 + - VS_VERSION: 10 2010 VS_PLATFORM: x64 - - VS_VERSION: 11 + - VS_VERSION: 11 2012 VS_PLATFORM: win32 - - VS_VERSION: 11 + - VS_VERSION: 11 2012 VS_PLATFORM: x64 - - VS_VERSION: 12 + - VS_VERSION: 12 2013 VS_PLATFORM: win32 - - VS_VERSION: 12 + - VS_VERSION: 12 2013 VS_PLATFORM: x64 - - VS_VERSION: 14 + - VS_VERSION: 14 2015 VS_PLATFORM: win32 - - VS_VERSION: 14 + - VS_VERSION: 14 2015 VS_PLATFORM: x64 before_build: From a907ca490e4de3a1b293234dfd49cbea3906433d Mon Sep 17 00:00:00 2001 From: Milo Yip Date: Sun, 21 Feb 2016 14:14:49 +0800 Subject: [PATCH 5/9] Fix another VC2010 compilation error --- test/unittest/documenttest.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/unittest/documenttest.cpp b/test/unittest/documenttest.cpp index e6e312f..38a0448 100644 --- a/test/unittest/documenttest.cpp +++ b/test/unittest/documenttest.cpp @@ -192,7 +192,12 @@ TEST(Document, Parse_Encoding) { #if RAPIDJSON_HAS_STDSTRING // Parse(std::string) doc.SetNull(); + +#if defined(_MSC_VER) && _MSC_VER < 1800 + doc.Parse >(s2.c_str()); // VS2010 or below cannot handle templated function overloading. Use const char* instead. +#else doc.Parse >(s2); +#endif EXPECT_FALSE(doc.HasParseError()); EXPECT_EQ(0, StrCmp(doc[L"hello"].GetString(), L"world")); #endif From d3129c5d33bd4f33069d0e3112535b7f98ac871e Mon Sep 17 00:00:00 2001 From: Milo Yip Date: Sun, 21 Feb 2016 14:39:03 +0800 Subject: [PATCH 6/9] Try to fix msbuild issue on VC2008 --- appveyor.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 5676f12..68f2609 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -9,8 +9,10 @@ environment: matrix: - VS_VERSION: 9 2008 VS_PLATFORM: win32 + VS_VAR: C:\Program Files\Microsoft Visual Studio 9\VC\Vcvarsall.bat - VS_VERSION: 9 2008 VS_PLATFORM: x64 + VS_VAR: C:\Program Files\Microsoft Visual Studio 9\VC\Vcvarsall.bat - VS_VERSION: 10 2010 VS_PLATFORM: win32 - VS_VERSION: 10 2010 @@ -30,6 +32,7 @@ environment: before_build: - git submodule update --init --recursive +- if defined VS_VAR call "%VS_VAR%" - cmake -H. -BBuild/VS -G "Visual Studio %VS_VERSION%" -DCMAKE_GENERATOR_PLATFORM=%VS_PLATFORM% -DBUILD_SHARED_LIBS=true -Wno-dev build: From a4e13ecce98c64b4e1ce665bd7b0cb013b267d00 Mon Sep 17 00:00:00 2001 From: Milo Yip Date: Sun, 21 Feb 2016 14:41:38 +0800 Subject: [PATCH 7/9] Give up VC2008 on appveyor --- appveyor.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 68f2609..13d8b94 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -7,12 +7,10 @@ configuration: environment: matrix: - - VS_VERSION: 9 2008 - VS_PLATFORM: win32 - VS_VAR: C:\Program Files\Microsoft Visual Studio 9\VC\Vcvarsall.bat - - VS_VERSION: 9 2008 - VS_PLATFORM: x64 - VS_VAR: C:\Program Files\Microsoft Visual Studio 9\VC\Vcvarsall.bat + # - VS_VERSION: 9 2008 + # VS_PLATFORM: win32 + # - VS_VERSION: 9 2008 + # VS_PLATFORM: x64 - VS_VERSION: 10 2010 VS_PLATFORM: win32 - VS_VERSION: 10 2010 @@ -32,7 +30,6 @@ environment: before_build: - git submodule update --init --recursive -- if defined VS_VAR call "%VS_VAR%" - cmake -H. -BBuild/VS -G "Visual Studio %VS_VERSION%" -DCMAKE_GENERATOR_PLATFORM=%VS_PLATFORM% -DBUILD_SHARED_LIBS=true -Wno-dev build: From 770f3a47b1beb29e32018189f1cf90efec434d3c Mon Sep 17 00:00:00 2001 From: Milo Yip Date: Sun, 21 Feb 2016 14:57:08 +0800 Subject: [PATCH 8/9] Bypass a VC2010 problem on IsLosslessDouble() --- test/unittest/valuetest.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/unittest/valuetest.cpp b/test/unittest/valuetest.cpp index bcc2a0a..af20aaf 100644 --- a/test/unittest/valuetest.cpp +++ b/test/unittest/valuetest.cpp @@ -667,7 +667,9 @@ TEST(Value, IsLosslessDouble) { EXPECT_TRUE(Value(-123).IsLosslessDouble()); EXPECT_TRUE(Value(2147483648u).IsLosslessDouble()); EXPECT_TRUE(Value(-static_cast(RAPIDJSON_UINT64_C2(0x40000000, 0x00000000))).IsLosslessDouble()); +#if !(defined(_MSC_VER) && _MSC_VER < 1800) // VC2010 has problem EXPECT_TRUE(Value(RAPIDJSON_UINT64_C2(0xA0000000, 0x00000000)).IsLosslessDouble()); +#endif EXPECT_FALSE(Value(-static_cast(RAPIDJSON_UINT64_C2(0x7FFFFFFF, 0xFFFFFFFF))).IsLosslessDouble()); EXPECT_FALSE(Value(RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0xFFFFFFFF)).IsLosslessDouble()); From 2f1e59324f22ad5257d9e8d53a4613ca19978a39 Mon Sep 17 00:00:00 2001 From: Kevin Atkinson Date: Mon, 22 Feb 2016 00:53:58 -0500 Subject: [PATCH 9/9] Documentation fix. GenericObject is a helper class for accessing Value of _object_ type. --- include/rapidjson/document.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/rapidjson/document.h b/include/rapidjson/document.h index 423c543..be09be4 100644 --- a/include/rapidjson/document.h +++ b/include/rapidjson/document.h @@ -2462,9 +2462,9 @@ private: ValueType& value_; }; -//! Helper class for accessing Value of array type. +//! Helper class for accessing Value of object type. /*! - Instance of this helper class is obtained by \c GenericValue::GetArray(). + Instance of this helper class is obtained by \c GenericValue::GetObject(). In addition to all APIs for array type, it provides range-based for loop if \c RAPIDJSON_HAS_CXX11_RANGE_FOR=1. */ template