mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-25 07:35:38 +00:00
Merge commit '6e7ab511dbbdb6d895447dc119a0503e1f67d74c' as 'external/rapidjson'
This commit is contained in:
commit
4db7d949af
22
external/rapidjson/.gitattributes
vendored
Normal file
22
external/rapidjson/.gitattributes
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
# Set the default behavior, in case people don't have core.autocrlf set.
|
||||
* text=auto
|
||||
|
||||
# Explicitly declare text files you want to always be normalized and converted
|
||||
# to native line endings on checkout.
|
||||
*.cpp text
|
||||
*.h text
|
||||
*.txt text
|
||||
*.md text
|
||||
*.cmake text
|
||||
*.svg text
|
||||
*.dot text
|
||||
*.yml text
|
||||
*.in text
|
||||
*.sh text
|
||||
*.autopkg text
|
||||
Dockerfile text
|
||||
|
||||
# Denote all files that are truly binary and should not be modified.
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
*.json binary
|
29
external/rapidjson/.gitignore
vendored
Normal file
29
external/rapidjson/.gitignore
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
/bin/*
|
||||
!/bin/data
|
||||
!/bin/encodings
|
||||
!/bin/jsonchecker
|
||||
!/bin/types
|
||||
!/bin/unittestschema
|
||||
/build
|
||||
/doc/html
|
||||
/doc/doxygen_*.db
|
||||
*.a
|
||||
|
||||
# Temporary files created during CMake build
|
||||
CMakeCache.txt
|
||||
CMakeFiles
|
||||
cmake_install.cmake
|
||||
CTestTestfile.cmake
|
||||
Makefile
|
||||
RapidJSON*.cmake
|
||||
RapidJSON.pc
|
||||
Testing
|
||||
/googletest
|
||||
install_manifest.txt
|
||||
Doxyfile
|
||||
Doxyfile.zh-cn
|
||||
DartConfiguration.tcl
|
||||
*.nupkg
|
||||
|
||||
# Files created by OS
|
||||
*.DS_Store
|
3
external/rapidjson/.gitmodules
vendored
Normal file
3
external/rapidjson/.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[submodule "thirdparty/gtest"]
|
||||
path = thirdparty/gtest
|
||||
url = https://github.com/google/googletest.git
|
166
external/rapidjson/.travis.yml
vendored
Normal file
166
external/rapidjson/.travis.yml
vendored
Normal file
|
@ -0,0 +1,166 @@
|
|||
sudo: required
|
||||
dist: xenial
|
||||
|
||||
language: cpp
|
||||
cache:
|
||||
- ccache
|
||||
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- cmake
|
||||
- valgrind
|
||||
- clang-8
|
||||
env:
|
||||
global:
|
||||
- USE_CCACHE=1
|
||||
- CCACHE_SLOPPINESS=pch_defines,time_macros
|
||||
- CCACHE_COMPRESS=1
|
||||
- CCACHE_MAXSIZE=100M
|
||||
- ARCH_FLAGS_x86='-m32' # #266: don't use SSE on 32-bit
|
||||
- ARCH_FLAGS_x86_64='-msse4.2' # use SSE4.2 on 64-bit
|
||||
- ARCH_FLAGS_aarch64='-march=armv8-a'
|
||||
- GITHUB_REPO='Tencent/rapidjson'
|
||||
- secure: "HrsaCb+N66EG1HR+LWH1u51SjaJyRwJEDzqJGYMB7LJ/bfqb9mWKF1fLvZGk46W5t7TVaXRDD5KHFx9DPWvKn4gRUVkwTHEy262ah5ORh8M6n/6VVVajeV/AYt2C0sswdkDBDO4Xq+xy5gdw3G8s1A4Inbm73pUh+6vx+7ltBbk="
|
||||
|
||||
matrix:
|
||||
include:
|
||||
# gcc
|
||||
- env: CONF=release ARCH=x86 CXX11=ON CXX17=OFF MEMBERSMAP=OFF
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF MEMBERSMAP=OFF
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF MEMBERSMAP=ON
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=OFF MEMBERSMAP=OFF
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=OFF MEMBERSMAP=OFF
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=ON MEMBERSMAP=ON CXX_FLAGS='-D_GLIBCXX_DEBUG'
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=ON MEMBERSMAP=ON CXX_FLAGS='-D_GLIBCXX_DEBUG'
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
- env: CONF=release ARCH=aarch64 CXX11=ON CXX17=OFF MEMBERSMAP=OFF
|
||||
compiler: gcc
|
||||
arch: arm64
|
||||
- env: CONF=release ARCH=aarch64 CXX11=OFF CXX17=OFF MEMBERSMAP=OFF
|
||||
compiler: gcc
|
||||
arch: arm64
|
||||
- env: CONF=release ARCH=aarch64 CXX11=OFF CXX17=ON MEMBERSMAP=ON
|
||||
compiler: gcc
|
||||
arch: arm64
|
||||
# clang
|
||||
- env: CONF=release ARCH=x86 CXX11=ON CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF MEMBERSMAP=OFF CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=ON MEMBERSMAP=OFF CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=ON MEMBERSMAP=OFF CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
- env: CONF=debug ARCH=aarch64 CXX11=ON CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: arm64
|
||||
- env: CONF=debug ARCH=aarch64 CXX11=OFF CXX17=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: arm64
|
||||
- env: CONF=debug ARCH=aarch64 CXX11=OFF CXX17=ON MEMBERSMAP=OFF CCACHE_CPP2=yes
|
||||
compiler: clang
|
||||
arch: arm64
|
||||
# coverage report
|
||||
- env: CONF=debug ARCH=x86 GCOV_FLAGS='--coverage' CXX_FLAGS='-O0' CXX11=OFF CXX17=OFF
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
cache:
|
||||
- ccache
|
||||
- pip
|
||||
after_success:
|
||||
- pip install --user cpp-coveralls
|
||||
- coveralls -r .. --gcov-options '\-lp' -e thirdparty -e example -e test -e build/CMakeFiles -e include/rapidjson/msinttypes -e include/rapidjson/internal/meta.h -e include/rapidjson/error/en.h
|
||||
- env: CONF=debug ARCH=x86_64 GCOV_FLAGS='--coverage' CXX_FLAGS='-O0' CXX11=ON CXX17=OFF MEMBERSMAP=ON
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
cache:
|
||||
- ccache
|
||||
- pip
|
||||
after_success:
|
||||
- pip install --user cpp-coveralls
|
||||
- coveralls -r .. --gcov-options '\-lp' -e thirdparty -e example -e test -e build/CMakeFiles -e include/rapidjson/msinttypes -e include/rapidjson/internal/meta.h -e include/rapidjson/error/en.h
|
||||
- env: CONF=debug ARCH=aarch64 GCOV_FLAGS='--coverage' CXX_FLAGS='-O0' CXX11=OFF CXX17=ON
|
||||
compiler: gcc
|
||||
arch: arm64
|
||||
cache:
|
||||
- ccache
|
||||
- pip
|
||||
after_success:
|
||||
- pip install --user cpp-coveralls
|
||||
- coveralls -r .. --gcov-options '\-lp' -e thirdparty -e example -e test -e build/CMakeFiles -e include/rapidjson/msinttypes -e include/rapidjson/internal/meta.h -e include/rapidjson/error/en.h
|
||||
- script: # Documentation task
|
||||
- cd build
|
||||
- cmake .. -DRAPIDJSON_HAS_STDSTRING=ON -DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
- make travis_doc
|
||||
cache: false
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- doxygen
|
||||
|
||||
before_install:
|
||||
- if [ "x86_64" = "$(arch)" ]; then sudo apt-get install -y g++-multilib libc6-dbg:i386 --allow-unauthenticated; fi
|
||||
|
||||
before_script:
|
||||
# travis provides clang-7 for amd64 and clang-3.8 for arm64
|
||||
# here use clang-8 to all architectures as clang-7 is not available for arm64
|
||||
- if [ -f /usr/bin/clang++-8 ]; then
|
||||
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-8 1000;
|
||||
sudo update-alternatives --config clang++;
|
||||
export PATH=/usr/bin:$PATH;
|
||||
fi
|
||||
- if [ "$CXX" = "clang++" ]; then export CCACHE_CPP2=yes; fi
|
||||
- ccache -s
|
||||
# hack to avoid Valgrind bug (https://bugs.kde.org/show_bug.cgi?id=326469),
|
||||
# exposed by merging PR#163 (using -march=native)
|
||||
# TODO: Since this bug is already fixed. Remove this when valgrind can be upgraded.
|
||||
- sed -i "s/-march=native//" CMakeLists.txt
|
||||
- mkdir build
|
||||
|
||||
script:
|
||||
- if [ "$CXX" = "clang++" ]; then export CXXFLAGS="-stdlib=libc++ ${CXXFLAGS}"; fi
|
||||
- >
|
||||
eval "ARCH_FLAGS=\${ARCH_FLAGS_${ARCH}}" ;
|
||||
(cd build && cmake
|
||||
-DRAPIDJSON_HAS_STDSTRING=ON
|
||||
-DRAPIDJSON_USE_MEMBERSMAP=$MEMBERSMAP
|
||||
-DRAPIDJSON_BUILD_CXX11=$CXX11
|
||||
-DRAPIDJSON_BUILD_CXX17=$CXX17
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
-DCMAKE_BUILD_TYPE=$CONF
|
||||
-DCMAKE_CXX_FLAGS="$ARCH_FLAGS $GCOV_FLAGS $CXX_FLAGS"
|
||||
-DCMAKE_EXE_LINKER_FLAGS=$GCOV_FLAGS
|
||||
..)
|
||||
- cd build
|
||||
- make tests -j 2
|
||||
- make examples -j 2
|
||||
- ctest -j 2 -V `[ "$CONF" = "release" ] || echo "-E perftest"`
|
158
external/rapidjson/CHANGELOG.md
vendored
Normal file
158
external/rapidjson/CHANGELOG.md
vendored
Normal file
|
@ -0,0 +1,158 @@
|
|||
# Change Log
|
||||
All notable changes to this project will be documented in this file.
|
||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## 1.1.0 - 2016-08-25
|
||||
|
||||
### Added
|
||||
* Add GenericDocument ctor overload to specify JSON type (#369)
|
||||
* Add FAQ (#372, #373, #374, #376)
|
||||
* Add forward declaration header `fwd.h`
|
||||
* Add @PlatformIO Library Registry manifest file (#400)
|
||||
* Implement assignment operator for BigInteger (#404)
|
||||
* Add comments support (#443)
|
||||
* Adding coapp definition (#460)
|
||||
* documenttest.cpp: EXPECT_THROW when checking empty allocator (470)
|
||||
* GenericDocument: add implicit conversion to ParseResult (#480)
|
||||
* Use <wchar.h> with C++ linkage on Windows ARM (#485)
|
||||
* Detect little endian for Microsoft ARM targets
|
||||
* Check Nan/Inf when writing a double (#510)
|
||||
* Add JSON Schema Implementation (#522)
|
||||
* Add iostream wrapper (#530)
|
||||
* Add Jsonx example for converting JSON into JSONx (a XML format) (#531)
|
||||
* Add optional unresolvedTokenIndex parameter to Pointer::Get() (#532)
|
||||
* Add encoding validation option for Writer/PrettyWriter (#534)
|
||||
* Add Writer::SetMaxDecimalPlaces() (#536)
|
||||
* Support {0, } and {0, m} in Regex (#539)
|
||||
* Add Value::Get/SetFloat(), Value::IsLossLessFloat/Double() (#540)
|
||||
* Add stream position check to reader unit tests (#541)
|
||||
* Add Templated accessors and range-based for (#542)
|
||||
* Add (Pretty)Writer::RawValue() (#543)
|
||||
* Add Document::Parse(std::string), Document::Parse(const char*, size_t length) and related APIs. (#553)
|
||||
* Add move constructor for GenericSchemaDocument (#554)
|
||||
* Add VS2010 and VS2015 to AppVeyor CI (#555)
|
||||
* Add parse-by-parts example (#556, #562)
|
||||
* Support parse number as string (#564, #589)
|
||||
* Add kFormatSingleLineArray for PrettyWriter (#577)
|
||||
* Added optional support for trailing commas (#584)
|
||||
* Added filterkey and filterkeydom examples (#615)
|
||||
* Added npm docs (#639)
|
||||
* Allow options for writing and parsing NaN/Infinity (#641)
|
||||
* Add std::string overload to PrettyWriter::Key() when RAPIDJSON_HAS_STDSTRING is defined (#698)
|
||||
|
||||
### Fixed
|
||||
* Fix gcc/clang/vc warnings (#350, #394, #397, #444, #447, #473, #515, #582, #589, #595, #667)
|
||||
* Fix documentation (#482, #511, #550, #557, #614, #635, #660)
|
||||
* Fix emscripten alignment issue (#535)
|
||||
* Fix missing allocator to uses of AddMember in document (#365)
|
||||
* CMake will no longer complain that the minimum CMake version is not specified (#501)
|
||||
* Make it usable with old VC8 (VS2005) (#383)
|
||||
* Prohibit C++11 move from Document to Value (#391)
|
||||
* Try to fix incorrect 64-bit alignment (#419)
|
||||
* Check return of fwrite to avoid warn_unused_result build failures (#421)
|
||||
* Fix UB in GenericDocument::ParseStream (#426)
|
||||
* Keep Document value unchanged on parse error (#439)
|
||||
* Add missing return statement (#450)
|
||||
* Fix Document::Parse(const Ch*) for transcoding (#478)
|
||||
* encodings.h: fix typo in preprocessor condition (#495)
|
||||
* Custom Microsoft headers are necessary only for Visual Studio 2012 and lower (#559)
|
||||
* Fix memory leak for invalid regex (26e69ffde95ba4773ab06db6457b78f308716f4b)
|
||||
* Fix a bug in schema minimum/maximum keywords for 64-bit integer (e7149d665941068ccf8c565e77495521331cf390)
|
||||
* Fix a crash bug in regex (#605)
|
||||
* Fix schema "required" keyword cannot handle duplicated keys (#609)
|
||||
* Fix cmake CMP0054 warning (#612)
|
||||
* Added missing include guards in istreamwrapper.h and ostreamwrapper.h (#634)
|
||||
* Fix undefined behaviour (#646)
|
||||
* Fix buffer overrun using PutN (#673)
|
||||
* Fix rapidjson::value::Get<std::string>() may returns wrong data (#681)
|
||||
* Add Flush() for all value types (#689)
|
||||
* Handle malloc() fail in PoolAllocator (#691)
|
||||
* Fix builds on x32 platform. #703
|
||||
|
||||
### Changed
|
||||
* Clarify problematic JSON license (#392)
|
||||
* Move Travis to container based infrastructure (#504, #558)
|
||||
* Make whitespace array more compact (#513)
|
||||
* Optimize Writer::WriteString() with SIMD (#544)
|
||||
* x86-64 48-bit pointer optimization for GenericValue (#546)
|
||||
* Define RAPIDJSON_HAS_CXX11_RVALUE_REFS directly in clang (#617)
|
||||
* Make GenericSchemaDocument constructor explicit (#674)
|
||||
* Optimize FindMember when use std::string (#690)
|
||||
|
||||
## [1.0.2] - 2015-05-14
|
||||
|
||||
### Added
|
||||
* Add Value::XXXMember(...) overloads for std::string (#335)
|
||||
|
||||
### Fixed
|
||||
* Include rapidjson.h for all internal/error headers.
|
||||
* Parsing some numbers incorrectly in full-precision mode (`kFullPrecisionParseFlag`) (#342)
|
||||
* Fix some numbers parsed incorrectly (#336)
|
||||
* Fix alignment of 64bit platforms (#328)
|
||||
* Fix MemoryPoolAllocator::Clear() to clear user-buffer (0691502573f1afd3341073dd24b12c3db20fbde4)
|
||||
|
||||
### Changed
|
||||
* CMakeLists for include as a thirdparty in projects (#334, #337)
|
||||
* Change Document::ParseStream() to use stack allocator for Reader (ffbe38614732af8e0b3abdc8b50071f386a4a685)
|
||||
|
||||
## [1.0.1] - 2015-04-25
|
||||
|
||||
### Added
|
||||
* Changelog following [Keep a CHANGELOG](https://github.com/olivierlacan/keep-a-changelog) suggestions.
|
||||
|
||||
### Fixed
|
||||
* Parsing of some numbers (e.g. "1e-00011111111111") causing assertion (#314).
|
||||
* Visual C++ 32-bit compilation error in `diyfp.h` (#317).
|
||||
|
||||
## [1.0.0] - 2015-04-22
|
||||
|
||||
### Added
|
||||
* 100% [Coverall](https://coveralls.io/r/Tencent/rapidjson?branch=master) coverage.
|
||||
* Version macros (#311)
|
||||
|
||||
### Fixed
|
||||
* A bug in trimming long number sequence (4824f12efbf01af72b8cb6fc96fae7b097b73015).
|
||||
* Double quote in unicode escape (#288).
|
||||
* Negative zero roundtrip (double only) (#289).
|
||||
* Standardize behavior of `memcpy()` and `malloc()` (0c5c1538dcfc7f160e5a4aa208ddf092c787be5a, #305, 0e8bbe5e3ef375e7f052f556878be0bd79e9062d).
|
||||
|
||||
### Removed
|
||||
* Remove an invalid `Document::ParseInsitu()` API (e7f1c6dd08b522cfcf9aed58a333bd9a0c0ccbeb).
|
||||
|
||||
## 1.0-beta - 2015-04-8
|
||||
|
||||
### Added
|
||||
* RFC 7159 (#101)
|
||||
* Optional Iterative Parser (#76)
|
||||
* Deep-copy values (#20)
|
||||
* Error code and message (#27)
|
||||
* ASCII Encoding (#70)
|
||||
* `kParseStopWhenDoneFlag` (#83)
|
||||
* `kParseFullPrecisionFlag` (881c91d696f06b7f302af6d04ec14dd08db66ceb)
|
||||
* Add `Key()` to handler concept (#134)
|
||||
* C++11 compatibility and support (#128)
|
||||
* Optimized number-to-string and vice versa conversions (#137, #80)
|
||||
* Short-String Optimization (#131)
|
||||
* Local stream optimization by traits (#32)
|
||||
* Travis & Appveyor Continuous Integration, with Valgrind verification (#24, #242)
|
||||
* Redo all documentation (English, Simplified Chinese)
|
||||
|
||||
### Changed
|
||||
* Copyright ownership transferred to THL A29 Limited (a Tencent company).
|
||||
* Migrating from Premake to CMAKE (#192)
|
||||
* Resolve all warning reports
|
||||
|
||||
### Removed
|
||||
* Remove other JSON libraries for performance comparison (#180)
|
||||
|
||||
## 0.11 - 2012-11-16
|
||||
|
||||
## 0.1 - 2011-11-18
|
||||
|
||||
[Unreleased]: https://github.com/Tencent/rapidjson/compare/v1.1.0...HEAD
|
||||
[1.1.0]: https://github.com/Tencent/rapidjson/compare/v1.0.2...v1.1.0
|
||||
[1.0.2]: https://github.com/Tencent/rapidjson/compare/v1.0.1...v1.0.2
|
||||
[1.0.1]: https://github.com/Tencent/rapidjson/compare/v1.0.0...v1.0.1
|
||||
[1.0.0]: https://github.com/Tencent/rapidjson/compare/v1.0-beta...v1.0.0
|
248
external/rapidjson/CMakeLists.txt
vendored
Normal file
248
external/rapidjson/CMakeLists.txt
vendored
Normal file
|
@ -0,0 +1,248 @@
|
|||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
|
||||
if(POLICY CMP0025)
|
||||
# detect Apple's Clang
|
||||
cmake_policy(SET CMP0025 NEW)
|
||||
endif()
|
||||
if(POLICY CMP0054)
|
||||
cmake_policy(SET CMP0054 NEW)
|
||||
endif()
|
||||
|
||||
SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules)
|
||||
|
||||
set(LIB_MAJOR_VERSION "1")
|
||||
set(LIB_MINOR_VERSION "1")
|
||||
set(LIB_PATCH_VERSION "0")
|
||||
set(LIB_VERSION_STRING "${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}.${LIB_PATCH_VERSION}")
|
||||
|
||||
if (CMAKE_VERSION VERSION_LESS 3.0)
|
||||
PROJECT(RapidJSON CXX)
|
||||
else()
|
||||
cmake_policy(SET CMP0048 NEW)
|
||||
PROJECT(RapidJSON VERSION "${LIB_VERSION_STRING}" LANGUAGES CXX)
|
||||
endif()
|
||||
|
||||
# compile in release with debug info mode by default
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
|
||||
endif()
|
||||
|
||||
# Build all binaries in a separate directory
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||
|
||||
option(RAPIDJSON_BUILD_DOC "Build rapidjson documentation." ON)
|
||||
option(RAPIDJSON_BUILD_EXAMPLES "Build rapidjson examples." ON)
|
||||
option(RAPIDJSON_BUILD_TESTS "Build rapidjson perftests and unittests." ON)
|
||||
option(RAPIDJSON_BUILD_THIRDPARTY_GTEST
|
||||
"Use gtest installation in `thirdparty/gtest` by default if available" OFF)
|
||||
|
||||
option(RAPIDJSON_BUILD_CXX11 "Build rapidjson with C++11" ON)
|
||||
option(RAPIDJSON_BUILD_CXX17 "Build rapidjson with C++17" OFF)
|
||||
if(RAPIDJSON_BUILD_CXX11)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
|
||||
endif()
|
||||
|
||||
option(RAPIDJSON_BUILD_ASAN "Build rapidjson with address sanitizer (gcc/clang)" OFF)
|
||||
option(RAPIDJSON_BUILD_UBSAN "Build rapidjson with undefined behavior sanitizer (gcc/clang)" OFF)
|
||||
|
||||
option(RAPIDJSON_ENABLE_INSTRUMENTATION_OPT "Build rapidjson with -march or -mcpu options" ON)
|
||||
|
||||
option(RAPIDJSON_HAS_STDSTRING "" OFF)
|
||||
if(RAPIDJSON_HAS_STDSTRING)
|
||||
add_definitions(-DRAPIDJSON_HAS_STDSTRING)
|
||||
endif()
|
||||
|
||||
option(RAPIDJSON_USE_MEMBERSMAP "" OFF)
|
||||
if(RAPIDJSON_USE_MEMBERSMAP)
|
||||
add_definitions(-DRAPIDJSON_USE_MEMBERSMAP=1)
|
||||
endif()
|
||||
|
||||
find_program(CCACHE_FOUND ccache)
|
||||
if(CCACHE_FOUND)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -fcolor-diagnostics")
|
||||
endif()
|
||||
endif(CCACHE_FOUND)
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
if(RAPIDJSON_ENABLE_INSTRUMENTATION_OPT AND NOT CMAKE_CROSSCOMPILING)
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "powerpc" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=native")
|
||||
else()
|
||||
#FIXME: x86 is -march=native, but doesn't mean every arch is this option. To keep original project's compatibility, I leave this except POWER.
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
|
||||
endif()
|
||||
endif()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror")
|
||||
set(EXTRA_CXX_FLAGS -Weffc++ -Wswitch-default -Wfloat-equal -Wconversion -Wsign-conversion)
|
||||
if (RAPIDJSON_BUILD_CXX11 AND CMAKE_VERSION VERSION_LESS 3.1)
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7.0")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
endif()
|
||||
elseif (RAPIDJSON_BUILD_CXX17 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.0")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
|
||||
endif()
|
||||
if (RAPIDJSON_BUILD_ASAN)
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.8.0")
|
||||
message(FATAL_ERROR "GCC < 4.8 doesn't support the address sanitizer")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
|
||||
endif()
|
||||
endif()
|
||||
if (RAPIDJSON_BUILD_UBSAN)
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.9.0")
|
||||
message(FATAL_ERROR "GCC < 4.9 doesn't support the undefined behavior sanitizer")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined")
|
||||
endif()
|
||||
endif()
|
||||
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
if(NOT CMAKE_CROSSCOMPILING)
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "powerpc" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=native")
|
||||
else()
|
||||
#FIXME: x86 is -march=native, but doesn't mean every arch is this option. To keep original project's compatibility, I leave this except POWER.
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
|
||||
endif()
|
||||
endif()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror -Wno-missing-field-initializers")
|
||||
set(EXTRA_CXX_FLAGS -Weffc++ -Wswitch-default -Wfloat-equal -Wconversion -Wimplicit-fallthrough)
|
||||
if (RAPIDJSON_BUILD_CXX11 AND CMAKE_VERSION VERSION_LESS 3.1)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
elseif (RAPIDJSON_BUILD_CXX17 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.0")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
|
||||
endif()
|
||||
if (RAPIDJSON_BUILD_ASAN)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
|
||||
endif()
|
||||
if (RAPIDJSON_BUILD_UBSAN)
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined-trap -fsanitize-undefined-trap-on-error")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined")
|
||||
endif()
|
||||
endif()
|
||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS=1)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
|
||||
# CMake >= 3.10 should handle the above CMAKE_CXX_STANDARD fine, otherwise use /std:c++XX with MSVC >= 19.10
|
||||
if (RAPIDJSON_BUILD_CXX11 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.10")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++11")
|
||||
elseif (RAPIDJSON_BUILD_CXX17 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.14")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")
|
||||
endif()
|
||||
# Always compile with /WX
|
||||
if(CMAKE_CXX_FLAGS MATCHES "/WX-")
|
||||
string(REGEX REPLACE "/WX-" "/WX" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
|
||||
endif()
|
||||
elseif (CMAKE_CXX_COMPILER_ID MATCHES "XL")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -qarch=auto")
|
||||
endif()
|
||||
|
||||
#add extra search paths for libraries and includes
|
||||
SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The directory the headers are installed in")
|
||||
SET(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE STRING "Directory where lib will install")
|
||||
SET(DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}" CACHE PATH "Path to the documentation")
|
||||
|
||||
IF(UNIX OR CYGWIN)
|
||||
SET(_CMAKE_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/${PROJECT_NAME}")
|
||||
ELSEIF(WIN32)
|
||||
SET(_CMAKE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/cmake")
|
||||
ENDIF()
|
||||
SET(CMAKE_INSTALL_DIR "${_CMAKE_INSTALL_DIR}" CACHE PATH "The directory cmake files are installed in")
|
||||
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||
|
||||
if(RAPIDJSON_BUILD_DOC)
|
||||
add_subdirectory(doc)
|
||||
endif()
|
||||
|
||||
add_custom_target(travis_doc)
|
||||
add_custom_command(TARGET travis_doc
|
||||
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/travis-doxygen.sh)
|
||||
|
||||
if(RAPIDJSON_BUILD_EXAMPLES)
|
||||
add_subdirectory(example)
|
||||
endif()
|
||||
|
||||
if(RAPIDJSON_BUILD_TESTS)
|
||||
if(MSVC11)
|
||||
# required for VS2012 due to missing support for variadic templates
|
||||
add_definitions(-D_VARIADIC_MAX=10)
|
||||
endif(MSVC11)
|
||||
add_subdirectory(test)
|
||||
include(CTest)
|
||||
endif()
|
||||
|
||||
# pkg-config
|
||||
IF (UNIX OR CYGWIN)
|
||||
CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc
|
||||
@ONLY)
|
||||
INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc
|
||||
DESTINATION "${LIB_INSTALL_DIR}/pkgconfig"
|
||||
COMPONENT pkgconfig)
|
||||
ENDIF()
|
||||
|
||||
install(FILES readme.md
|
||||
DESTINATION "${DOC_INSTALL_DIR}"
|
||||
COMPONENT doc)
|
||||
|
||||
install(DIRECTORY include/rapidjson
|
||||
DESTINATION "${INCLUDE_INSTALL_DIR}"
|
||||
COMPONENT dev)
|
||||
|
||||
install(DIRECTORY example/
|
||||
DESTINATION "${DOC_INSTALL_DIR}/examples"
|
||||
COMPONENT examples
|
||||
# Following patterns are for excluding the intermediate/object files
|
||||
# from an install of in-source CMake build.
|
||||
PATTERN "CMakeFiles" EXCLUDE
|
||||
PATTERN "Makefile" EXCLUDE
|
||||
PATTERN "cmake_install.cmake" EXCLUDE)
|
||||
|
||||
# Provide config and version files to be used by other applications
|
||||
# ===============================
|
||||
|
||||
################################################################################
|
||||
# Export package for use from the build tree
|
||||
EXPORT( PACKAGE ${PROJECT_NAME} )
|
||||
|
||||
# Create the RapidJSONConfig.cmake file for other cmake projects.
|
||||
# ... for the build tree
|
||||
SET( CONFIG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
SET( CONFIG_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||
SET( ${PROJECT_NAME}_INCLUDE_DIR "\${${PROJECT_NAME}_SOURCE_DIR}/include" )
|
||||
|
||||
CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY )
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}ConfigVersion.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake @ONLY)
|
||||
|
||||
# ... for the install tree
|
||||
SET( CMAKECONFIG_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/${PROJECT_NAME} )
|
||||
FILE( RELATIVE_PATH REL_INCLUDE_DIR
|
||||
"${CMAKECONFIG_INSTALL_DIR}"
|
||||
"${CMAKE_INSTALL_PREFIX}/include" )
|
||||
|
||||
SET( ${PROJECT_NAME}_INCLUDE_DIR "\${${PROJECT_NAME}_CMAKE_DIR}/${REL_INCLUDE_DIR}" )
|
||||
SET( CONFIG_SOURCE_DIR )
|
||||
SET( CONFIG_DIR )
|
||||
CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}Config.cmake @ONLY )
|
||||
|
||||
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}Config.cmake"
|
||||
DESTINATION ${CMAKECONFIG_INSTALL_DIR} )
|
||||
|
||||
# Install files
|
||||
INSTALL(FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
|
||||
DESTINATION "${CMAKE_INSTALL_DIR}"
|
||||
COMPONENT dev)
|
30
external/rapidjson/CMakeModules/FindGTestSrc.cmake
vendored
Normal file
30
external/rapidjson/CMakeModules/FindGTestSrc.cmake
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
|
||||
SET(GTEST_SEARCH_PATH
|
||||
"${GTEST_SOURCE_DIR}"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../thirdparty/gtest/googletest")
|
||||
|
||||
IF(UNIX)
|
||||
IF(RAPIDJSON_BUILD_THIRDPARTY_GTEST)
|
||||
LIST(APPEND GTEST_SEARCH_PATH "/usr/src/gtest")
|
||||
ELSE()
|
||||
LIST(INSERT GTEST_SEARCH_PATH 1 "/usr/src/gtest")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
FIND_PATH(GTEST_SOURCE_DIR
|
||||
NAMES CMakeLists.txt src/gtest_main.cc
|
||||
PATHS ${GTEST_SEARCH_PATH})
|
||||
|
||||
|
||||
# Debian installs gtest include directory in /usr/include, thus need to look
|
||||
# for include directory separately from source directory.
|
||||
FIND_PATH(GTEST_INCLUDE_DIR
|
||||
NAMES gtest/gtest.h
|
||||
PATH_SUFFIXES include
|
||||
HINTS ${GTEST_SOURCE_DIR}
|
||||
PATHS ${GTEST_SEARCH_PATH})
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(GTestSrc DEFAULT_MSG
|
||||
GTEST_SOURCE_DIR
|
||||
GTEST_INCLUDE_DIR)
|
7
external/rapidjson/RapidJSON.pc.in
vendored
Normal file
7
external/rapidjson/RapidJSON.pc.in
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
includedir=@INCLUDE_INSTALL_DIR@
|
||||
|
||||
Name: @PROJECT_NAME@
|
||||
Description: A fast JSON parser/generator for C++ with both SAX/DOM style API
|
||||
Version: @LIB_VERSION_STRING@
|
||||
URL: https://github.com/Tencent/rapidjson
|
||||
Cflags: -I${includedir}
|
25
external/rapidjson/RapidJSONConfig.cmake.in
vendored
Normal file
25
external/rapidjson/RapidJSONConfig.cmake.in
vendored
Normal file
|
@ -0,0 +1,25 @@
|
|||
################################################################################
|
||||
# CMake minimum version required
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
|
||||
################################################################################
|
||||
# RapidJSON source dir
|
||||
set( RapidJSON_SOURCE_DIR "@CONFIG_SOURCE_DIR@")
|
||||
|
||||
################################################################################
|
||||
# RapidJSON build dir
|
||||
set( RapidJSON_DIR "@CONFIG_DIR@")
|
||||
|
||||
################################################################################
|
||||
# Compute paths
|
||||
get_filename_component(RapidJSON_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
|
||||
set( RapidJSON_INCLUDE_DIR "@RapidJSON_INCLUDE_DIR@" )
|
||||
set( RapidJSON_INCLUDE_DIRS "@RapidJSON_INCLUDE_DIR@" )
|
||||
message(STATUS "RapidJSON found. Headers: ${RapidJSON_INCLUDE_DIRS}")
|
||||
|
||||
if(NOT TARGET rapidjson)
|
||||
add_library(rapidjson INTERFACE IMPORTED)
|
||||
set_property(TARGET rapidjson PROPERTY
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${RapidJSON_INCLUDE_DIRS})
|
||||
endif()
|
10
external/rapidjson/RapidJSONConfigVersion.cmake.in
vendored
Normal file
10
external/rapidjson/RapidJSONConfigVersion.cmake.in
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
SET(PACKAGE_VERSION "@LIB_VERSION_STRING@")
|
||||
|
||||
IF (PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION)
|
||||
SET(PACKAGE_VERSION_EXACT "true")
|
||||
ENDIF (PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION)
|
||||
IF (NOT PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION)
|
||||
SET(PACKAGE_VERSION_COMPATIBLE "true")
|
||||
ELSE (NOT PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION)
|
||||
SET(PACKAGE_VERSION_UNSUITABLE "true")
|
||||
ENDIF (NOT PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION)
|
102
external/rapidjson/appveyor.yml
vendored
Normal file
102
external/rapidjson/appveyor.yml
vendored
Normal file
|
@ -0,0 +1,102 @@
|
|||
version: 1.1.0.{build}
|
||||
|
||||
configuration:
|
||||
- Debug
|
||||
- Release
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
# - VS_VERSION: 9 2008
|
||||
# VS_PLATFORM: win32
|
||||
# - VS_VERSION: 9 2008
|
||||
# VS_PLATFORM: x64
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
VS_VERSION: 10 2010
|
||||
VS_PLATFORM: win32
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
MEMBERSMAP: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
VS_VERSION: 10 2010
|
||||
VS_PLATFORM: x64
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
MEMBERSMAP: ON
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
VS_VERSION: 11 2012
|
||||
VS_PLATFORM: win32
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
MEMBERSMAP: ON
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
VS_VERSION: 11 2012
|
||||
VS_PLATFORM: x64
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
MEMBERSMAP: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
VS_VERSION: 12 2013
|
||||
VS_PLATFORM: win32
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
MEMBERSMAP: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||
VS_VERSION: 12 2013
|
||||
VS_PLATFORM: x64
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
MEMBERSMAP: ON
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||
VS_VERSION: 14 2015
|
||||
VS_PLATFORM: win32
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
MEMBERSMAP: ON
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||
VS_VERSION: 14 2015
|
||||
VS_PLATFORM: x64
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
MEMBERSMAP: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
VS_VERSION: 15 2017
|
||||
VS_PLATFORM: win32
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
MEMBERSMAP: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
VS_VERSION: 15 2017
|
||||
VS_PLATFORM: x64
|
||||
CXX11: OFF
|
||||
CXX17: OFF
|
||||
MEMBERSMAP: ON
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
VS_VERSION: 15 2017
|
||||
VS_PLATFORM: x64
|
||||
CXX11: ON
|
||||
CXX17: OFF
|
||||
MEMBERSMAP: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
VS_VERSION: 15 2017
|
||||
VS_PLATFORM: x64
|
||||
CXX11: OFF
|
||||
CXX17: ON
|
||||
MEMBERSMAP: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
VS_VERSION: 16 2019
|
||||
VS_PLATFORM: x64
|
||||
CXX11: OFF
|
||||
CXX17: ON
|
||||
MEMBERSMAP: ON
|
||||
|
||||
before_build:
|
||||
- git submodule update --init --recursive
|
||||
- cmake -H. -BBuild/VS -G "Visual Studio %VS_VERSION%" -DCMAKE_GENERATOR_PLATFORM=%VS_PLATFORM% -DCMAKE_VERBOSE_MAKEFILE=ON -DBUILD_SHARED_LIBS=true -DRAPIDJSON_BUILD_CXX11=%CXX11% -DRAPIDJSON_BUILD_CXX17=%CXX17% -DRAPIDJSON_USE_MEMBERSMAP=%MEMBERSMAP% -Wno-dev
|
||||
|
||||
build:
|
||||
project: Build\VS\RapidJSON.sln
|
||||
parallel: true
|
||||
verbosity: minimal
|
||||
|
||||
test_script:
|
||||
- cd Build\VS && if %CONFIGURATION%==Debug (ctest --verbose -E perftest --build-config %CONFIGURATION%) else (ctest --verbose --build-config %CONFIGURATION%)
|
1
external/rapidjson/bin/data/abcde.txt
vendored
Normal file
1
external/rapidjson/bin/data/abcde.txt
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
abcde
|
BIN
external/rapidjson/bin/data/glossary.json
vendored
Normal file
BIN
external/rapidjson/bin/data/glossary.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/data/menu.json
vendored
Normal file
BIN
external/rapidjson/bin/data/menu.json
vendored
Normal file
Binary file not shown.
1
external/rapidjson/bin/data/readme.txt
vendored
Normal file
1
external/rapidjson/bin/data/readme.txt
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
sample.json is obtained from http://code.google.com/p/json-test-suite/downloads/detail?name=sample.zip
|
BIN
external/rapidjson/bin/data/sample.json
vendored
Normal file
BIN
external/rapidjson/bin/data/sample.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/data/webapp.json
vendored
Normal file
BIN
external/rapidjson/bin/data/webapp.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/data/widget.json
vendored
Normal file
BIN
external/rapidjson/bin/data/widget.json
vendored
Normal file
Binary file not shown.
150
external/rapidjson/bin/draft-04/schema
vendored
Normal file
150
external/rapidjson/bin/draft-04/schema
vendored
Normal file
|
@ -0,0 +1,150 @@
|
|||
{
|
||||
"id": "http://json-schema.org/draft-04/schema#",
|
||||
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||
"description": "Core schema meta-schema",
|
||||
"definitions": {
|
||||
"schemaArray": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": { "$ref": "#" }
|
||||
},
|
||||
"positiveInteger": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"positiveIntegerDefault0": {
|
||||
"allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ]
|
||||
},
|
||||
"simpleTypes": {
|
||||
"enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ]
|
||||
},
|
||||
"stringArray": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"minItems": 1,
|
||||
"uniqueItems": true
|
||||
}
|
||||
},
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"$schema": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"default": {},
|
||||
"multipleOf": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"exclusiveMinimum": true
|
||||
},
|
||||
"maximum": {
|
||||
"type": "number"
|
||||
},
|
||||
"exclusiveMaximum": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"minimum": {
|
||||
"type": "number"
|
||||
},
|
||||
"exclusiveMinimum": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"maxLength": { "$ref": "#/definitions/positiveInteger" },
|
||||
"minLength": { "$ref": "#/definitions/positiveIntegerDefault0" },
|
||||
"pattern": {
|
||||
"type": "string",
|
||||
"format": "regex"
|
||||
},
|
||||
"additionalItems": {
|
||||
"anyOf": [
|
||||
{ "type": "boolean" },
|
||||
{ "$ref": "#" }
|
||||
],
|
||||
"default": {}
|
||||
},
|
||||
"items": {
|
||||
"anyOf": [
|
||||
{ "$ref": "#" },
|
||||
{ "$ref": "#/definitions/schemaArray" }
|
||||
],
|
||||
"default": {}
|
||||
},
|
||||
"maxItems": { "$ref": "#/definitions/positiveInteger" },
|
||||
"minItems": { "$ref": "#/definitions/positiveIntegerDefault0" },
|
||||
"uniqueItems": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"maxProperties": { "$ref": "#/definitions/positiveInteger" },
|
||||
"minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" },
|
||||
"required": { "$ref": "#/definitions/stringArray" },
|
||||
"additionalProperties": {
|
||||
"anyOf": [
|
||||
{ "type": "boolean" },
|
||||
{ "$ref": "#" }
|
||||
],
|
||||
"default": {}
|
||||
},
|
||||
"definitions": {
|
||||
"type": "object",
|
||||
"additionalProperties": { "$ref": "#" },
|
||||
"default": {}
|
||||
},
|
||||
"properties": {
|
||||
"type": "object",
|
||||
"additionalProperties": { "$ref": "#" },
|
||||
"default": {}
|
||||
},
|
||||
"patternProperties": {
|
||||
"type": "object",
|
||||
"additionalProperties": { "$ref": "#" },
|
||||
"default": {}
|
||||
},
|
||||
"dependencies": {
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"anyOf": [
|
||||
{ "$ref": "#" },
|
||||
{ "$ref": "#/definitions/stringArray" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"enum": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"uniqueItems": true
|
||||
},
|
||||
"type": {
|
||||
"anyOf": [
|
||||
{ "$ref": "#/definitions/simpleTypes" },
|
||||
{
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/definitions/simpleTypes" },
|
||||
"minItems": 1,
|
||||
"uniqueItems": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"allOf": { "$ref": "#/definitions/schemaArray" },
|
||||
"anyOf": { "$ref": "#/definitions/schemaArray" },
|
||||
"oneOf": { "$ref": "#/definitions/schemaArray" },
|
||||
"not": { "$ref": "#" }
|
||||
},
|
||||
"dependencies": {
|
||||
"exclusiveMaximum": [ "maximum" ],
|
||||
"exclusiveMinimum": [ "minimum" ]
|
||||
},
|
||||
"default": {}
|
||||
}
|
BIN
external/rapidjson/bin/encodings/utf16be.json
vendored
Normal file
BIN
external/rapidjson/bin/encodings/utf16be.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/encodings/utf16bebom.json
vendored
Normal file
BIN
external/rapidjson/bin/encodings/utf16bebom.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/encodings/utf16le.json
vendored
Normal file
BIN
external/rapidjson/bin/encodings/utf16le.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/encodings/utf16lebom.json
vendored
Normal file
BIN
external/rapidjson/bin/encodings/utf16lebom.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/encodings/utf32be.json
vendored
Normal file
BIN
external/rapidjson/bin/encodings/utf32be.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/encodings/utf32bebom.json
vendored
Normal file
BIN
external/rapidjson/bin/encodings/utf32bebom.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/encodings/utf32le.json
vendored
Normal file
BIN
external/rapidjson/bin/encodings/utf32le.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/encodings/utf32lebom.json
vendored
Normal file
BIN
external/rapidjson/bin/encodings/utf32lebom.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/encodings/utf8.json
vendored
Normal file
BIN
external/rapidjson/bin/encodings/utf8.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/encodings/utf8bom.json
vendored
Normal file
BIN
external/rapidjson/bin/encodings/utf8bom.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail1.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail1.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail10.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail10.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail11.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail11.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail12.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail12.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail13.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail13.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail14.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail14.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail15.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail15.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail16.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail16.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail17.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail17.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail18.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail18.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail19.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail19.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail2.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail2.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail20.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail20.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail21.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail21.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail22.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail22.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail23.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail23.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail24.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail24.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail25.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail25.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail26.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail26.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail27.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail27.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail28.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail28.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail29.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail29.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail3.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail3.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail30.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail30.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail31.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail31.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail32.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail32.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail33.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail33.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail4.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail4.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail5.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail5.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail6.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail6.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail7.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail7.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail8.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail8.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/fail9.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/fail9.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/pass1.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/pass1.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/pass2.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/pass2.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonchecker/pass3.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonchecker/pass3.json
vendored
Normal file
Binary file not shown.
3
external/rapidjson/bin/jsonchecker/readme.txt
vendored
Normal file
3
external/rapidjson/bin/jsonchecker/readme.txt
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
Test suite from http://json.org/JSON_checker/.
|
||||
|
||||
If the JSON_checker is working correctly, it must accept all of the pass*.json files and reject all of the fail*.json files.
|
1
external/rapidjson/bin/jsonschema/.gitignore
vendored
Normal file
1
external/rapidjson/bin/jsonschema/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
TODO
|
4
external/rapidjson/bin/jsonschema/.travis.yml
vendored
Normal file
4
external/rapidjson/bin/jsonschema/.travis.yml
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
language: python
|
||||
python: "2.7"
|
||||
install: pip install jsonschema
|
||||
script: bin/jsonschema_suite check
|
19
external/rapidjson/bin/jsonschema/LICENSE
vendored
Normal file
19
external/rapidjson/bin/jsonschema/LICENSE
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
Copyright (c) 2012 Julian Berman
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
148
external/rapidjson/bin/jsonschema/README.md
vendored
Normal file
148
external/rapidjson/bin/jsonschema/README.md
vendored
Normal file
|
@ -0,0 +1,148 @@
|
|||
JSON Schema Test Suite [![Build Status](https://travis-ci.org/json-schema/JSON-Schema-Test-Suite.png?branch=develop)](https://travis-ci.org/json-schema/JSON-Schema-Test-Suite)
|
||||
======================
|
||||
|
||||
This repository contains a set of JSON objects that implementors of JSON Schema
|
||||
validation libraries can use to test their validators.
|
||||
|
||||
It is meant to be language agnostic and should require only a JSON parser.
|
||||
|
||||
The conversion of the JSON objects into tests within your test framework of
|
||||
choice is still the job of the validator implementor.
|
||||
|
||||
Structure of a Test
|
||||
-------------------
|
||||
|
||||
If you're going to use this suite, you need to know how tests are laid out. The
|
||||
tests are contained in the `tests` directory at the root of this repository.
|
||||
|
||||
Inside that directory is a subdirectory for each draft or version of the
|
||||
schema. We'll use `draft3` as an example.
|
||||
|
||||
If you look inside the draft directory, there are a number of `.json` files,
|
||||
which logically group a set of test cases together. Often the grouping is by
|
||||
property under test, but not always, especially within optional test files
|
||||
(discussed below).
|
||||
|
||||
Inside each `.json` file is a single array containing objects. It's easiest to
|
||||
illustrate the structure of these with an example:
|
||||
|
||||
```json
|
||||
{
|
||||
"description": "the description of the test case",
|
||||
"schema": {"the schema that should" : "be validated against"},
|
||||
"tests": [
|
||||
{
|
||||
"description": "a specific test of a valid instance",
|
||||
"data": "the instance",
|
||||
"valid": true
|
||||
},
|
||||
{
|
||||
"description": "another specific test this time, invalid",
|
||||
"data": 15,
|
||||
"valid": false
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
So a description, a schema, and some tests, where tests is an array containing
|
||||
one or more objects with descriptions, data, and a boolean indicating whether
|
||||
they should be valid or invalid.
|
||||
|
||||
Coverage
|
||||
--------
|
||||
|
||||
Draft 3 and 4 should have full coverage. If you see anything missing or think
|
||||
there is a useful test missing, please send a pull request or open an issue.
|
||||
|
||||
Who Uses the Test Suite
|
||||
-----------------------
|
||||
|
||||
This suite is being used by:
|
||||
|
||||
### Coffeescript ###
|
||||
|
||||
* [jsck](https://github.com/pandastrike/jsck)
|
||||
|
||||
### Dart ###
|
||||
|
||||
* [json_schema](https://github.com/patefacio/json_schema)
|
||||
|
||||
### Erlang ###
|
||||
|
||||
* [jesse](https://github.com/klarna/jesse)
|
||||
|
||||
### Go ###
|
||||
|
||||
* [gojsonschema](https://github.com/sigu-399/gojsonschema)
|
||||
* [validate-json](https://github.com/cesanta/validate-json)
|
||||
|
||||
### Haskell ###
|
||||
|
||||
* [aeson-schema](https://github.com/timjb/aeson-schema)
|
||||
* [hjsonschema](https://github.com/seagreen/hjsonschema)
|
||||
|
||||
### Java ###
|
||||
|
||||
* [json-schema-validator](https://github.com/fge/json-schema-validator)
|
||||
|
||||
### JavaScript ###
|
||||
|
||||
* [json-schema-benchmark](https://github.com/Muscula/json-schema-benchmark)
|
||||
* [direct-schema](https://github.com/IreneKnapp/direct-schema)
|
||||
* [is-my-json-valid](https://github.com/mafintosh/is-my-json-valid)
|
||||
* [jassi](https://github.com/iclanzan/jassi)
|
||||
* [JaySchema](https://github.com/natesilva/jayschema)
|
||||
* [json-schema-valid](https://github.com/ericgj/json-schema-valid)
|
||||
* [Jsonary](https://github.com/jsonary-js/jsonary)
|
||||
* [jsonschema](https://github.com/tdegrunt/jsonschema)
|
||||
* [request-validator](https://github.com/bugventure/request-validator)
|
||||
* [skeemas](https://github.com/Prestaul/skeemas)
|
||||
* [tv4](https://github.com/geraintluff/tv4)
|
||||
* [z-schema](https://github.com/zaggino/z-schema)
|
||||
* [jsen](https://github.com/bugventure/jsen)
|
||||
* [ajv](https://github.com/epoberezkin/ajv)
|
||||
|
||||
### Node.js ###
|
||||
|
||||
The JSON Schema Test Suite is also available as an
|
||||
[npm](https://www.npmjs.com/package/json-schema-test-suite) package.
|
||||
Node-specific support is maintained on the [node branch](https://github.com/json-schema/JSON-Schema-Test-Suite/tree/node).
|
||||
See [NODE-README.md](https://github.com/json-schema/JSON-Schema-Test-Suite/blob/node/NODE-README.md)
|
||||
for more information.
|
||||
|
||||
### .NET ###
|
||||
|
||||
* [Newtonsoft.Json.Schema](https://github.com/JamesNK/Newtonsoft.Json.Schema)
|
||||
|
||||
### PHP ###
|
||||
|
||||
* [json-schema](https://github.com/justinrainbow/json-schema)
|
||||
|
||||
### Python ###
|
||||
|
||||
* [jsonschema](https://github.com/Julian/jsonschema)
|
||||
|
||||
### Ruby ###
|
||||
|
||||
* [json-schema](https://github.com/hoxworth/json-schema)
|
||||
|
||||
### Rust ###
|
||||
|
||||
* [valico](https://github.com/rustless/valico)
|
||||
|
||||
### Swift ###
|
||||
|
||||
* [JSONSchema](https://github.com/kylef/JSONSchema.swift)
|
||||
|
||||
If you use it as well, please fork and send a pull request adding yourself to
|
||||
the list :).
|
||||
|
||||
Contributing
|
||||
------------
|
||||
|
||||
If you see something missing or incorrect, a pull request is most welcome!
|
||||
|
||||
There are some sanity checks in place for testing the test suite. You can run
|
||||
them with `bin/jsonschema_suite check` or `tox`. They will be run automatically by
|
||||
[Travis CI](https://travis-ci.org/) as well.
|
283
external/rapidjson/bin/jsonschema/bin/jsonschema_suite
vendored
Executable file
283
external/rapidjson/bin/jsonschema/bin/jsonschema_suite
vendored
Executable file
|
@ -0,0 +1,283 @@
|
|||
#! /usr/bin/env python
|
||||
from __future__ import print_function
|
||||
import sys
|
||||
import textwrap
|
||||
|
||||
try:
|
||||
import argparse
|
||||
except ImportError:
|
||||
print(textwrap.dedent("""
|
||||
The argparse library could not be imported. jsonschema_suite requires
|
||||
either Python 2.7 or for you to install argparse. You can do so by
|
||||
running `pip install argparse`, `easy_install argparse` or by
|
||||
downloading argparse and running `python2.6 setup.py install`.
|
||||
|
||||
See https://pypi.python.org/pypi/argparse for details.
|
||||
""".strip("\n")))
|
||||
sys.exit(1)
|
||||
|
||||
import errno
|
||||
import fnmatch
|
||||
import json
|
||||
import os
|
||||
import random
|
||||
import shutil
|
||||
import unittest
|
||||
import warnings
|
||||
|
||||
if getattr(unittest, "skipIf", None) is None:
|
||||
unittest.skipIf = lambda cond, msg : lambda fn : fn
|
||||
|
||||
try:
|
||||
import jsonschema
|
||||
except ImportError:
|
||||
jsonschema = None
|
||||
else:
|
||||
validators = getattr(
|
||||
jsonschema.validators, "validators", jsonschema.validators
|
||||
)
|
||||
|
||||
|
||||
ROOT_DIR = os.path.join(
|
||||
os.path.dirname(__file__), os.pardir).rstrip("__pycache__")
|
||||
SUITE_ROOT_DIR = os.path.join(ROOT_DIR, "tests")
|
||||
|
||||
REMOTES = {
|
||||
"integer.json": {"type": "integer"},
|
||||
"subSchemas.json": {
|
||||
"integer": {"type": "integer"},
|
||||
"refToInteger": {"$ref": "#/integer"},
|
||||
},
|
||||
"folder/folderInteger.json": {"type": "integer"}
|
||||
}
|
||||
REMOTES_DIR = os.path.join(ROOT_DIR, "remotes")
|
||||
|
||||
TESTSUITE_SCHEMA = {
|
||||
"$schema": "http://json-schema.org/draft-03/schema#",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"description": {"type": "string", "required": True},
|
||||
"schema": {"required": True},
|
||||
"tests": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"description": {"type": "string", "required": True},
|
||||
"data": {"required": True},
|
||||
"valid": {"type": "boolean", "required": True}
|
||||
},
|
||||
"additionalProperties": False
|
||||
},
|
||||
"minItems": 1
|
||||
}
|
||||
},
|
||||
"additionalProperties": False,
|
||||
"minItems": 1
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def files(paths):
|
||||
for path in paths:
|
||||
with open(path) as test_file:
|
||||
yield json.load(test_file)
|
||||
|
||||
|
||||
def groups(paths):
|
||||
for test_file in files(paths):
|
||||
for group in test_file:
|
||||
yield group
|
||||
|
||||
|
||||
def cases(paths):
|
||||
for test_group in groups(paths):
|
||||
for test in test_group["tests"]:
|
||||
test["schema"] = test_group["schema"]
|
||||
yield test
|
||||
|
||||
|
||||
def collect(root_dir):
|
||||
for root, dirs, files in os.walk(root_dir):
|
||||
for filename in fnmatch.filter(files, "*.json"):
|
||||
yield os.path.join(root, filename)
|
||||
|
||||
|
||||
class SanityTests(unittest.TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
print("Looking for tests in %s" % SUITE_ROOT_DIR)
|
||||
cls.test_files = list(collect(SUITE_ROOT_DIR))
|
||||
print("Found %s test files" % len(cls.test_files))
|
||||
assert cls.test_files, "Didn't find the test files!"
|
||||
|
||||
def test_all_files_are_valid_json(self):
|
||||
for path in self.test_files:
|
||||
with open(path) as test_file:
|
||||
try:
|
||||
json.load(test_file)
|
||||
except ValueError as error:
|
||||
self.fail("%s contains invalid JSON (%s)" % (path, error))
|
||||
|
||||
def test_all_descriptions_have_reasonable_length(self):
|
||||
for case in cases(self.test_files):
|
||||
descript = case["description"]
|
||||
self.assertLess(
|
||||
len(descript),
|
||||
60,
|
||||
"%r is too long! (keep it to less than 60 chars)" % (descript,)
|
||||
)
|
||||
|
||||
def test_all_descriptions_are_unique(self):
|
||||
for group in groups(self.test_files):
|
||||
descriptions = set(test["description"] for test in group["tests"])
|
||||
self.assertEqual(
|
||||
len(descriptions),
|
||||
len(group["tests"]),
|
||||
"%r contains a duplicate description" % (group,)
|
||||
)
|
||||
|
||||
@unittest.skipIf(jsonschema is None, "Validation library not present!")
|
||||
def test_all_schemas_are_valid(self):
|
||||
for schema in os.listdir(SUITE_ROOT_DIR):
|
||||
schema_validator = validators.get(schema)
|
||||
if schema_validator is not None:
|
||||
test_files = collect(os.path.join(SUITE_ROOT_DIR, schema))
|
||||
for case in cases(test_files):
|
||||
try:
|
||||
schema_validator.check_schema(case["schema"])
|
||||
except jsonschema.SchemaError as error:
|
||||
self.fail("%s contains an invalid schema (%s)" %
|
||||
(case, error))
|
||||
else:
|
||||
warnings.warn("No schema validator for %s" % schema)
|
||||
|
||||
@unittest.skipIf(jsonschema is None, "Validation library not present!")
|
||||
def test_suites_are_valid(self):
|
||||
validator = jsonschema.Draft3Validator(TESTSUITE_SCHEMA)
|
||||
for tests in files(self.test_files):
|
||||
try:
|
||||
validator.validate(tests)
|
||||
except jsonschema.ValidationError as error:
|
||||
self.fail(str(error))
|
||||
|
||||
def test_remote_schemas_are_updated(self):
|
||||
for url, schema in REMOTES.items():
|
||||
filepath = os.path.join(REMOTES_DIR, url)
|
||||
with open(filepath) as schema_file:
|
||||
self.assertEqual(json.load(schema_file), schema)
|
||||
|
||||
|
||||
def main(arguments):
|
||||
if arguments.command == "check":
|
||||
suite = unittest.TestLoader().loadTestsFromTestCase(SanityTests)
|
||||
result = unittest.TextTestRunner(verbosity=2).run(suite)
|
||||
sys.exit(not result.wasSuccessful())
|
||||
elif arguments.command == "flatten":
|
||||
selected_cases = [case for case in cases(collect(arguments.version))]
|
||||
|
||||
if arguments.randomize:
|
||||
random.shuffle(selected_cases)
|
||||
|
||||
json.dump(selected_cases, sys.stdout, indent=4, sort_keys=True)
|
||||
elif arguments.command == "remotes":
|
||||
json.dump(REMOTES, sys.stdout, indent=4, sort_keys=True)
|
||||
elif arguments.command == "dump_remotes":
|
||||
if arguments.update:
|
||||
shutil.rmtree(arguments.out_dir, ignore_errors=True)
|
||||
|
||||
try:
|
||||
os.makedirs(arguments.out_dir)
|
||||
except OSError as e:
|
||||
if e.errno == errno.EEXIST:
|
||||
print("%s already exists. Aborting." % arguments.out_dir)
|
||||
sys.exit(1)
|
||||
raise
|
||||
|
||||
for url, schema in REMOTES.items():
|
||||
filepath = os.path.join(arguments.out_dir, url)
|
||||
|
||||
try:
|
||||
os.makedirs(os.path.dirname(filepath))
|
||||
except OSError as e:
|
||||
if e.errno != errno.EEXIST:
|
||||
raise
|
||||
|
||||
with open(filepath, "wb") as out_file:
|
||||
json.dump(schema, out_file, indent=4, sort_keys=True)
|
||||
elif arguments.command == "serve":
|
||||
try:
|
||||
from flask import Flask, jsonify
|
||||
except ImportError:
|
||||
print(textwrap.dedent("""
|
||||
The Flask library is required to serve the remote schemas.
|
||||
|
||||
You can install it by running `pip install Flask`.
|
||||
|
||||
Alternatively, see the `jsonschema_suite remotes` or
|
||||
`jsonschema_suite dump_remotes` commands to create static files
|
||||
that can be served with your own web server.
|
||||
""".strip("\n")))
|
||||
sys.exit(1)
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route("/<path:path>")
|
||||
def serve_path(path):
|
||||
if path in REMOTES:
|
||||
return jsonify(REMOTES[path])
|
||||
return "Document does not exist.", 404
|
||||
|
||||
app.run(port=1234)
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description="JSON Schema Test Suite utilities",
|
||||
)
|
||||
subparsers = parser.add_subparsers(help="utility commands", dest="command")
|
||||
|
||||
check = subparsers.add_parser("check", help="Sanity check the test suite.")
|
||||
|
||||
flatten = subparsers.add_parser(
|
||||
"flatten",
|
||||
help="Output a flattened file containing a selected version's test cases."
|
||||
)
|
||||
flatten.add_argument(
|
||||
"--randomize",
|
||||
action="store_true",
|
||||
help="Randomize the order of the outputted cases.",
|
||||
)
|
||||
flatten.add_argument(
|
||||
"version", help="The directory containing the version to output",
|
||||
)
|
||||
|
||||
remotes = subparsers.add_parser(
|
||||
"remotes",
|
||||
help="Output the expected URLs and their associated schemas for remote "
|
||||
"ref tests as a JSON object."
|
||||
)
|
||||
|
||||
dump_remotes = subparsers.add_parser(
|
||||
"dump_remotes", help="Dump the remote ref schemas into a file tree",
|
||||
)
|
||||
dump_remotes.add_argument(
|
||||
"--update",
|
||||
action="store_true",
|
||||
help="Update the remotes in an existing directory.",
|
||||
)
|
||||
dump_remotes.add_argument(
|
||||
"--out-dir",
|
||||
default=REMOTES_DIR,
|
||||
type=os.path.abspath,
|
||||
help="The output directory to create as the root of the file tree",
|
||||
)
|
||||
|
||||
serve = subparsers.add_parser(
|
||||
"serve",
|
||||
help="Start a webserver to serve schemas used by remote ref tests."
|
||||
)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main(parser.parse_args())
|
BIN
external/rapidjson/bin/jsonschema/remotes/folder/folderInteger.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/remotes/folder/folderInteger.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/remotes/integer.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/remotes/integer.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/remotes/subSchemas.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/remotes/subSchemas.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/additionalItems.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/additionalItems.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/additionalProperties.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/additionalProperties.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/default.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/default.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/dependencies.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/dependencies.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/disallow.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/disallow.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/divisibleBy.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/divisibleBy.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/enum.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/enum.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/extends.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/extends.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/items.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/items.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/maxItems.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/maxItems.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/maxLength.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/maxLength.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/maximum.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/maximum.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/minItems.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/minItems.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/minLength.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/minLength.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/minimum.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/minimum.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/optional/bignum.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/optional/bignum.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/optional/format.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/optional/format.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/optional/jsregex.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/optional/jsregex.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/optional/zeroTerminatedFloats.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/optional/zeroTerminatedFloats.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/pattern.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/pattern.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/patternProperties.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/patternProperties.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/properties.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/properties.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/ref.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/ref.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/refRemote.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/refRemote.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/required.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/required.json
vendored
Normal file
Binary file not shown.
BIN
external/rapidjson/bin/jsonschema/tests/draft3/type.json
vendored
Normal file
BIN
external/rapidjson/bin/jsonschema/tests/draft3/type.json
vendored
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue