Compare commits

..

1641 Commits

Author SHA1 Message Date
Mikhail Khachayants
24b5e7a8b2 Fix out of bounds read with kParseValidateEncodingFlag 2025-02-05 21:28:08 +08:00
Aikawa Yataro
b1c0c2843f CMakeLists: include path fix + compatibility. 2025-02-05 21:25:33 +08:00
Mikhail Khachayants
d621dc9e9c Fix parsing 0.184467440737095516159 with kParseFullPrecisionFlag 2024-12-18 19:30:59 +08:00
SilverPlate3
58c6938b73 Guard against max being macros in schema.h
Similar to:
Issue - https://github.com/Tencent/rapidjson/issues/1033
Solution - 6e38649ec6

Fix std::numeric_limits::max() compilation confusion on Windows
2024-12-10 17:21:10 +08:00
SilverPlate3
9b5cad1649 Cpp version depended if constexpr schema.h
Fix windows compile warning C4127
2024-12-10 17:19:59 +08:00
SilverPlate3
535636aeae Cpp depended if constexpr pointer.h
Fix windows compile warning C4127
2024-12-10 17:19:59 +08:00
Christian Fersch
ebd87cb468 Increase CMake minimum version to 3.5 (fixes #2159) 2024-12-02 19:40:10 +08:00
RedContritio
858451e5b7 Fix endif condition to match NOT MSVC and VALGRIND_FOUND. 2024-10-07 20:17:31 +08:00
Dmitriy Tretyakov
815e6e7e7e add test for sso optimized string 2024-09-24 17:14:47 +08:00
Dmitriy Tretyakov
805d7ed5df Fix issue 2307
In case sso use memmove to avoid memory overlapping issues
2024-09-24 17:14:47 +08:00
Eyizoha
7c73dd7de7 Fix bug when parsing NaN, Inf with fraction or exponent parts (fixes #2299)
This patch fixes the issue where parsing NaN or Inf values with
fractional or exponent parts would return incorrect results
(e.g., "NaN.2e2" would be parsed as 20).
Before this patch, the parser would continue to process the fractional
and exponent parts even after successfully parsing a valid NaN or Inf,
which could lead to parsing errors. This patch adds a check for such
cases to skips the parsing of the fractional and exponent parts after
completing the NaN and Inf parsing.
2024-08-16 20:24:45 +08:00
Sergey Fedorov
ab1842a2da rapidjson.h: add forgotten ppc64 case 2024-04-09 17:58:25 +08:00
Brian Rogers
5ec44fb920 Add RAPIDJSON_BUILD_CXX20 option
The travis/appveyor files are updated to reference this option, but it is
not yet enabled in any of the build configurations.
2024-03-08 10:18:11 +08:00
Gilles Vollant
676d99db96 fix Visual Studio 2022 (using /std:c++20) warning warning C5232: in C++20 this comparison calls ... recursively 2024-03-08 10:17:06 +08:00
Richard W.M. Jones
68afb49287 tests: Only run valgrind tests if valgrind was found
valgrind is not present on all architectures (eg riscv64) and might
not be installed even on supported architectures.

Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
2024-03-07 14:41:57 +08:00
Dylan Burr
3f73edae00 Fix static_cast in regex.h
In the constructor for GenericRegexSearch, there was an issue with a
static_cast casting the result of the Malloc call. The issue was that
the stateSet_ member is of type uint32_t*, and there was an attempt to
assign an unsigned* to it. On some systems, uint32_t is not equivalent
to unsigned, thus yielding a compile error for assigning pointers of
different type.
Change-Id: I5b5036100305510b83cc4893b784a2dc9f3e4849
2024-02-09 21:47:20 +08:00
Esther Wang
5a74efa8c7 Fix comparision of two doubles
One of multipleOf test failed because most floating-point numbers end
up being slightly imprecise. And, the check of multipleOf with two
double numbers using the dividend (a) and the result of multiplying
the multiple after rounding down by the divisor (floor(|a|/|b|)*b) to
compare.

Change to using std::numeric_limits::epsilon to check the error of
the division result.
2024-02-09 19:29:03 +08:00
Bryant Ferguson
060a09a1c5 Fix schema regex preprocessor include logic 2024-02-09 19:28:14 +08:00
Esther Wang
6089180ecb Use correct format for printf
Change the printf format from '%d' to '%u', matching the type of the
arguments.
2023-12-06 19:08:30 +08:00
Aikawa Yataro
f9d53419e9 Add Hasher tests for objects where key eq value 2023-09-28 16:06:09 +01:00
Aikawa Yataro
6f79698b35 Fix swapped high and low offset basis values 2023-09-28 16:06:09 +01:00
Aikawa Yataro
eee82cb078 Fix object hashing in schema 2023-09-28 16:06:09 +01:00
Jeroen Doggen
b4a6da3e63 unit tests for 'Stringify NaN, Inf as null' 2023-09-21 18:42:43 +01:00
Jeroen Doggen
e7b6e5a208 Fix: 'Stringify NaN, Inf as null'
The code path where 'null' is written was never reached when 'writeFlags == kWriteNanAndInfNullFlag'
2023-09-21 18:42:43 +01:00
Albert Hung (Embedded)
476ffa2fd2 Rename to fix allocator shadowing
The identifier 'allocator' in the RapidJSON StdAllocator class declaration shadows the identifier 'allocator' in the
std::allocator class. To fix this, rename the 'allocator'
identifier in the StdAllocator class declaration to a different name.
2023-08-21 11:02:43 +08:00
Albert Hung
5e17dbed34 Eliminate old style cast warning
Use static_cast to replace old style cast.

Change-Id: I30e659c8f2aadc02750555b0f041bfd2e1c8004a
2023-08-17 16:55:04 +08:00
Albert Hung
956063dbc1 Fixing printf format warning
In the BigNestedObject test case of valuetest.c, a dynamically
defined format is used that depends on the signedness of the
'SizeType' type. This allows the 'sprintf' function to use the correct
format for 'SizeType'.

Change-Id: I97222b699bda6c0ccfc9abbc5977c79e16605f2c
2023-08-15 17:03:49 +08:00
Milo Yip
30f54566ad
Merge pull request #1901 from JackBoosY/master
Use modern cmake function export to generate target
2023-08-14 18:08:52 +08:00
Albert Hung
516d047394 Remove empty cross-reference in comment
Remove useless comment block which owns a '\see' cross-reference, but
doesn't provide any data after it. This empty cross-reference triggers
a compiler warning.

Change-Id: I5c01d57579e5efedcb4bf17b80b06db313a61ab3
2023-08-14 18:08:33 +08:00
miloyip
52dd947090 Merge branch 'master' into pr/1901 2023-08-14 11:00:53 +01:00
Jihadist
a95e013b97 Stringify NaN, Inf as null if needs 2023-07-17 11:02:35 +08:00
Leonard Chan
973dc9c06d Avoid ptrdiff between pointers to different allocations
When using running both Undefined Behavior Sanitizer (UBSan) and
Hardware-Assisted Address Sanitizer (HWASan) on Fuchsia, ubsan
complained about a pointer overflow when computing the new token->name pointer.
This happens because the initial pointer diff takes the offset between
two allocations with different tags, so the arithmetic results in a very
large diff that gets added to the original token->name ptr which
overflows.

Any arithmetic between pointers to two allocations is unspecified
behavior, so hwasan+ubsan is catching a bug here. It looks like
rapidjson is just attempting to update the name pointers to strings
copied into the new nameBuffer_ via this arithmetic, but since these
strings and the tokens are in the same buffer, the offset between them
should be the same. For each token we can just get this offset and
adjust the new name pointers accordingly which avoids the bad arithmetic.
2023-05-17 16:16:27 +08:00
Albert Hung
2a1f586ba6 Check for __GNUC__ definition
Wrap code checking against __GNUC__ to ensure it is defined. This can cause errors with compilers which do not define this preprocessor value.
2023-05-10 12:41:04 +08:00
Albert Hung
0e88d5e404 Eliminate missing prototypes warning 2023-05-09 21:28:14 +08:00
Flaviu_
949c771b03 Resolve conflict with Windows header about max macro 2023-04-07 18:45:27 +08:00
Sergey Fedorov
083f359f5c CMakeLists: fix optflags for ppc 2023-03-06 14:36:52 +08:00
supperpiccle
012be85287 Use passed in allocator. 2023-01-12 14:24:04 +08:00
Steve Hanson
1ce516e50b Suppress uritest 2023-01-05 20:34:07 +08:00
Steve Hanson
778dc8b03e fix #1 2023-01-05 20:34:07 +08:00
Tana0910
76281ff388 fix a typo in error.h: literial -> literal 2023-01-04 17:45:39 +08:00
Kent Ross
a98e99992b do not define operator!= in C++20
A change to the semantics of equality operator rewriting in C++20 (P2468R2: The Equality Operator You Are Looking For) means that operator== may not be rewritten with reversed operands if operator!= is also defined. Since operator!= can normally be synthesized from operator== regardless in this language standard, we can and should avoid defining those when the new language semantics are available.

This fixes the compilation of tests (and probably consuming code) in C++20 onwards for compilers that implement this new semantic, including recent nightly builds of clang-16.

Reference: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2468r2.html
2022-12-19 05:30:49 +08:00
Steve Hanson
b08672d469 review comment updates 2022-12-19 05:30:00 +08:00
Steve Hanson
55eca66f39 code & tests for openapi 2.0 & 3.0 suppprt 2022-12-19 05:30:00 +08:00
Steve Hanson
80b6d1c834 small corrections for schema.h 2022-12-01 00:42:44 +08:00
Steve Hanson
97fd830175 attempt to fix SEH 2022-12-01 00:42:44 +08:00
Steve Hanson
7cad78e236 tidy up after merge from master 2022-12-01 00:42:44 +08:00
Steve Hanson
794248ee62 fix build break 2022-12-01 00:42:44 +08:00
Steve Hanson
2d87923e91 remove unnecessary templating from schema tests 2022-12-01 00:42:44 +08:00
Steve Hanson
aa1f22251f correct address.json so tests pass 2022-12-01 00:42:44 +08:00
Steve Hanson
ecb8d9e3a0 add dump of unexpected schema errors in schematest.cpp 2022-12-01 00:42:44 +08:00
Steve Hanson
89f6717f0b corrections 2022-12-01 00:42:44 +08:00
Steve Hanson
338d8defdb initial 2022-12-01 00:42:44 +08:00
jwillcox-telework
06d58b9e84 Update dtoa.h
Fixed DigitGen to use proper suffix for uint64_t numeric types. Change from U suffix to ULL suffix.

On SLED 11.0 compiler, code would not compile.

cd rapidjson-master
g++ -Wall -m32 -ggdb -Iinclude -O1 ./example/simpledom/simpledom.cpp -o simpledom 2>&1 | tee out.txt
2022-08-23 10:52:40 +08:00
jwillcox-telework
22a62fcc2c Update allocators.h
Fixing compiler error on older compilers, such as SLED 11.0.

cd rapidjson-master
g++ -Wall -m32 -ggdb -Iinclude -O1 ./example/simpledom/simpledom.cpp -o simpledom 2>&1 | tee out.txt

Changed SIZE_MAX to std::numeric_limits<size_t>::max() in code to get rid of SIZE_MAX error.
2022-08-23 10:52:40 +08:00
Tim Gates
27c3a8dc0e docs: fix simple typo, perecent -> percent
There is a small typo in test/unittest/pointertest.cpp.

Should read `percent` rather than `perecent`.

Signed-off-by: Tim Gates <tim.gates@iress.com>
2022-07-20 21:53:57 +08:00
Kent Ross
232389d4f1 delete unused variable 2022-05-24 10:03:13 +08:00
Kent Ross
64faab2e92 gate definition of symmetric equality operators on impl, not lib
These operators call themselves recursively if C++20 semantics are present in the compiler, regardless of standard library support for the operator; therefore the test should be on __cpp_impl_three_way_comparison, not __cpp_lib_[...].

This fixes the Value.EqualtoOperator test when the language standard is set to C++20 and the standard library does not yet define the library support macro.
2022-05-24 10:03:13 +08:00
Johnny Shaw
719304b113 fixes for natvis 2022-05-21 15:02:39 +08:00
Johnny Shaw
dd3f730d74 Make schema dtor robust against exceptions 2022-05-21 09:35:41 +08:00
Peter Kasting
781a4e667d Try to fix MSVC build. 2022-05-19 11:55:17 +08:00
Peter Kasting
88f8ddd70c Include conceptual change from PR 2001. 2022-05-19 11:55:17 +08:00
Peter Kasting
4695953567 Avoid exit-time destructors.
operator[]() was recently changed to use the existing code in order to
correctly align the returned pointer; however this broke
-Wexit-time-destructors.  Change to a method that is still correctly
aligned but does not generate a destructor.
2022-05-19 11:55:17 +08:00
Peter Kasting
0390b1ad57 Avoid exit-time destructors.
operator[]() was recently changed to use the existing code in order to
correctly align the returned pointer; however this broke
-Wexit-time-destructors.  Change to a method that is still correctly
aligned but does not generate a destructor.
2022-05-19 11:55:17 +08:00
Tom Briden
2b2c804500 encdedstreamtest: fix use-after-free compile error with gcc-12 2022-05-16 10:23:11 +08:00
Tom Briden
1f59c69cd1 valuetest: fix potential write of terminating nul past the end of the destination
Fixes 2 compile errors with gcc-12, eg:

tesunittest/valuetest.cpp:1516:30: error: 'sprintf' may write a terminating nul past the end of the destination [-Werror=format-overflow=]
test/unittest/valuetest.cpp:1516:20: note: 'sprintf' output between 2 and 11 bytes into a destination of size 10
2022-05-16 10:23:11 +08:00
Jack·Boos·Yu
3445e155e9
Merge branch 'master' into master 2022-05-05 08:03:42 +00:00
Milo Yip
fcb23c2dbf
Merge pull request #2008 from agate-pris/access-to-allocator-types
Access to allocator types
2022-04-06 12:28:13 +08:00
Milo Yip
bdc49ad80a
Merge pull request #2014 from lazydroid/dev/lenik/fix_shadowed_variables
fix shadowed variable
2022-04-06 12:27:10 +08:00
Leonid Terenin
6b500986c4 fix shadowed variable, take 2 2022-04-06 10:42:40 +09:00
Leonid Terenin
3988c5e25e fix shadowed variable 2022-04-06 09:58:56 +09:00
agate-pris
386d31ab69 Allow access to the template parameter StackAllocator in the GenericDocument
Add the typedef declaration `StackAllocatorType` to the class template
`GenericDocument`. This allows the user to access the template parameter
`StackAllocator`.
2022-03-18 19:34:11 +09:00
agate-pris
79d7a448e9 Allow the macro RAPIDJSON_DEFAULT_STACK_ALLOCATOR to be used in any namespace
RAPIDJSON_DEFAULT_STACK_ALLOCATOR uses names in the namespace
`RAPIDJSON_NAMESPACE`. Replace this with a name starting in the global
namespace.
2022-03-18 19:32:01 +09:00
agate-pris
9965ab37f6 Allow the macro RAPIDJSON_DEFAULT_ALLOCATOR to be used in any namespace
`RAPIDJSON_DEFAULT_ALLOCATOR` uses names in the namespace
`RAPIDJSON_NAMESPACE`. Replace this with a name starting in the global
namespace.
2022-03-18 19:22:19 +09:00
Milo Yip
8261c1ddf4
Merge pull request #1969 from MalcolmTyrrell/MalcolmTyrrell/sanitizeSchemaCode
Sanitize the code in schema.h
2022-03-09 12:15:45 +08:00
Milo Yip
0d78b1ce93
Merge pull request #1989 from adamcalhoon/really-fix-placement-new-alignment
Fix the alignment of placement new buffer for GenericValue.
2022-03-08 17:09:47 +08:00
Adam Calhoon
1dff2abff7 Fix the alignment of placement new buffer for GenericValue.
When using operator[] on a GenericValue type clang-tidy complains,
appropriately, about the alignment of the buffer used for placement-new
of the "dummy" GenericValue.
2022-02-08 22:29:15 -05:00
Milo Yip
e4bde97744
Merge pull request #1988 from Tencent/revert-1987-fix-placement-new-alignment
Revert "Fix the alignment of placement new buffer for GenericValue."
2022-02-09 10:48:22 +08:00
Milo Yip
88bbd87ddd
Revert "Fix the alignment of placement new buffer for GenericValue." 2022-02-09 10:48:05 +08:00
Milo Yip
bf8ca5da88
Merge pull request #1987 from adamcalhoon/fix-placement-new-alignment
Fix the alignment of placement new buffer for GenericValue.
2022-02-09 10:47:25 +08:00
Adam Calhoon
5b242b6b2d Fix the alignment of placement new buffer for GenericValue.
When using operator[] on a GenericValue type clang-tidy complains,
appropriately, about the alignment of the buffer used for placement-new
of the "dummy" GenericValue.
2022-02-08 12:03:02 -05:00
Milo Yip
fd3dc29a5c
Merge pull request #1944 from ilelann/patch-1
Support CMake none targets
2021-11-24 23:11:45 +08:00
Malcolm Tyrrell
53602ec6bb Sanitize the code in schema.h 2021-11-17 09:31:22 +00:00
Milo Yip
0d4517f15a
Merge pull request #1961 from jedwardsol/issue1960_arm64ec_intrinsic
use softintrin on arm64ec
2021-10-31 11:07:57 +08:00
jedwards
060c348ea0 use softintrin on arm64ec 2021-10-29 15:31:10 -07:00
Milo Yip
4d6cb08189
Merge pull request #1949 from ardb-uk/master
Resolving issue #1948
2021-10-15 14:34:41 +08:00
ardb-uk
033bef3c6c
Merge pull request #1 from ardb-uk/ardb-uk-patch-1
Resolve issue 1948
2021-10-12 16:33:03 +01:00
ardb-uk
befba39afc
Merge pull request #2 from ardb-uk/ardb-uk-patch-1-1
Resolved issue #1948
2021-10-12 16:32:28 +01:00
ardb-uk
4bbaf28ffc
Add files via upload 2021-10-12 16:23:44 +01:00
ardb-uk
14f1e37f85
Resolve issue 1948
Correct instances of >> as they failed compilation.
2021-10-12 16:22:22 +01:00
Ivan Le Lann
e6736d1baa
Support CMake none targets
When trying to import rapidjson with for exemple : 
fetchcontent_declare(rapidjson GIT_REPOSITORY https://github.com/Tencent/rapidjson.git)

if your CMake/Clang is "bare metal", exemple given : 

set(CMAKE_SYSTEM_NAME none)
set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(CMAKE_C_COMPILER_TARGET x86_64-elf-none)
set(CMAKE_CXX_COMPILER_TARGET x86_64-elf-none)

CMake fails to process CMakeLists.txt because of the switch on UNIX/CYGWIN/WIN32 for install directory.

Error is: 

CMake Error at cmake-build-debug-clang/_deps/rapidjson-src/CMakeLists.txt:244 (INSTALL):
  INSTALL FILES given no DESTINATION!
2021-10-02 15:26:17 +02:00
Milo Yip
2e8f5d897d
Merge pull request #1940 from smhdfdl/issue-1924
Issue 1924 - stop erroneous compiler warnings
2021-09-24 18:05:03 +08:00
Steve Hanson
9ea3f45dbd fix the warning 2021-09-24 08:51:03 +01:00
Milo Yip
b9ae2499ef
Merge pull request #1941 from DiamondI/patch-1
typo on documentation dom.zh-cn.md: "己于" -> "已于"
2021-09-24 11:47:04 +08:00
Andrew
553a3ea31f
typo on documentation dom.zh-cn.md: "己于" -> "已于" 2021-09-24 10:57:46 +08:00
Steve Hanson
864e44aef8 Merge branch 'master' of https://github.com/Tencent/rapidjson 2021-09-23 14:33:30 +01:00
Milo Yip
00dbcf2c6e
Merge pull request #1926 from Kyrega/master
Fix RawNumber for characters with sizeof(Ch) > sizeof(char)
2021-08-13 12:25:41 +08:00
Kyrega
22ee8b07c8 Correct WIStreamWrapper 2021-08-10 17:39:04 +02:00
Kyrega
a3d52c75b7 No default template parameter for older compilers 2021-08-10 17:38:41 +02:00
Kyrega
19b55c9049 No default template parameter for older compilers 2021-08-10 17:38:23 +02:00
Kyrega
128b1031b0 Use rapidjson internal::SelectIf 2021-08-10 17:38:09 +02:00
Kyrega
8710d7e989 Do not depend on c++11 conditional 2021-08-10 17:37:35 +02:00
Kyrega
e0512e0944 Using unsigned for WIStreamWrapper 2021-08-10 17:36:31 +02:00
Kyrega
7fac34f7bb Added typename 2021-08-10 17:35:49 +02:00
Kyrega
b952a592a4 Fix RawNumber for longer char types 2021-08-10 17:35:07 +02:00
Milo Yip
28c59ab4c6
Merge pull request #1922 from jack-perisich/grisu2_precision
Fix small errors in dtoa output for certain doubles
2021-08-10 22:16:46 +08:00
jack_perisich
bb06211088 Fix small errors in dtoa output for certain doubles 2021-07-27 19:50:51 -04:00
Steve Hanson
7ee918fc8f Merge branch 'master' of https://github.com/Tencent/rapidjson 2021-07-09 10:47:18 +01:00
Milo Yip
48fbd8cd20
Merge pull request #1848 from smhdfdl/id-and-ref
Fix issue 1843 - support Id keyword
2021-07-09 10:57:40 +08:00
Steve Hanson
8d16abd980 Uri Parse improvements 2021-06-30 17:09:52 +01:00
Milo Yip
b557259f88
Merge pull request #1904 from Tencent/issue1899_pointerappend
Fix Pointer::Append() crash for custom allocator on Windows
2021-06-14 22:49:09 +08:00
Steve Hanson
a21cf9f7b8 equiv fix for issue 1899 2021-06-14 11:35:00 +01:00
Milo Yip
8c29a7b493 Fix Pointer::Append() crash for custom allocator on Windows
Fix #1899
2021-06-11 11:49:14 +08:00
Steve Hanson
12b88efa6f fix coverage again 2021-06-09 18:11:04 +01:00
Steve Hanson
f6ebcb2008 fix Uri.Match optional arg 2021-06-09 16:38:40 +01:00
Steve Hanson
3df804c128 fix coverage, unit test allocators and equality 2021-06-09 10:31:09 +01:00
Steve Hanson
18ab3b16bc remove temp debug statements 2021-06-08 17:11:42 +01:00
Steve Hanson
6d253c160d remove compiler warning 2021-06-08 15:31:25 +01:00
Steve Hanson
28bcbd3f35 make std::string optional 2021-06-08 10:53:10 +01:00
JackBoosY
f4be0ada85 Use modern cmake function export to generate target 2021-06-07 02:13:23 -07:00
Steve Hanson
494447b731 remove copyright & debug statements 2021-05-21 15:55:11 +01:00
Steve Hanson
6e58a53f44 fix coverage 2021-05-20 17:44:34 +01:00
Steve Hanson
3987d82f41 Merge branch 'master' of https://github.com/Tencent/rapidjson into id-and-ref 2021-05-20 12:20:12 +01:00
Steve Hanson
9c1002f94d rge branch 'master' of https://github.com/Tencent/rapidjson 2021-05-20 12:18:46 +01:00
Milo Yip
17aa824c92
Merge pull request #1885 from saurabhchardereal/master
Improve documentation
2021-05-07 17:00:48 +08:00
Saurabh Charde
cd737fb545
Improve documentation
Signed-off-by: Saurabh Charde <saurabhchardereal@gmail.com>
2021-05-07 14:13:33 +05:30
Milo Yip
25fa7a119d
Merge pull request #1883 from nkolotov/fix/issues/1882
Fixed -Wshadow warning.
2021-05-06 09:54:52 +08:00
N. Kolotov
3aa8d04b74 Fixed -Wshadow warning. 2021-05-03 01:56:41 +03:00
Milo Yip
e0f68a4356
Merge pull request #1877 from hendrikmuhs/windows-GetObject-conflict-#1418
add a workaround for GetObject macro defined by windows.h
2021-04-20 10:02:53 +08:00
Hendrik Muhs
3cdfde14d6 replace auto with concrete type 2021-04-19 13:15:11 -07:00
Hendrik Muhs
d179facf90 don't let the GetObject macro rewrite the GetObject method, add a GetObj alias 2021-04-19 12:29:11 -07:00
Hendrik Muhs
3168d7c343 add a test that provokes a compile time error on windows 2021-04-18 18:06:35 +02:00
Milo Yip
47b837e14a
Merge pull request #1485 from ylavic/MemberMap
Object members stored in std::multimap
2021-04-08 10:06:28 +08:00
ylavic
be4a5a9087 Turn some Tests to RAPIDJSON_USE_MEMBERSMAP in CI. 2021-04-07 18:22:46 +02:00
ylavic
fc08f4f61b Tests for Members in std::multimap. 2021-04-07 18:22:46 +02:00
ylavic
71f0fa7eb3 Set RAPIDJSON_USE_MEMBERSMAP to use a (std::multi)map for object members.
When RAPIDJSON_USE_MEMBERSMAP is defined, an object Value will store
its members in an (re)allocated array of Members like before, but also
in an std::multimap<GenericValue::Data,SizeType> where the key and value
reference the corresponding Member by its Data and index in the array,
respectively, and in a relocatable manner.

The layout of the members map/array is now:
 {multimap*}<>{capacity}<>{Member[capacity]}<>{multimap::iterator[capacity]}
where <> stands for the RAPIDJSON_ALIGN-ment of each part, if needed.

This layout needs to be reallocated when the current capacity is
exhausted, which requires to take care of the multimap and its iterators
explicitely. The multimap is allocated separately and only its pointer is
saved in this layout, so it can easily be restored in its new position.
As for the old/alive iterators, they must move to their new offset according
to the new capacity.

With this in place, it's immediate to get the multimap::iterator from a
MemberIterator and vice versa, thus the same complexity applies for the
operations with MemberIterator or MapIterator.

For FindMember() and RemoveMember(), the complexity drops from O(n) to
the multimap/rbtree's O(log n).
For EraseMember() it drops from O(n-m) to O((log n)-m), m representing
the move/copy of the trailing members.
For AddMember() though, the complexity grows from O(1) to O(log n) due to
the insertion in the multimap too.

Consequently parsing will be slower, up to ~20% measured in perftests on
my laptop (since it's mainly composed of insertions). But later work on
the Document (usually the goal of parsing...) will be much faster; the
new DocumentFind perftest included in this commit is 8 times faster with
RAPIDJSON_USE_MEMBERSMAP (still on my laptop). Overall the tests are 4%
slower (mainly composed of parsing), and notably 15% slower for schemas
parsing/validation (which supposedly comes from the larger JSON files
parsing, still). As a side note, when RAPIDJSON_USE_MEMBERSMAP is not
defined, this commit does nothing (same results for perftest with regard
to previous versions).

Finally, the multimap is allocated and constructed using StdAllocator,
so they will use the same Allocator than for any other Value allocation,
and thus will benefit from the same performance/safety/security/whatever
provided by the user given Allocator.
2021-04-07 18:22:46 +02:00
Milo Yip
7d801bbe45
Merge pull request #1503 from ylavic/sub_value_assignment
Fix (Sub-)Value assignment
2021-04-07 17:52:51 +08:00
Milo Yip
03676c9bf5
Merge pull request #1870 from ylavic/allocators_rvalues
Add rvalue copy and assignment to MemoryPoolAllocator and StdAllocator.
2021-04-07 17:39:26 +08:00
ylavic
aa0675ffd7 Try some tests with -D_GLIBCXX_DEBUG and coverage with -O0. 2021-04-04 12:51:47 +02:00
ylavic
5c764d9a81 Tests for Allocators copy by rvalue reference. 2021-04-04 12:51:47 +02:00
ylavic
683010b02d Add rvalue copy and assignment to MemoryPoolAllocator and StdAllocator. 2021-04-04 12:51:47 +02:00
ylavic
117276c413 Fix would-crash tests if the default allocator used were kNeedFree.
The allocator cannot be destroyed before the Document, otherwise the
Value destructor double frees.
2021-04-02 21:09:20 +02:00
Milo Yip
49aa0fc15d
Merge pull request #1868 from ylavic/cpp17_in_ci
Handle C++17 (and C++11 with MSVC) in CI.
2021-04-01 14:40:55 +08:00
ylavic
a8bd931766 Tests for C++17 with VS 2019. 2021-03-30 15:58:17 +02:00
ylavic
6bed9b266f Don't define StdAllocator<void> from C++17. 2021-03-30 13:47:04 +02:00
ylavic
e336667b4a Handle C++17 (and C++11 with MSVC) in CI. 2021-03-30 10:12:36 +02:00
Milo Yip
b996a23714
Merge pull request #1866 from ylavic/std_allocator_traits
Make StdAllocator C++17-20 compatible.
2021-03-30 14:31:29 +08:00
ylavic
08cf9a56c0 Make StdAllocator C++17-20 compatible. 2021-03-29 11:32:33 +02:00
ylavic
02f42604bd Make StdAllocator C++17-20 compatible. 2021-03-28 23:48:14 +02:00
Milo Yip
cd5ee4dfe9
Merge pull request #1858 from ylavic/std_allocator
Provide StdAllocator, STL compatible, for use with standard types
2021-03-25 15:22:32 +08:00
miloyip
3d77d11e28 add traverse as pointer example 2021-03-24 16:51:12 +08:00
ylavic
2e6f761458 Tests for StdAllocator. 2021-03-16 01:03:04 +01:00
ylavic
49e4dd619f Provide StdAllocator, STL compatible, for use with STL types. 2021-03-16 01:03:04 +01:00
ylavic
50cb424c34 Test assignment from inner Value. 2021-03-15 23:57:42 +01:00
ylavic
c033292aea Safer GenericValue& operator=(GenericValue& rhs).
When rhs is a sub-Value of *this, destroying *this also destroys/frees
rhs, thus the following RawAssign(rhs) crashes.

Address this by saving/moving rhs to a temporary first, which clears rhs
and avoids its destruction with *this.

The crash can be reproduced in test Value.MergeDuplicateKey by using the
CrtAllocator instead of the default Document's MemoryPoolAllocator.
2021-03-15 23:57:42 +01:00
ylavic
d51dd2d0e9 RAPIDJSON_NOEXCEPT_ASSERT should assert regardless of RAPIDJSON_HAS_CXX11_NOEXCEPT. 2021-03-12 15:32:17 +01:00
ylavic
cdb2d4757d Provide RAPIDJSON_HAS_CXX11 and use it for RAPIDJSON_HAS_CXX11_RVALUE_REFS and RAPIDJSON_HAS_CXX11_NOEXCEPT. 2021-03-12 15:14:30 +01:00
Steve Hanson
bc026e3fb5 satisfy all compilers 3 2021-03-11 18:25:10 +00:00
Steve Hanson
24b9b7e276 satisfy all compilers 2 2021-03-11 18:16:24 +00:00
Steve Hanson
32722fa31d satisfy all compilers 2021-03-11 16:53:05 +00:00
Steve Hanson
8768b5b1d6 correct #defines in uri.h 2021-03-11 15:13:17 +00:00
Steve Hanson
6c9da69abf remove comma 2021-03-11 15:06:02 +00:00
Steve Hanson
6b57738e4a handle internal refs properly 2021-03-11 14:49:28 +00:00
miloyip
1c2c8e085a doc: fix incorrect template parameters in EncodedOutputStream example
Fix #1851
2021-03-02 11:15:31 +08:00
Steve Hanson
fe1a29ca69 fix platform-dependent compiler error with >> 2021-02-25 23:54:44 +00:00
Steve Hanson
ad73c032e7 fix compile errors 2021-02-25 22:51:35 +00:00
Steve Hanson
892f6e3fd3 fix bracket 2021-02-25 22:21:20 +00:00
Steve Hanson
cabc3d5aa1 merge 2021-02-25 22:12:05 +00:00
Steve Hanson
7698b3cd48 code and tests 2021-02-25 21:45:29 +00:00
Steve Hanson
dad85cab9d
Merge pull request #2 from smhdfdl/multiple-validation-failures-and-validation-messages
Multiple validation failures and validation messages
2021-02-25 21:01:50 +00:00
Milo Yip
b1a4d91a53
Merge pull request #1779 from pavel-pimenov/fix-1778-part-1
fix 1778  (part 1)
2021-02-23 10:23:34 +08:00
Milo Yip
8be64594f2
Merge pull request #1847 from stac47/fix_1846
Fix recursive operator== call in C++20 (#1846)
2021-02-23 10:21:11 +08:00
Laurent Stacul
24ebd51287 Fix recursive operator== call in C++20 (#1846) 2021-02-22 16:52:27 +00:00
Milo Yip
8bce684cda
Merge pull request #1844 from smhdfdl/multiple-validation-failures-and-validation-messages
After PR 1837, fix crash where simple type with sub-schema has a bad value
2021-02-22 00:01:56 +08:00
Steve Hanson
9bb81e20ff fix crash where simple type with sub-schema has a bad value 2021-02-12 17:36:55 +00:00
Milo Yip
13dfc96c9c
Merge pull request #1837 from smhdfdl/multiple-validation-failures-and-validation-messages
Fixes for issues #1835 & #1836 - Multiple validation failures and readable validation messages
2021-02-03 21:19:27 +08:00
Steve Hanson
167efb4fa0 work around issue 1089 2021-02-03 08:34:10 +00:00
Steve Hanson
28dc42d8d3 restore coverage 2021-01-29 19:20:01 +00:00
Steve Hanson
a3757456fe correct workaround for issue 1805 2021-01-29 16:43:12 +00:00
Steve Hanson
7fee368be3 Revert "revert perftest"
This reverts commit 221e8d5364d817f3ea89ec0e124e2fa68a696952.
2021-01-29 11:58:31 +00:00
Steve Hanson
221e8d5364 revert perftest 2021-01-29 11:38:33 +00:00
Steve Hanson
f89e75af75 remove C++ 11 std::string to_string() syntax 2021-01-29 11:08:01 +00:00
Steve Hanson
c491dd5213 remove C++ 11 enum syntax 2021-01-29 10:26:05 +00:00
Steve Hanson
6f3cccd6e1 remove debug std::cout, handle empty error object in example 2021-01-28 14:21:36 +00:00
Steve Hanson
05e7b33977 code and tests 2021-01-28 12:11:43 +00:00
Steve Hanson
5d17b24e53
Merge pull request #1 from Tencent/master
PR for commits 2021/01/12
2021-01-12 14:54:16 +00:00
Milo Yip
585042c02b
Merge pull request #1821 from slsyy/master
Add implicit conversion from Object and Array to Value (#1404)
2021-01-06 13:43:21 +08:00
Krystian Chmura
cbf62de55d Add implicit conversion from Object and Array to Value (#1404)
Allows resolution of JSON Pointer on Object and Array
2021-01-05 14:20:57 +01:00
Milo Yip
3cdd3c8370
Merge pull request #1817 from lukedan/lukedan_cpp20
Fix #1721
2020-12-28 10:32:35 +08:00
Xuanyi Zhou
5e50f27ed1 also initialize class member 2020-12-26 23:41:42 -05:00
Xuanyi Zhou
1e4f59d3ae add return statement & comment 2020-12-26 23:38:27 -05:00
Xuanyi Zhou
d742a030aa add body to private copy constructor & copy assignment 2020-12-26 23:27:43 -05:00
Xuanyi Zhou
3006926231 suppress enum bitwise operation warnings on msvc 2020-12-26 23:09:39 -05:00
Xuanyi Zhou
13f5ab4f44 fix schema test compile error 2020-12-26 22:58:13 -05:00
Milo Yip
56f215e5c3
Merge pull request #1568 from ericrannaud/ericrannaud/memberiterator-public
Make GenericMemberIterator::Iterator public again (RAPIDJSON_NOMEMBER…
2020-12-23 09:41:20 +08:00
Milo Yip
0ccdbf364c
Merge pull request #1786 from ssb22/master
Remove unnecessary wording from BSD license not needed for MIT license (fixes #528)
2020-10-13 09:54:06 +08:00
Silas S. Brown
b7734d97c0 Remove unnecessary wording from BSD license not needed for MIT license (fixes #528) 2020-10-09 10:04:27 +01:00
Pave Pimenov
3a65e2dd7f fix https://github.com/Tencent/rapidjson/issues/1778 (part 1) 2020-09-12 19:53:06 +03:00
Milo Yip
ce81bc9edf
Merge pull request #1760 from escherstair/fix_ce6_support
fix _BitScanReverse() usage for CE6
2020-08-07 10:12:21 +08:00
escherstair
5fbf8bf89c fix unit test 2020-08-06 15:55:42 +02:00
escherstair
7f559ec80a fix naive implementation for clzll() 2020-08-06 15:55:26 +02:00
escherstair
58e2964856 add unit test for clzll() 2020-08-06 14:57:39 +02:00
escherstair
aa5dd60865 fix naive version implementation 2020-08-04 14:39:19 +02:00
escherstair
91940e84b1 fallback to the naive version for CE6 2020-08-04 14:38:45 +02:00
escherstair
6364c8e5ab fix _BitScanReverse() usage for CE6 2020-08-04 10:01:44 +02:00
Milo Yip
f56928de85
Merge pull request #1744 from lklein53/improve-surrogate-handling
Improve surrogate handling (#1738)
2020-07-13 11:10:39 +08:00
Lars Klein
6694c996b9 Add test case for low surrogate handling 2020-07-04 14:48:55 +02:00
Lars Klein
ed73d7bdb4 Improve surrogate handling
Report a single low surrogate as kParseErrorStringUnicodeSurrogateInvalid.
2020-07-04 14:34:09 +02:00
Milo Yip
88bd956d66
Merge pull request #1453 from eidosmontreal/custom_malloc
Adding a single customization point that ensures all allocations within rapidjson can be performed with a custom memory allocator
2020-06-23 14:34:10 +08:00
Gaspard Petit
004e8e61a0 Merge branch 'master' into custom_malloc 2020-06-22 22:31:37 -04:00
Milo Yip
1a803826f1
Merge pull request #1720 from madeso/master
Fixes issue #1718
2020-05-19 00:25:35 +08:00
Gustav
ac0fc79c76 Fixes issue #1718 2020-05-18 14:06:39 +02:00
Milo Yip
8f4c021fa2
Merge pull request #1689 from g199209/master
Add CMake minimum version required.
2020-04-10 17:34:09 +08:00
Gao Mingfei
1ce28f454b Add CMake minimum version required.
Interface Libraries feature is not available before CMake 3.0

Signed-off-by: Gao Mingfei <mingfei.gao@ucloud.cn>
2020-04-10 14:50:51 +08:00
Matteo Settenvini
f376690822
Add a target to RapidJSONConfig.cmake.in (#1350)
This way, users can call target_link_libraries against the imported target, which is the recommended way of doing things.
2020-03-30 10:29:56 +08:00
Jun
234ff044f4
ci: upgrade distro to xenial and add arm64 test cases (#1662)
Start from xenial, Travis supports multiple CPU architectures.
To bump to this version allows expand test coverage for more
architectures.
See: https://docs.travis-ci.com/user/reference/overview/#virtualisation-environment-vs-operating-system
Add arm64 test cases to matrix.

Change-Id: If61e2d38223dad70b542d6ec0afcf4a433c9debf
Signed-off-by: Jun He <jun.he@arm.com>

Co-authored-by: Jun He <jun.he@arm.com>
2020-03-30 10:24:11 +08:00
ioannis-e
36481c30b3
Update Visual Studio Visualizer (#1665)
1. Determine the correct type of string based on encoding
2. Omit string pointer address
2020-03-30 10:22:52 +08:00
仓鼠
d4f03d0d04
Doc: Fix some typos. (#1675) 2020-03-30 10:21:37 +08:00
Nikolay
ebcbd04484
Three-way comparison for CLang 10 fix (#1679)
C++20 features must enable additional functionality, not to change interface completely
2020-03-30 10:20:35 +08:00
Romain Geissler @ Amadeus
2661a17c7e
Avoid warnings when using -std=c++20 and clang 10: use three way comparision for iterators when possible. (#1667)
/data/mwrep/res/osp/RapidJson/20-0-0-0/include/rapidjson/document.h:729:58: error: use of overloaded operator '!=' is ambiguous (with operand types 'rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >::MemberIterator' (aka 'rapidjson::GenericMemberIterator<false, rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >') and 'rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >::MemberIterator')
                for (MemberIterator m = MemberBegin(); m != MemberEnd(); ++m)
2020-03-20 13:39:48 +08:00
Jun
814bb27bf0
Replace RAPIDJSON_CLZLL with internal clzll (#1660)
RAPIDJSON_CLZLL is defined as macro of __builtin_clzll when
using gcc to compile. This introduces two issues:
1. in gcc __builtin_clzll returns int, not uint32_t.
2. __builtin_clzll return is undefined when input x is 0
See: https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

This patch removes RAPIDJSON_CLZLL, merges __builtin_clzll to
internal clzll with input check and return value explicit cast.

Change-Id: Iac4b355dc5e5b4ed9b3f35a640b6b5537e76f22c
Signed-off-by: Jun He <jun.he@arm.com>

Co-authored-by: Jun He <jun.he@arm.com>
2020-03-11 15:11:25 +08:00
Milo Yip
563fe5bbbe
PrettyWriter constructor uninitialized member (#1654)
Fix #1653
2020-03-05 14:13:11 +08:00
Milo Yip
2bed293f48
Update biginteger.h (#1652)
Fix intel compiler macro
de6681e295 (commitcomment-37645051)
2020-03-05 11:06:01 +08:00
mdamle
b16cec1a1a
Closes #1643 (#1644)
This change comes up with compile time pre-processor directives to
tune the behavior of rapidjson wrt memory consumption. The idea is to
allow each module using this library to choose the right defaults based
on how it consumes memory and what performance it expects.

1. RAPIDJSON_DEFAULT_ALLOCATOR: If defined allows you to choose
	CrtAllocator over MemoryPoolAllocator. If it is not defined, chooses MemoryPoolAllocator by default.
2. RAPIDJSON_DEFAULT_STACK_ALLOCATOR: If defined allows you to choose
	MemoryPoolAllocator over CrtAllocator. If it is not defined, chooses CrtAllocator by default.
3. RAPIDJSON_VALUE_DEFAULT_OBJECT_CAPACITY and RAPIDJSON_VALUE_DEFAULT_ARRAY_CAPACITY: If defined and set to a
	value, uses that value for default number of objects/array elements to be pre-allocated. If not defined,
	uses value of 16: the current default.

Verified that all tests pass.
2020-02-25 11:34:28 +08:00
Tim Gates
98f52b6bb0
Fix simple typo: drived -> derived (#1646)
Closes #1645
2020-02-21 15:46:10 +08:00
xpahos
a895ce150f
Allow escaped apostrophe in values (#1639)
* Allow escaped apostrophe in values

* Allow escaped apostrophe in values

* Canonical flag name

* Add translation for escaped apostrophe

Co-authored-by: Milo Yip <miloyip@gmail.com>
2020-02-13 09:53:15 +08:00
Milo Yip
418331e99f
Merge pull request #1631 from PhoebeHui/dev/Phoebe/vcpkg_instructions
Add vcpkg installation instructions
2020-01-17 09:55:44 +08:00
PhoebeHui
b4cf6e7381 Add vcpkg installation instructions 2020-01-16 03:09:20 -08:00
Milo Yip
dfbe1db9da
Merge pull request #1502 from ylavic/compilation_fixes
Compilation fixes
2019-12-03 09:51:05 +08:00
Milo Yip
eeb9d553f8
Merge pull request #1617 from JPEWdev/master
Remove shadow typedef
2019-12-03 09:49:40 +08:00
Joshua Watt
134af9d811 Remove shadow typedef
Removes a duplicate and identical typedef that was causing a
'declaration shadows typedef' (-Wshadow) warning in clang.
2019-12-02 09:19:16 -06:00
Milo Yip
35e480fc4d
Merge pull request #1609 from piratf/readme_contributing
add contributing section in readme.md
2019-11-25 11:54:59 +08:00
piratf
6cadd4b2ca add contributing section in readme.md, introduced the basic cooperation process. 2019-11-24 12:28:34 +08:00
Milo Yip
6534506e82
Merge pull request #1603 from piratf/cmakelist_upgrade
fix CMake policy CMP0048 warning #1154
2019-11-11 18:03:54 +08:00
piratf
46d980b46a fix CMake policy CMP0048 warning #1154 2019-11-11 16:09:43 +08:00
Milo Yip
c4c6a65410
Merge pull request #1548 from TranslucentTB/master
Fix ARM NEON under MSVC
2019-11-01 10:53:00 +08:00
Charles Milette
e54aca7006
Merge branch 'master' of https://github.com/Tencent/rapidjson 2019-10-31 21:10:28 -04:00
Milo Yip
bb5f966b99
Merge pull request #1591 from veekxt/patch-1
fix a typo of doc
2019-10-21 21:19:59 +08:00
VeekXT
67b245e07d
doc: fix a typo 2019-10-18 18:49:15 +08:00
Milo Yip
1a825d24fa
Merge pull request #1529 from rkoshy/master
Fixed a build issue by initializing "index" in the header file
2019-10-15 09:49:27 +08:00
Milo Yip
6a6bed2759
Merge pull request #1582 from crazyscot/master
Use C++17 fallthrough tag instead of disabling compiler warning
2019-10-08 10:12:13 +08:00
Milo Yip
5592c2eed4
Merge pull request #1544 from fredgan/master
修复文档中的错误
2019-10-08 09:57:38 +08:00
fredgan
39db1177bf fix some misspellings 2019-10-08 09:25:51 +08:00
Ross Younger
4116912cde Use C++17 fallthrough tag instead of disabling warning
Signed-off-by: Ross Younger <crazyscot@gmail.com>
2019-10-01 20:12:54 +13:00
Milo Yip
d67a69a9cf
Merge pull request #1490 from MalcolmTyrrell/fixCompileErrorInPointerH
Fix vs2017 compile error C2105: '--' needs l-value
2019-09-26 10:08:13 +08:00
Milo Yip
5777291497
Merge pull request #1579 from Tencent/vs2010
Fix VS2010 build via disabling copy constructor in GenericMember
2019-09-26 10:07:46 +08:00
Milo Yip
88a1ba9e30 Provide default implementations for move constructor/assignment in GenericMember 2019-09-25 20:20:20 +08:00
Milo Yip
c36b713c47 Disable copy constructor in GenericMember 2019-09-25 18:02:17 +08:00
Milo Yip
6006d6b678
Merge pull request #1573 from esrrhs/master
fix travis build
2019-09-25 14:27:37 +08:00
zhao xin
02d4ae838c
Update travis-doxygen.sh 2019-09-25 11:17:28 +08:00
zhao xin
4c1d9edb35
Update travis-doxygen.sh 2019-09-25 11:16:55 +08:00
zhao xin
c136acf023
Update travis-doxygen.sh 2019-09-25 11:16:26 +08:00
zhao xin
b2861565aa
Update travis-doxygen.sh 2019-09-25 11:16:06 +08:00
zhao xin
ed234bf749
Update .travis.yml 2019-09-25 10:26:39 +08:00
zhao xin
d3c4b2b2b1
Update .travis.yml 2019-09-25 10:17:39 +08:00
Eric Rannaud
ebc003e205 Make GenericMemberIterator::Iterator public again (RAPIDJSON_NOMEMBERITERATORCLASS)
d87b698d0f made all definitions of GenericMemberIterator consistent as
classes (they were structs with RAPIDJSON_NOMEMBERITERATORCLASS
defined), but it didn't keep the member definitions public.

document.h:586:71: error: 'Iterator' is a private member of
      'rapidjson::GenericMemberIterator<false, rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >'
    typedef typename GenericMemberIterator<false,Encoding,Allocator>::Iterator MemberIterator;  //!< Member iterator for i...
                                                                      ^
document.h:2124:32: note: in instantiation of template class
      'rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >' requested here
class GenericDocument : public GenericValue<Encoding, Allocator> {
2019-09-12 09:08:11 -07:00
Milo Yip
fcec7735dc
Merge pull request #1567 from AtnNn/master
Allow pointer tokens to have non-null-terminated strings
2019-09-12 17:40:00 +08:00
Etienne Laurin
123d7c89a4 add test for non-null-terminated token 2019-09-12 08:12:06 +01:00
Etienne Laurin
6102f0bd06 fix template parameter 2019-09-11 17:23:15 +01:00
Etienne Laurin
6fe99777e4 Allow pointer tokens to have non-null-terminated strings 2019-09-11 17:03:35 +01:00
Milo Yip
2648a732db
Merge pull request #1557 from MBoldyrev/doc/fix-uint-case
Documentation: fixed Uint case
2019-08-23 15:07:50 +08:00
Mikhail Boldyrev
8973b279cf fixed Uint case in docs 2019-08-23 07:44:29 +03:00
Charles Milette
02230fecbf
Change #ifdef to #if defined 2019-07-25 17:17:52 -04:00
Charles Milette
dfc0b35360
Update comment 2019-07-25 17:12:48 -04:00
Charles Milette
0d671a2e19
Fix signedness error 2019-07-25 17:11:20 -04:00
Charles Milette
07e1d7870a
Fix build error under non-Clang compilers 2019-07-25 16:55:34 -04:00
Charles Milette
d5d7171f6d
Fix ARM NEON under MSVC 2019-07-25 16:38:34 -04:00
FredGan
a133b16699
Merge pull request #1 from Tencent/master
Change all GenericMemberIterator from struct to class
2019-07-16 20:18:56 +08:00
Milo Yip
d87b698d0f Change all GenericMemberIterator from struct to class 2019-06-28 10:37:13 +08:00
Renny Koshy
c43697c16c - Fixed a build issue by initializing "index" in the header file 2019-06-21 23:55:32 -04:00
Milo Yip
4b3d7c2f42
Merge pull request #1506 from ylavic/CreatePattern
Add missing curly brackets in STDREGEX's CreatePattern().
2019-05-17 09:27:30 +08:00
ylavic
92f99bc2ee RAPIDJSON_NOEXCEPT_ASSERT() should never throw.
clang warns about throwing from RAPIDJSON_NOEXCEPT_ASSERT() in a nothrow
context.

If RAPIDJSON_ASSERT() throws it can never be used for _NOEXCEPT_ASSERT(),
so use C assert() instead.

Finally (and originally), since RAPIDJSON_ASSERT() in "unittest.h" throws,
make it define RAPIDJSON_ASSERT_THROWS for RAPIDJSON_NOEXCEPT_ASSERT() to
now do the right thing.
2019-05-09 13:37:49 +02:00
ylavic
b4538b5363 Fix compilation of sortkeys.cpp with MSVC 2013 (hopefully). 2019-05-09 13:37:49 +02:00
ylavic
94fc463801 Add missing curly brackets in STDREGEX's CreatePattern(). 2019-04-29 15:06:52 +02:00
Malcolm Tyrrell
c840a7ae15 Fix vs2017 compile error C2105: '--' needs l-value 2019-04-15 10:00:14 +01:00
Milo Yip
01950eb7ac
Merge pull request #1488 from somone23412/somone23412-fix-typo-1
Update pointer.zh-cn.md : fix typo
2019-04-15 09:25:18 +08:00
quyan
0798d5b26e
fix typo 2019-04-15 00:43:37 +08:00
Milo Yip
e80257a924
Merge pull request #1481 from liangdzou/patch-1
add missing header "ios"
2019-04-09 13:21:59 +08:00
Liang ZOU
13687a6e3e
add missing header "ios"
add missing header "ios" for symbol "std:: streamsize"
2019-04-09 10:55:57 +08:00
Milo Yip
e123f650a9
Merge pull request #1479 from MaxXSoft/patch-tutorial
doc/tutorial.zh-cn: fixed some typos
2019-04-09 09:42:14 +08:00
MaxXSoft
d5c5b87f0d doc/tutorial.zh-cn: fixed some typos 2019-04-08 19:20:06 +08:00
Milo Yip
55c3c241cf
Merge pull request #1477 from eisaev/patch-1
Fixed typo in allocators.h
2019-04-04 14:50:21 +08:00
eisaev
9264a9a7ef
Update allocators.h
Fixed typo
2019-04-03 22:10:30 +05:00
Milo Yip
091de040ed
Merge pull request #1462 from ra1u/master
Allow user to define custom RAPIDJSON_NOEXCEPT_ASSERT macro
2019-03-11 10:35:27 +08:00
Luka Rahne
40cae03b0d Allow user to define custom RAPIDJSON_NOEXCEPT_ASSERT macro 2019-03-10 20:07:59 +01:00
Milo Yip
3cf4f7c5a0
Merge pull request #727 from mapbox/silence-dereference-null-pointer
Silence false positive clang-tidy warning
2019-03-06 09:33:13 +08:00
Milo Yip
7484e06c58 Update doxygen download URL 2019-02-11 15:17:59 +08:00
Milo Yip
1ede098e90 Workaround of sortkeys example 2019-02-11 14:14:35 +08:00
Gaspard Petit
cef07fb1b3 Added parameters to RAPIDJSON_MALLOC, RAPIDJSON_REALLOC and RAPIDJSON_FREE
Signed-off-by: Gaspard Petit <gaspard.petit@eidosmontreal.com>
2019-02-10 01:15:35 -05:00
Gaspard Petit
ad2e5369b9 Adding a single customization point that ensures all allocations within rapidjson can be performed with a custom memory allocator; Introduces the macros RAPIDJSON_MALLOC, RAPIDJSON_REALLOC, and RAPIDJSON_FREE.
Signed-off-by: Gaspard Petit <gaspard.petit@eidosmontreal.com>
2019-02-10 00:32:26 -05:00
Milo Yip
b94c2a1203 Adding swap() for GenericMember 2019-02-08 11:39:25 +08:00
Milo Yip
0739a3e88b Fix gcc compilation error in sortkeys 2019-02-06 20:35:20 +08:00
Milo Yip
f595f8a6a5 Update sortkeys.cpp 2019-02-06 19:59:09 +08:00
Milo Yip
1892013216
Merge pull request #1421 from HomeControlAS/sort_by_name_example
added example for sorting keys
2019-02-06 19:52:54 +08:00
Milo Yip
79a6dabd08
Merge pull request #1439 from ylavic/schema_pointer_allocator
Use the allocator of the Schema for its Pointer.
2019-02-06 19:31:03 +08:00
Milo Yip
93cb84a7bb
Merge pull request #1442 from rbilovol/cmake-fixup
CMake: remove hardcoded CMAKECONFIG_INSTALL_DIR path
2019-02-06 19:30:43 +08:00
Milo Yip
efad25970e
Merge pull request #1444 from leolchat/patch-1
Correct complexity claim
2019-02-06 19:30:11 +08:00
Léonard Gérard
bf09397285
Correct complexity claim 2019-01-31 22:29:07 -08:00
Ruslan Bilovol
8d272e53a4 CMake: remove hardcoded CMAKECONFIG_INSTALL_DIR path
Currently this path is hardcoded to lib/cmake.
Some distributions have different library path (like lib64).
So reuse LIB_INSTALL_DIR for that to make CMAKECONFIG_INSTALL_DIR
configurable and usable in such distros.

Signed-off-by: Ruslan Bilovol <rbilovol@cisco.com>
2019-01-24 18:38:14 +02:00
ylavic
dbb594bdb3 Use the allocator of the Schema for its Pointer.
The Pointer passed to construct the Schema can be from the stack or any
transient storage, so the copy stored in the Schema must have the same
lifetime/allocator as the Schema itself.
2019-01-10 18:42:16 +01:00
Milo Yip
bfdcf49110
Merge pull request #1426 from ylavic/pointer_less_than
Add "less than" operator to Pointer.
2018-12-19 16:25:09 +08:00
Milo Yip
b56eb28575
Merge branch 'master' into pointer_less_than 2018-12-18 09:32:09 +08:00
Milo Yip
8549e3db6a
Merge pull request #1431 from ylavic/pointer_swap
Allow to (std::)Swap two pointers.
2018-12-18 09:31:05 +08:00
ylavic
2ce91b823c Pointer tests now need <algorithm> (for std::swap), but no tabs. 2018-12-17 14:45:23 +01:00
ylavic
a66cf7924c Allow to (std::)Swap two pointers. 2018-12-17 14:33:32 +01:00
ylavic
eb6ee17d2d Speed up Pointer::operator<().
Speed is more important than alphabetical order (which makes few sense in
JSON in general, and with pointers especially). The use case is indexing
in std containers, i.e. O(log n) with rbtree, so the faster comparison
the better.
2018-12-12 22:32:56 +01:00
ylavic
0e34ed43f4 Rework Pointer::operator<() loop.
I must be too dumb to understand the mess MSVC (32bit only) did with the
previous loop, and to figure out how it might have make it never end.
Anyway, hopefully any compiler can grok this new loop...
2018-12-12 15:15:43 +01:00
ylavic
af17f196c6 Unit test for Pointer::operator<(). 2018-12-11 00:19:13 +01:00
ylavic
055f1fa61e Add less than operator to Pointer.
Allows to sort pointers in (std-)containers and/or index by them.
2018-12-10 22:02:25 +01:00
Milo Yip
66eb6067b1
Merge pull request #1425 from ylavic/filereadstream_peek4
Fix off by one in FileReadStream::Peek4()
2018-12-06 23:44:10 +08:00
Milo Yip
b4b0e13b4d
Merge pull request #1424 from ylavic/file_input_streams
Optimize FileReadStream and BasicIStreamWrapper.
2018-12-06 23:43:48 +08:00
Milo Yip
eea3e57bcf
Merge pull request #1416 from ylavic/regex_syntax_noassert
GenericRegex: don't throw/abort on syntax error (unclosed parenthesis).
2018-12-06 23:41:45 +08:00
ylavic
38d25d7458 Fix FileReadStream::Peek4().
Until Read() reaches EOF, Peek4() must not take off by one in
bufferLast_ into account; otherwise a buffer of size exactly 4 always
returns NULL.
2018-12-06 08:38:21 +01:00
ylavic
8aab3db129 Base buffered BasicIStreamWrapper on the original (better performing) FileReadStream algorithm. 2018-12-06 00:21:05 +01:00
ylavic
124e8b6079 Possibly std::ios::binary helps with streams on Windows 2018-12-05 18:35:45 +01:00
ylavic
2498c5776f Optimize FileReadStream and BasicIStreamWrapper.
On (my) linux, perftest reports:
- ~40% gain for FileReadStream (Take() loop),
- ~10% gain for ReaderParse_DummyHandler_FileReadStream.

With the same logic applied to BasicIStreamWrapper, which thus can now
also be created with a user buffer, performances align with those of
FileReadStream (same buffer size).

The "unbuffered" versions (added for FileReadStream) work solely with
the internal peekBuffer (Ch[4]) and are measured in perftest.  When
performances don't matter much, they can avoid the use of large
stack/heap buffers.
2018-12-05 16:43:54 +01:00
seky
d0188462d9 removed std::string and receiving const Value in printIt 2018-12-05 08:24:59 +01:00
seky
c9060b4a5c added example for sorting keys 2018-12-04 22:40:40 +01:00
ylavic
8c14787398 Unit test for invalid GenericRegex (unclosed parenthesis). 2018-12-03 11:49:34 +01:00
ylavic
be96f4d7fb GenericRegex: don't throw/abort on syntax error (unclosed parenthesis). 2018-12-03 11:42:29 +01:00
Milo Yip
30d92a6399
Merge pull request #1413 from ylavic/schema_regex_leak
Fix a memory leak for invalid std::regex in Schema.
2018-12-03 09:53:39 +08:00
Milo Yip
1c5b90f409
Merge pull request #1414 from ylavic/regex_allocator
Use passed in allocator for internal regex parser.
2018-12-03 09:51:50 +08:00
ylavic
3e6956767e Fix a memory leak for invalid std::regex in Schema. 2018-12-01 23:36:45 +01:00
ylavic
b0c96f9baf Use passed in allocator for internal regex parser. 2018-12-01 22:02:48 +01:00
Milo Yip
a63216054d
Merge pull request #1388 from yhager/yhager/clang-7
silence clang-7 self-assign-overloaded warning
2018-11-22 12:30:02 +08:00
Milo Yip
595ed48d54
Merge pull request #1403 from jcmonnin/fix-warning
Fix warning when NDEBUG is defined [-Wunused-variable]
2018-11-22 12:22:41 +08:00
Jean-Claude Monnin
51ca982aa1 Fix warning when NDEBUG is defined [-Wunused-variable]
Because `isPeek()` is side effect free this should not change anything.

The reason this warning is not shown in the unit tests is because the asserts
are always evaluated in the unit test:

#define RAPIDJSON_ASSERT(x) (!(x) ? throw AssertException(RAPIDJSON_STRINGIFY(x)) : (void)0u)
2018-11-21 13:24:06 +01:00
Philipp A. Hartmann
0cc44c82c9
Update test/unittest/pointertest.cpp
Co-Authored-By: yhager <yhager@users.noreply.github.com>
2018-10-31 20:31:04 -07:00
Yuval Hager
a77b49dcb8 silence clang-7 self-assign-overloaded warning 2018-10-26 14:58:57 -07:00
Milo Yip
67fac85e96
Merge pull request #1373 from lelit/issue1368
Add test case on kParseNumbersAsStringsFlag being able to load big ints
2018-10-09 00:20:35 +08:00
Lele Gaifax
91d50c849d Add test case on kParseNumbersAsStringsFlag being able to load big ints
See issue #1368.
2018-10-08 10:21:25 +02:00
Konstantin Käfer
16872af889 Avoid pointer arithmetic on null pointer to remove undefined behavior
The existing checks triggered undefined behavior when the stack was empty (null pointer). This change avoid this:
* If `stackTop_` and `stackEnd_` are null, it results in a `ptrdiff_t` of `0`
* If `stackTop_` and `stackEnd_` are valid pointers, they produce a `ptrdiff_t` with the remaining size on the stack
2018-10-05 09:26:20 +02:00
Milo Yip
663f076c7b
Merge pull request #1362 from jiapengwen/master
fix tutorial error
2018-09-19 12:58:56 +08:00
Milo Yip
2a5e733b6f
Merge pull request #1364 from jcourtat/fixfaq
faq: fix document insertion example
2018-09-19 12:58:14 +08:00
Julien Courtat
68349ed914 faq: fix document insertion example
GenericDocument contructor requires a pointer to an Allocator, but GetAllocator() only
returns a reference.

Signed-off-by: Julien Courtat <julien.courtat@aqsacom.com>
2018-09-18 14:51:12 +02:00
jiapeng.wen
1cfa861d4c fix tutorial error 2018-09-18 10:51:16 +08:00
Milo Yip
c0ca05f6dd
Merge pull request #1329 from pah/fix-noexcept
Add RAPIDJSON_NOEXCEPT_ASSERT
2018-09-11 10:13:09 +08:00
Milo Yip
c2aa79dc88
Merge pull request #1356 from gongminmin/AppVeyor2017
Update appveyor rule to support VS2017.
2018-09-10 16:59:39 +08:00
Milo Yip
783b819e67
Update rapidjson.h 2018-09-10 13:11:17 +08:00
Minmin Gong
a6be583efa Update appveyor rule to support VS2017. 2018-09-09 20:58:02 -07:00
Milo Yip
8a96a95de2
Merge branch 'master' into fix-noexcept 2018-09-10 11:27:45 +08:00
Milo Yip
f5f6052c56
Merge pull request #1327 from gongminmin/FixCompileInVS
Fix the compiling problems in VS
2018-09-10 11:23:26 +08:00
Milo Yip
08b1a8a41e
Merge pull request #1302 from chwarr/min-max-guard
Guard against min/max being macros in reader.h
2018-09-10 11:22:28 +08:00
Milo Yip
81af404b7f
Merge pull request #1284 from mobileben/noexcept-assert
Handle non-throwing exception specifications that can still throw #1280
2018-09-10 11:21:34 +08:00
Milo Yip
73063f5002
Merge pull request #1340 from lelit/issue1336
Wrap all WriteXxx() calls within EndValue()
2018-08-05 19:01:46 +08:00
Lele Gaifax
c9eabf9e13 Extend the test on issue #1336 to cover all basic types 2018-08-05 09:44:15 +02:00
Lele Gaifax
3fc9299b84 Add simple test for issue #1336 2018-08-03 12:34:03 +02:00
Lele Gaifax
11defb7aa4 Wrap all WriteXxx() calls within EndValue(), to ensure a flush after root-level scalar value
This attempts to fix issue #1336.
2018-08-03 12:17:29 +02:00
Milo Yip
6a905f9311
Merge pull request #1331 from JPEWdev/mem-alignment-fix
Fix SIGBUS due to unaligned access
2018-08-01 11:56:25 +08:00
Milo Yip
91df56313b
Merge pull request #1335 from IceTrailer/master
Fixed parentheses in reader.h which were required to prevent the using of max macro
2018-08-01 11:55:44 +08:00
IceTrailer
cd28248611 Fixed parentheses in reader.h which were required to prevent the using of max macro 2018-07-31 22:23:53 +02:00
Veselin Georgiev
748a652f04 Fix SIGBUS due to unaligned access
Update RAPIDJSON_ALIGN() to always align on an 8-byte boundary
unless otherwise overridden.

On some platforms (such as ARM), 64-bit items (such as doubles and
64-bit integers) must be aligned to an 8 byte address, even though the
architecture is only 32-bits. On these platforms, MemoryPoolAllocator
must match the malloc() behavior and return a 8 byte aligned allocation.
This eliminates any alignment issues that may occur at the expense of
additional memory overhead.

Failure to do so caused a SIGBUS signal when calling
GenericValue::SetNull(). The size of the data_ member of the
GenericValue class is 16 bytes in 32-bit mode and its constructor
requires an 8-byte aligned access.

While parsing a JSON formatted string using Document::ParseStream(), a
stack object containing GenericValue items was constructed. Since the
stack was 8-byte aligned, the constructor calls would succeed. When the
lifetime of the object ends, SetObjectRaw() is invoked. This triggered
an allocation with 4-byte alignment to which the previously 8-byte
aligned GenericValue array was copied. After this, any call to a
GenericValue API that triggered the constructor and thus the placement
new operation on the Data type member would trigger a SIGBUS.

Signed-off-by: Veselin Georgiev <veselin.georgiev@garmin.com>
Signed-off-by: Joshua Watt <Joshua.Watt@garmin.com>
2018-07-31 09:02:26 -05:00
Philipp A Hartmann
f54f6b5aa9 Add RAPIDJSON_NOEXCEPT_ASSERT
This is an alternative implementation to #1284 to handle
asserts in noexcept contexts.

Closes #1280.
2018-07-18 12:02:24 +02:00
Minmin Gong
ff76343336 Update the code to adapt the new gtest. 2018-07-16 20:36:20 -07:00
Milo Yip
2bbd33b332
Merge pull request #1323 from pah/fix-memaccess
Fix warnings/errors on GCC 7/8 (-Wclass-memaccess, -Wsign-conversion, -Wformat-overflow)
2018-07-16 12:22:46 +08:00
Philipp A Hartmann
152511689b Suppress -Wformat-overflow warning/error
GCC 7 and later warn about overflow/truncation when using
sprintf and related functions with fixed-size buffers.

Suppress the warning in schematest.cpp.
2018-07-15 16:02:03 +02:00
Philipp A Hartmann
a26267d16d Fix -Wsign-conversion warnings/errors
GCC 8 (incorrectly) warns about sign conversions in (constant)
array size expressions:

error: conversion to 'long unsigned int' from 'int' may
change the sign of the result [-Werror=sign-conversion]
     char schemaBuffer_[128 * 1024];

Make these expressions unsigned by adding a 'u' suffix to
the first operands.
2018-07-15 16:01:02 +02:00
Philipp A Hartmann
fa5963a2f5 Fix -Wclass-memaccess warnings/errors
Recent GCC versions warn about using memcpy/memmove to
write to a class pointer (-Wclass-memaccess).

Avoid the warnings by casting to void* first.

Closes #1086.
Closes #1205.
Closes #1246.
2018-07-15 14:20:38 +02:00
Milo Yip
4b4583bdbe
Merge pull request #1320 from AnomalRoil/master
Removing always true if condition
2018-07-12 23:31:19 +08:00
Yolan Romailler
93331cb0cd Removing always true if condition 2018-07-12 15:13:19 +02:00
Christopher Warrington
960b9cfd19 Guard against min/max being macros in reader.h
Sometimes, particularly when Microsoft's windows.h is included, min/max
are defined as macros, interfering with use of
std::numeric_limits::min() and the like.

To guard against this, the function name is wrapped in an extra set of
parenthesis, which inhibits function-style macro expansion.

This is a similar commit to 6e38649ec6, but fixes uses of
std::numeric_limits added after that commit, like those introduced in
2ea43433e2.
2018-07-10 11:08:41 -07:00
Milo Yip
129d19ba7f
Merge pull request #1312 from erikfroseth/issue-1308
Detect C++11 features for Developer Studio
2018-07-03 20:28:24 +08:00
Erik Froseth
3e255af03a Detect C++11 features for Developer Studio
This patch enables various C++11 features if the code is compiled with
Developer Studio compiler version 5.14 or higher.
2018-07-03 13:02:45 +02:00
Milo Yip
b81438ea96
Merge pull request #1307 from moretromain/preprocessor_cleanup
Rename a few internal preprocessor macros to avoid naming conflicts
2018-07-03 10:34:32 +08:00
Tim Miller
fdd2db930f Updated google test to latest commit 2018-07-02 08:30:17 -04:00
Romain Moret
4595cc488e Rename a few internal preprocessor macros to avoid potential naming conflicts 2018-07-02 13:24:18 +02:00
Milo Yip
7e68aa0a21
Merge pull request #1252 from StilesCrisis/issue-1251-test
Unit Test: Parsing "128.74836467836484838364836483643636483648e-336" causes a crash
2018-06-19 12:43:54 +08:00
Milo Yip
c511ce303f
Merge pull request #1250 from StilesCrisis/issue-1249-test
Unit Test: Parsing "0e100" in full precision mode causes UB
2018-06-18 23:54:53 +08:00
Milo Yip
6cc3910a10
Merge pull request #1290 from abolz/fix-strtod
Fix strtod
2018-06-17 23:20:45 +08:00
abolz
7101911d9b Run all the new tests in full-precision mode only
until I know what the normal-precision algorithm really does...
2018-06-16 15:23:44 +02:00
abolz
319944a11a Disable failing test for now 2018-06-16 14:55:07 +02:00
abolz
a757a2aeb8 Add more tests
Some more need to be fixed.
2018-06-16 14:31:48 +02:00
abolz
179277817d Add a test for BigInteger::operator<< 2018-06-16 13:48:33 +02:00
abolz
a0f9c5fc46 [Debug - clean up] 2018-06-16 12:32:17 +02:00
abolz
879ae853fe Fix offset computation in BigInteger::operator<< 2018-06-16 09:41:04 +02:00
abolz
8b98f4a782 Workaround incorrect rounding in MSVC 2018-06-16 09:40:40 +02:00
abolz
a2813b6739 Limit exponents 2018-06-15 17:10:36 +02:00
abolz
6cd5cd7b94 [Debug - Initialize variable] 2018-06-15 16:01:52 +02:00
abolz
292f787c04 [Debug] 2018-06-15 15:10:50 +02:00
abolz
695c9cb976 Use C macros with the correct header instead of std::numeric_limits and static_cast
=D
2018-06-15 14:06:14 +02:00
abolz
1d636de81e Fix another signed/unsigned warning 2018-06-15 13:53:48 +02:00
abolz
a2a7d97b3b Use std::numeric_limits instead of macros 2018-06-15 13:50:19 +02:00
abolz
fc85fbeef0 Fix implicit signed/unsigned conversion and a small glitch in the error computation - part 2 2018-06-15 13:44:43 +02:00
abolz
16c97cd7c5 Fix implicit signed/unsigned conversion and a small glitch in the error computation 2018-06-15 13:44:15 +02:00
abolz
2ea43433e2 Fix bogus gcc warning 2018-06-15 13:41:44 +02:00
abolz
a78c8e3a4f Add more tests (which need to be fixed) 2018-06-15 12:59:39 +02:00
abolz
cb009f3050 Return infinity if binary exponent is too large 2018-06-15 12:59:05 +02:00
abolz
7acbb87c2b Some more tests 2018-06-15 11:39:45 +02:00
abolz
4e9b4f6d6a Return 0 if binary exponent is too small 2018-06-15 11:32:32 +02:00
abolz
f5e5d47fac Properly test for overflow
Do not use an approximation to do this. Instead check if the result is Inf.
2018-06-15 11:29:48 +02:00
abolz
d83d2ba260 Trim all zeros from input
If the buffer only contains zeros, return 0.
2018-06-15 10:46:45 +02:00
abolz
c59ecc857d Replace unsigned with signed integer arithmetic in strtod 2018-06-15 10:44:10 +02:00
abolz
29b6c9b7dc Add assertions to check preconditions of functions and unsigned integer arithmetic 2018-06-15 10:35:31 +02:00
abolz
80dba56aca Add tests for issues with string-to-double conversions (#849, #1249, #1251, #1253, #1256, #1259) 2018-06-15 10:15:45 +02:00
Milo Yip
01c71740cd
Merge pull request #1287 from Nekto89/msvc_config
MSVC: Autodetect RAPIDJSON_HAS_CXX11_NOEXCEPT, RAPIDJSON_HAS_CXX11_TYPETRAITS
2018-06-14 11:04:15 +08:00
Marian Klymov
2b0843037e Autodetect RAPIDJSON_HAS_CXX11_NOEXCEPT and RAPIDJSON_HAS_CXX11_TYPETRAITS for Visual Studio 2018-06-13 20:43:16 +03:00
Benjamin Lee
5b0610a74f Handle non-throwing exception specifications that can still throw #1280 2018-06-06 23:34:51 -07:00
Milo Yip
c0daf75475
Merge pull request #1279 from bogaotory/master
Avoid `MissingProperty` Error from `SchemaValidator` when a none-zero length value is given as `default` for the property
2018-06-02 15:20:05 +08:00
bogaotory
6f7dcb30d9 again, in relation to solving issue #784, use SizeType-typed variable to indicate a none-zero length string has been given in the schema as default value for the json property; added an unittest Object_Required_PassWithDefault 2018-06-01 21:16:26 +01:00
bogaotory
fa98b5b4b6 in relation to solving issue #784, this commit enables the schema to recognise the "default" property, and avoids a missing property error when a default is given in the schema 2018-06-01 11:07:53 +01:00
Milo Yip
af223d44f4
Merge pull request #1261 from fmalita/exponent-underflow
Prevent int underflow when parsing exponents
2018-05-20 13:42:13 +08:00
Florin Malita
8269bc2bc2 Prevent int underflow when parsing exponents
When parsing negative exponents, the current implementation takes
precautions for |exp| to not underflow int.

But that is not sufficient: later on [1], |exp + expFrac| is also
stored to an int - so we must ensure that the sum stays within int
representable values.

Update the exp clamping logic to take expFrac into account.

[1] https://github.com/Tencent/rapidjson/blob/master/include/rapidjson/reader.h#L1690
2018-05-15 22:48:07 -04:00
John Stiles
1329cdecce Added test for issue #1251 2018-05-11 15:57:11 -07:00
John Stiles
cad3805737
Update readertest.cpp 2018-05-11 15:19:11 -07:00
John Stiles
f7d2cd2228 added test for parsing 0e100 2018-05-11 15:16:46 -07:00
John Stiles
532cba1422
Merge pull request #4 from Tencent/master
Merge
2018-05-11 14:26:21 -07:00
Milo Yip
a091035846
Merge pull request #1240 from ksergey/FIX_Reader
Added const for Reader methods
2018-05-04 10:11:59 +08:00
Sergey Kovalevich
d0a78bf56e Added const for Reader methods 2018-05-03 15:11:16 +03:00
Milo Yip
b32cd9421c
Merge pull request #1217 from tresorit/win-clang-fix
Fix compilation on windows with clang
2018-04-25 10:13:55 +08:00
Milo Yip
ed72564e31
Merge pull request #1231 from steveire/patch-1
Use rvalue refs with clang-cl
2018-04-25 10:13:19 +08:00
Stephen Kelly
73b8774ab1
Use rvalue refs with clang-cl 2018-04-24 22:55:47 +01:00
Milo Yip
5fd779d91f
Merge pull request #1222 from DynonAvionics/adjustable_default_chunk_capacity
Allow user configuration of default chunk capacity.
2018-04-18 11:35:00 +08:00
Ryan Morris
6f587466a1 Added macro RAPIDJSON_ALLOCATOR_DEFAULT_CHUNK_CAPACITY to allow default chunk capacity to be lowered for embedded devices with < 64k stack sizes 2018-04-17 12:53:23 -07:00
Zoltan Kovago
0fdd8040ce fix compilation on windows with clang 2018-04-09 15:47:17 +02:00
Milo Yip
8022a5f79c
Merge pull request #1210 from foxtacles/fix-missing-remote-ref-p
add remote ref pointer to schemaMap_
2018-03-27 10:37:09 +08:00
Christian Semmler
9640209f78 remove superfluous typename 2018-03-26 13:29:52 +02:00
Christian Semmler
f8c8c32b42 fix C++03 compatibility 2018-03-26 13:16:31 +02:00
Christian Semmler
c8530d022f add test case for remote ref issue 2018-03-26 13:04:35 +02:00
Christian Semmler
8a6c345bcc add remote ref to schemaMap_ 2018-03-23 23:33:20 +01:00
Milo Yip
67a17cfdbc
Merge pull request #1207 from vim2meta/master
Ensure a preprocessor directive is only applied to MSVC.
2018-03-20 14:46:33 +08:00
John
de6681e295 ensure the pragma is only applied to MSVC 2018-03-19 15:18:08 -04:00
Milo Yip
f0177eb936
Merge pull request #1203 from KuangLei/doc_AddingWriter
Adding a few missing includes in the doc
2018-03-17 00:01:42 +08:00
KLsz
f9c9339761 Adding a few missing includes 2018-03-16 23:50:17 +08:00
Milo Yip
0f96b5605a
Merge pull request #1202 from Sumoren/msc_long_part2
Change long/ulong as int/uint on MSC unit tests to be more inline wit…
2018-03-15 10:10:58 +08:00
MaximeBF
27424d5c09 Change long/ulong as int/uint on MSC unit tests to be more inline with other templated functions unit tests 2018-03-14 08:44:00 -04:00
Milo Yip
d79533c65a
Merge pull request #1199 from kachanovskiy/master
Fixes #1198
2018-03-13 10:43:18 +08:00
sergey kachanovskiy
2e5dcceda0 Fixes #1198 2018-03-12 16:11:09 +01:00
Milo Yip
3b638e6715
Merge pull request #1191 from Sumoren/msc_long
Support long and unsined long as int and unsigned on Microsft platforms
2018-03-09 11:33:12 +08:00
MaximeBF
a37f9d1ecd Fix unsigned long as unsigned unit test 2018-03-08 07:33:26 -05:00
MaximeBF
a040fc3347 Add unittest for long as int in MSC platforms 2018-03-08 07:28:51 -05:00
MaximeBF
294a5aca8f Support long and unsined long as int and unsigned on Microsft platforms 2018-03-06 11:17:04 -05:00
Milo Yip
8bf4f7b97c
Merge pull request #1188 from Martinfx/master
Fix warnings: dereference of null pointer
2018-03-04 17:59:45 +08:00
maficccc@gmail.com
72481d5a04 Fix warnings Dereference of null pointer 2018-03-03 00:08:11 +01:00
Milo Yip
9dfc437477
Merge pull request #1182 from Romain-Geissler-1A/ignore-gcc-8-warnings
Ignore GCC 8 warnings.
2018-02-22 09:24:02 +08:00
Milo Yip
91cd123137
Merge pull request #1181 from luzpaz/misc-typos
Misc. typos
2018-02-22 09:23:00 +08:00
Romain Geissler
54dab1eebb Ignore GCC 8 warnings. 2018-02-19 12:52:16 +01:00
luz.paz
915218878a Misc. typos
Found via `codespell -q 3` in  downstream https://github.com/BlueBrain/Brayns
2018-02-19 06:42:52 -05:00
Milo Yip
49562271be Fix Windows build 2018-02-13 15:08:20 +08:00
Milo Yip
59181a052f Revert "Fix API constness"
This reverts commit 0d2580f1f0a24d24c0e015d01fc9567a7365ce7e.
2018-02-13 12:27:25 +08:00
Milo Yip
0d2580f1f0 Fix API constness
Fix #1014
2018-02-13 12:20:08 +08:00
Milo Yip
a1909a9427
Merge pull request #1179 from Tencent/issue1153_rawvalueencoding
Add transcoding/validation to Writer::RawValue()
2018-02-13 12:20:34 +08:00
Milo Yip
966987625c Add transcoding/validation to Writer::RawValue()
Fix #1152
2018-02-13 10:58:41 +08:00
Milo Yip
e2d0437a9c Fix false alarm from clang-tidy
Fix #1174
2018-02-12 17:38:46 +08:00
Milo Yip
82b5c42567 Fix Compile error because of -Werror=effc++ is on
Fix #1170
Also fixed C++03 problem for using nullptr.
2018-02-12 13:14:59 +08:00
Milo Yip
672e7dd373 Fix invalid type in Pointer
Fixed https://github.com/miloyip/rapidjson-gitbook/issues/1
2018-02-12 10:16:27 +08:00
Milo Yip
daabb88e00
Merge pull request #1068 from yurikhan/violationDetails
Schema violation details
2018-01-26 11:26:27 +08:00
Milo Yip
7641af690e
Merge pull request #1122 from svart-riddare/issue-1108
Suggestion for issue #1108
2018-01-26 10:59:11 +08:00
Milo Yip
cdc899a3f3
Merge pull request #1124 from DerDakon/CMake-cleanup
CMake cleanups
2018-01-26 10:33:30 +08:00
Milo Yip
fc7cda78a9 Fix -Werror=effc++
#1164
2018-01-16 10:35:25 +08:00
Milo Yip
b1e556d713
Merge branch 'master' into violationDetails 2018-01-13 22:34:58 +08:00
Milo Yip
03f5de9d7e
Merge pull request #1065 from yurikhan/invalidSchemaPointer
Fix reported violated schema pointer when that schema is remote
2018-01-13 21:17:56 +08:00
Milo Yip
9338148f5f
Merge pull request #1161 from xiaoPierre/master
Bug when switching to std regex
2018-01-13 21:13:50 +08:00
Milo Yip
a735badbd0
Merge pull request #1162 from Tencent/travis
Fix Travis build due to clang noexcept issue in unittest
Fix #1159
2018-01-13 13:15:54 +08:00
Milo Yip
d48290e387 Another try to fix travis build 2018-01-13 12:51:24 +08:00
Milo Yip
62e785babf Merge branch 'master' into travis 2018-01-13 12:44:22 +08:00
Milo Yip
0d95d58f8b Try to fix travis build 2018-01-13 12:37:01 +08:00
xiaoPierre
b8c12c9ccd Bug when switching to std regex
I could not switch to std regex after defining the two variables as in documents. Then I try to fix it in schema.h.
2018-01-11 17:45:35 +01:00
Milo Yip
6043ad8688
Merge pull request #1138 from Tencent/archiver_example
Add archiver example
2018-01-10 10:46:19 +08:00
Milo Yip
83f149e70e
Merge pull request #1148 from lelit/fix-filewritestream-doc
Fix FileWriteStream doc
2018-01-03 17:15:00 +08:00
Milo Yip
a7f687fdf8
Merge pull request #1153 from Haffon/master
GetParseOffset
2017-12-30 23:59:31 +08:00
Haffon
7dfeee862d
GetParseOffset to GetErrorOffset 2017-12-28 16:32:26 +08:00
Haffon
53eadd218d
GetParseOffset to GetErrorOffset 2017-12-28 16:31:26 +08:00
Lele Gaifax
20d44d9c44 Fix FileWriteStream doc 2017-12-22 19:24:15 +01:00
Milo Yip
802ece6d7c
Merge pull request #1147 from DrumMeister/master
Fix uninitilized member Reader::state_
2017-12-22 11:05:20 +08:00
sjaques
9bfa0bb567 Fix uninitilized member Reader::state_ 2017-12-21 13:40:28 +01:00
Milo Yip
f2a28ee472 Add archiver example
A simple (de)serialization framework using DOM and SAX API
2017-12-13 21:53:18 +08:00
Milo Yip
87d4e07ffd
Merge pull request #1137 from pah/fixes/1131-iterator-deprecation
Avoid inheritance from std::iterator
2017-12-13 10:52:20 +08:00
Philipp A. Hartmann
d75bb90a5d Avoid inheritance from std::iterator
Instead of inheriting from the deprecated std::iterator
template, define the member typedefs needed for
std::iterator_traits directly.

Closes #1131.
2017-12-12 21:16:07 +01:00
Milo Yip
7caa4b2165
Merge pull request #1129 from thorade/patch-1
ignore DS_Store files
2017-12-05 11:08:09 +08:00
Matthis Thorade
79d5e23673
Delete .DS_Store 2017-12-04 13:19:14 +01:00
Matthis Thorade
80079f1fae
Delete .DS_Store 2017-12-04 13:19:05 +01:00
Matthis Thorade
195dc90d27
Delete .DS_Store 2017-12-04 13:18:51 +01:00
Matthis Thorade
25c1b78f3c
ignore DS_Store files 2017-12-04 13:15:01 +01:00
Étienne Dupuis
44f2f9aa53 Added relevant unit tests for issue #1108 suggested improvement. 2017-11-27 10:38:01 +01:00
Rolf Eike Beer
ff59b6179d CMake: automatically handle C++11 settings if possible 2017-11-24 17:00:53 +01:00
Rolf Eike Beer
4c9a28a28e CMake: do not pass -march=native or -mcpu=native when crosscompiling 2017-11-24 16:58:42 +01:00
Rolf Eike Beer
4e1c7363cc CMake: avoid neeless variable expansion
CMake will automatically expand strings that are variable names in if().
2017-11-24 16:58:42 +01:00
Étienne Dupuis
86e280f636 Solves #1108. The default copy constructor of GenericPointer will use the allocator of the copied object. The extra copy constructor that takes an allocator as a parameter is distinct if someone really wants to create a copy with a null allocator. 2017-11-23 09:16:20 +01:00
Milo Yip
17ae6ffa85
Merge pull request #1110 from martinlindhe/master
fix some typos
2017-11-04 22:32:21 +08:00
Martin Lindhe
8684c9960d fix some typos 2017-11-04 10:32:02 +01:00
Milo Yip
5aa79b7272 Merge pull request #1105 from clach04/issue_1104_solaris_fread
Fix issue #1104 Solaris compilation errors fread()/fwrite()
2017-10-27 17:12:55 +08:00
clach04
1be14d04a0 Fix issue #1104 Solaris compilation errors fread()/fwrite()
Explicit std name space for fread() and fwrite().
2017-10-26 21:19:54 -07:00
Milo Yip
75a71441d9 Merge pull request #1102 from m-tayel/1019-proposed-fix
Fixed typo in CMake file
2017-10-26 16:25:27 +08:00
M.Tayel
f4b1f761f3 Fixed typo in CMake file 2017-10-24 12:25:47 +02:00
Milo Yip
7dddd05462 Merge pull request #1070 from KaitoHH/line-col
Add feature of locating line and column number of error
2017-10-20 17:50:48 +08:00
Milo Yip
93f6cf4e8c Merge pull request #1081 from datatypevoid/patch-1
chore: correct spelling
2017-10-20 17:47:41 +08:00
Milo Yip
bf822593ee Merge pull request #1083 from piotr-kaminski-intel/master
Removing Klocwork issues from schema.h
2017-10-20 17:47:13 +08:00
Milo Yip
3c07cecdb8 Add anchors to Schema.md 2017-10-20 11:16:44 +08:00
Milo Yip
db305dcf21 Fix schema.md TOC 2017-10-20 10:33:37 +08:00
Milo Yip
4db8c3da11 Merge pull request #1098 from h46incon/MemberCapacity
Add MemberCapacity() and MemberReserve() interface for object type.
2017-10-20 10:27:23 +08:00
h46incon
a8e9990603 Add MemberCapacity() and MemberReserve() interface for object type. 2017-10-19 20:41:27 +08:00
Milo Yip
7d424c0bbc Merge pull request #1092 from m-tayel/1019-proposed-fix
enable cross compiling by adding option to remove -march/-cpu
2017-10-17 10:38:07 +08:00
M.Tayel
7bd9b5a1ad enable cross compiling by adding option to remove -march/-cpu 2017-10-16 15:01:27 +02:00
piotr-kaminski-intel
bb99ccb030 Init variable in the constructor
line 358:
'this->notValidatorIndex_' might not be initialized in this constructor.
2017-10-10 14:09:23 +02:00
Milo Yip
d71ad00643 Merge pull request #1079 from captaincrutches/cmake-include-dir
Make RapidJSON_INCLUDE_DIR non-blank in Config.cmake
2017-10-09 12:44:25 +08:00
Captain Crutches
495266271f Use SOURCE_DIR instead of CMAKE_DIR for build tree 2017-10-08 23:43:18 -04:00
Milo Yip
f64b773007 Partially fix #1077 2017-10-09 11:33:55 +08:00
Milo Yip
d5c1be5a0f Merge pull request #1082 from svart-riddare/regex-allocator
Use schema allocator for regex
2017-10-09 11:17:30 +08:00
piotr-kaminski-intel
b217cc640c Removing Klocwork issues from schema.h
Removing Klocwork static code analysis critical issues:

line 358:
'this->notValidatorIndex_' might not be initialized in this constructor.
line :412
Pointer 'schemaDocument' checked for NULL at line 412 may be passed to function and may be dereferenced there by passing argument this to function 'CreateSchema' at line 419. Also there are 7 similar errors on lines 467 479 511 523 533 538 549.
2017-10-07 00:50:55 +02:00
Étienne Dupuis
6e08e29425 Initialized regex with schema allocator. 2017-10-05 11:39:21 +02:00
David Newman
f0391747e6 chore: correct spelling 2017-10-03 23:26:19 -04:00
Captain Crutches
84ca485e51 Make RapidJSON_INCLUDE_DIR non-blank in Config.cmake 2017-10-02 20:39:40 -04:00
Yuri Khan
8c182e51e7 Flatten allOf keyword violations 2017-09-30 20:16:03 +07:00
Yuri Khan
8353e868d5 Move schema violation docs into Schema chapter 2017-09-30 19:44:54 +07:00
Yuri Khan
1f75402704 refactor Schema: Keep ErrorHandler reference in Context 2017-09-30 19:05:25 +07:00
KaitoHH
473553bd5a fix gcc & cl warning 2017-09-29 19:13:29 +08:00
KaitoHH
9394b84440 remove unnecessary code 2017-09-29 18:19:41 +08:00
KaitoHH
66541b8926 add unit test for cursorstreamwrapper 2017-09-29 17:24:07 +08:00
KaitoHH
799fdea9fc add cursor wrapper 2017-09-29 15:26:24 +08:00
KaitoHH
143641c75a suppress C4512, C4702 warning 2017-09-29 15:26:18 +08:00
KaitoHH
79d9c71f98 fix stream wrapper initializer
fix initialization warning

add special wrapper for AutoUTFInputStream
2017-09-29 15:24:27 +08:00
KaitoHH
b16ff281f8 Add feature of locating line and column number of error 2017-09-29 15:24:27 +08:00
Milo Yip
2a0bc6062b Update gitbook zh-cn link 2017-09-29 09:53:00 +08:00
Milo Yip
0b8adabab7 Fix #1071 gitbook link 2017-09-29 09:44:05 +08:00
Yuri Khan
a4b62ff61b Update schemavalidator example to demonstrate GetError() 2017-09-24 12:56:55 +07:00
Yuri Khan
384df14e6d Document schema violation format 2017-09-24 12:56:55 +07:00
Yuri Khan
0566716802 Extend schema validation tests to compare error object 2017-09-24 12:56:55 +07:00
Yuri Khan
f716c3bfb5 Report schema violation details (#619) 2017-09-24 12:56:55 +07:00
Yuri Khan
c2371584a0 Keep schema URI in GenericSchemaDocument and internal::Schema 2017-09-23 21:36:07 +07:00
Yuri Khan
2bfd0cc6c7 internal::Schema: Keep pointer for future use 2017-09-23 20:42:39 +07:00
Yuri Khan
379b337444 Add failing test for the case when a remote schema is violated (#1064) 2017-09-16 17:09:08 +07:00
Milo Yip
4c0f0036b5 Update appveyor badge and link 2017-09-14 11:55:31 +08:00
Milo Yip
4a2f2729f1 Change from miloyip/rapidjson to Tencent/rapidjson 2017-09-13 17:03:23 +08:00
Milo Yip
2a53253e72 Merge pull request #1056 from chwarr/assert-enum-lower
Assert Type enum lower bound as well
2017-09-07 10:07:19 +08:00
Christopher Warrington
a683902b2c Assert Type enum lower bound as well 2017-09-06 15:13:20 -07:00
Milo Yip
5db5dd552a Merge pull request #1057 from chwarr/paren-minmax
Guard against min/max being macros in a cross-compiler way
2017-09-06 13:03:52 +08:00
Milo Yip
4bb4926c9b Merge pull request #1055 from chwarr/fix-doc-build-windows
Fix Windows doc build MSBuild error MSB6001
2017-09-06 11:33:45 +08:00
Christopher Warrington
e4c0ecf86b Guard against min/max macros in tests too 2017-09-05 18:27:02 -07:00
Christopher Warrington
6e38649ec6 Guard against min/max being macros in document.h
Sometimes, particularly when Microsoft's windows.h is included, min/max
are defined as macros, interfering with use of
std::numeric_limits::min() and the like.

To guard against this, the function name is wrapped in an extra set of
parenthesis, which inhibits function-style macro expansion.
2017-09-05 18:26:47 -07:00
Christopher Warrington
bbdf5d1d4b Fix Windows doc build MSBuild error MSB6001
When using a MSBuild-based CMake generator like 'Visual Studio 15 2017
Win64', the doc build was failing with the error 'MSB6001: Invalid
command line switch for "cmd.exe". Illegal characters in path.'

This was due to the dependency on Doxyfile*, which wasn't expanded by
CMake.

The fix is to expand this glob in CMake before specifying the custom
command's dependencies.

Partial fix for https://github.com/miloyip/rapidjson/issues/622
2017-09-05 16:58:09 -07:00
Milo Yip
1e46091009 Merge pull request #1051 from gongminmin/master
Specifies the endian of msvc ARM64 configuration.
2017-09-04 10:50:04 +08:00
Milo Yip
e9373fc130 Merge pull request #1052 from Crunkle/master
Fix cross-compilation on certain toolchains
2017-09-04 10:32:55 +08:00
Crunkle
9ce6a7ebb8 Fix processor check when empty 2017-09-02 21:05:00 +01:00
Minmin Gong
f91405801f Specifies the endian of msvc ARM64 configuration. 2017-08-31 23:16:59 -07:00
Milo Yip
f05edc9296 Merge pull request #1034 from bluehero/master
Allow Swap with ValueType
2017-08-07 16:46:52 +08:00
bluehero
f9004b90c5 modify 2017-08-07 13:09:22 +08:00
bluehero
c831675026 modify 2017-08-07 11:58:37 +08:00
bluehero
5fb06596a9 modify 2017-08-07 11:44:27 +08:00
bluehero
8ba1f84f47 modify unittest 2017-08-05 20:39:31 +08:00
bluehero
9eb7bf895c add unittest 2017-08-05 18:12:44 +08:00
bluehero
7c1f208253 modify 2017-08-05 16:53:45 +08:00
bluehero
f7dd496cdd Merge pull request #1 from miloyip/master
Update
2017-08-05 14:06:44 +08:00
Milo Yip
d6305514ff Merge pull request #1030 from bmuzzin/issue1028_natvis
Issue #1028: Visual Studio natvis file.
2017-07-28 10:32:40 +08:00
Bart Muzzin
707fd36afa Issue #1028: Visual Studio natvis file. 2017-07-27 22:17:31 -04:00
Milo Yip
c34e3dfc72 Merge pull request #1018 from miloyip/issue1017_allOfHandler
Fix #1017 allOf keyword fail with Writer handler
2017-07-13 16:57:56 +08:00
Milo Yip
fcd2e1f60c Fix #1017 allOf keyword fail with Writer handler
Gave up using static binding for null handler, because it cannot be
used with arbitrary handler type. Change `OutputHandler handler_` to
pointer type.
2017-07-13 16:07:36 +08:00
Milo Yip
1a77513e6d Merge pull request #1013 from pah/fixes/1010-assert-stringref
GenericStringRef: move assert out of expression
2017-07-11 10:25:47 +08:00
Milo Yip
2d27ce46bc Merge pull request #1012 from pah/fixes/993-doxygen-internals
travis-doxygen.sh: upgrade to Doxygen 1.8.13
2017-07-11 10:24:55 +08:00
Philipp A. Hartmann
70171f9790 GenericStringRef: move assert out of expression 2017-07-10 22:32:18 +02:00
Philipp A. Hartmann
7161894f40 travis-doxygen.sh: upgrade to Doxygen 1.8.13
* Upgrade to the latest Doxygen version 1.8.13
 * Drop unused variable DOXYGEN_BIN
 * Reenable --single-branch (travis-ci/travis-ci#5225 is closed)
2017-07-10 21:32:16 +02:00
Milo Yip
37ea16df9d Merge pull request #1009 from pah/setup/travis-trusty
Travis: Switch to Ubuntu 14.04 (Trusty)
2017-07-10 10:08:51 +08:00
Milo Yip
f624a3037c Merge pull request #1010 from pah/fixes/817-stringref-null
Improve handling of NULL strings
2017-07-10 10:08:21 +08:00
Milo Yip
73df6c9325 Merge pull request #1008 from pah/fixes/989-parseresult
ParseResult: improve bool conversion and add operator!=
2017-07-10 10:07:50 +08:00
Milo Yip
4da20e21c6 Merge pull request #1002 from FluxLemur/patch-1
Tutorial: fix typos in examples and broken links
2017-07-10 10:07:02 +08:00
Philipp A. Hartmann
47c3c1ec9f Improved handling of NULL strings
* Safely assert upon passing NULL string without length
   (requires usage of RAPIDJSON_ASSERT within an expression)
 * Allow using a NULL string together with an explicit length 0
   (GenericStringRef, GenericValue::SetString, ...), see #817
 * Add GenericValue::SetString(StringRefType, Allocator&) overload
 * Add tests for the various cases
2017-07-09 14:46:59 +02:00
Philipp A. Hartmann
f1ba61c7ba unittest.h: change RAPIDJSON_ASSERT to allow usage in expressions 2017-07-09 14:31:29 +02:00
Philipp A. Hartmann
eefb618ec9 Travis: Switch to Ubuntu 14.04 (Trusty) 2017-07-09 11:40:56 +02:00
Philipp A. Hartmann
14218aeb0a ParseResult: improve bool conversion and add operator!=
* Use safe-bool idiom for boolean conversion to avoid accidental
   misuse of ParseResult values (closes #989)
 * Add operator!= to support more comparison expressions
   (previously silently/erroneously used operator bool)
2017-07-09 11:13:31 +02:00
Leo Mehr
3aafe12c91 undo changes to links and some minor changes to make the readme more easily readable 2017-06-30 12:42:06 -04:00
Leo Mehr
0d62f5cd35 Tutorial: fix typos in examples and broken links
In the move example, the code uses `contacts` when the diagrams use
`contact` (no 's')

The code in the example:
```    Value contacts(kArrayType);
    // adding elements to contacts array.
    // ...
    o.AddMember("contacts", contacts, d.GetAllocator());  // deep clone contacts (may be with lots of allocations)
    // destruct contacts.
```
2017-06-29 20:27:23 -04:00
Milo Yip
2f45319b4e Merge pull request #968 from TomaszNo/icc-preprocessor-guard
Intel C++ Compiler preprocessor guard for #pragma intrinsic - diyfp.h
2017-06-28 11:36:55 +08:00
Milo Yip
77ae0b9795 Merge pull request #987 from sledgeh/master
Fixed #985 : Unittest failed with MinGWx64. And few small improvement…
2017-06-28 11:36:06 +08:00
Milo Yip
6a8f672ca1 Merge pull request #994 from Chocobo1/svg
Improve readme.md
2017-06-21 17:01:54 +08:00
Chocobo1
a31a380cb8 Improve readme.md
Add alt text for images
Use https whenever possible
Update URLs
Use tools.ietf.org for RFC7159
Correct indent for sublists
Trim trailing whitespaces
2017-06-21 14:40:46 +08:00
kyb
6e81d49b33 Fixed #985 : Unittest failed with MinGWx64. And few small improvement were done while looking for mistakes.
Problem was because of Windows uses backslashes '\', not Unix '/'
2017-06-15 13:24:01 +03:00
Milo Yip
b596f4e990 Merge pull request #977 from miloyip/issue825_patternProperties
Fix patternProperties & additionalProperties lead to ASSERT
2017-06-09 15:06:11 +08:00
Milo Yip
df6362d450 Fix patternProperties & additionalProperties lead to ASSERT
Fix #825
2017-06-09 10:16:24 +08:00
Milo Yip
342a616a7f Merge pull request #969 from pah/fixes/962-copy-const-strings
Fixup #964 by forwarding copyConstStrings recursively
2017-05-28 14:49:15 +08:00
Philipp A. Hartmann
68c96e987b Fixup #964 by forwarding copyConstStrings recursively
As reported by @Llerd in #962, the `copyConstStrings` parameter
has not been forwarded recursively to the constructors of
object members and array elements.
2017-05-27 10:26:35 +02:00
Milo Yip
33443e63a9 Merge pull request #967 from TomaszNo/storage-class-first
Storage class is not first - encodings.h
2017-05-26 06:25:12 +08:00
Tomasz Noczynski (Linux)
294ad93e30 To avoid Intel C++ Compiler #1879 warnings:
warning #1879: unimplemented pragma ignored: #pragma intrinsic(_BitScanReverse64)
warning #1879: unimplemented pragma ignored: #pragma intrinsic(_umul128)
2017-05-25 14:14:16 +02:00
Tomasz Noczynski (Linux)
77d2fadfb6 If storage class is not specified as first in declaration then Intel C++ Compiler 2017 generates message:
message #82: storage class is not first
2017-05-25 13:21:57 +02:00
Milo Yip
3202b0a3dd Merge pull request #964 from pah/fixes/962-copy-const-strings
GenericValue::CopyFrom: add option to force copying of strings
2017-05-19 09:47:15 +08:00
Philipp A. Hartmann
4ef1ff4fba GenericValue::CopyFrom: add option to force copying of strings
Copying the result of an in-situ parsing into another value/document
currently requires that the original buffer - still holding the strings
from the parsing, outlives the  destination object as well.

In order to obtain a "full" copy of a GenericValue, this commit adds
an optional flag `copyConstStrings` to `CopyFrom`, which then forces
to take a copy of all embedded strings in the source value.

This solves the problem discussed in #962.
2017-05-18 19:11:04 +02:00
Milo Yip
0033268c11 Update tutorial.zh-cn.md
typo
2017-05-12 17:30:33 +08:00
Milo Yip
56b7216efe Fix #949 about -Werror=conversion 2017-05-12 10:32:41 +08:00
Milo Yip
f8eb7bae89 Remove -Weverything
See #930
2017-05-12 10:32:06 +08:00
Milo Yip
b61bbbfe37 Fix #947 -Weffc++ warning 2017-05-11 16:41:26 +08:00
Milo Yip
67b062b3c6 Merge pull request #946 from hwiesmann/master
Add convenience method Key(std::basic_string<Ch> const&) to Writer
2017-05-11 10:04:29 +08:00
Hartwig
568107e178 Add convenience method Key(std::basic_string<Ch> const&) to Writer 2017-05-10 22:56:01 +02:00
Milo Yip
fe2b3603e7 Merge pull request #941 from harrywong/master
Add fallthrough attribute to suppress GCC 7.1 warning
2017-05-04 17:23:38 +08:00
Harry Wong
cba45fe9de Onley apply to GCC 7 2017-05-04 10:32:45 +08:00
Harry Wong
fe19b7b601 Supress implicit fallthrough in GCC 2017-05-04 10:08:48 +08:00
Milo Yip
a13acda972 Merge pull request #937 from bytePro17124/patch-1
typo
2017-04-30 13:37:52 +08:00
Matthew Early
4fe02e15f9 typo 2017-04-29 16:07:23 -04:00
Milo Yip
b45c5408d1 Merge pull request #932 from JunHe77/master
Added ARM-Neon support for SIMD.SkipWhitespace*
2017-04-24 16:22:14 +08:00
Milo Yip
d2fce92438 Merge pull request #933 from OlegHahm/minor_fixes
Minor fixes
2017-04-22 10:58:02 +08:00
Oliver Hahm
885b5cd2f9 common notation of empty if/else case 2017-04-21 14:49:30 +02:00
Oliver Hahm
63423eb6f8 fix return values 2017-04-21 14:49:12 +02:00
Alejandro Martinez
2291258bb8 Added ARM-Neon support for SIMD.SkipWhitespace*
Change-Id: Iaf210d029758723a7eeb7f28fc10cab7467889a9
Signed-off-by: Jun He <jun.he@arm.com>
2017-04-21 07:33:17 +00:00
Milo Yip
e6d7247ed9 Merge pull request #924 from lichray/fix-gcc7-warning
Fix a non-type template parameter type mismatch
2017-04-17 14:44:08 +08:00
Milo Yip
c6aec19ed8 Merge pull request #930 from pah/feature/cxx11-static_assert
RAPIDJSON_STATIC_ASSERT: use C++11 static_assert, if available
2017-04-16 17:48:45 +08:00
Philipp A. Hartmann
f93a29bec2 RAPIDJSON_STATIC_ASSERT: use C++11 static_assert, if available 2017-04-14 20:19:16 +02:00
Zhihao Yuan
ec90588c72
Fix a non-type template parameter type mismatch
This issues a warning in gcc7.
2017-04-08 22:51:15 -05:00
Milo Yip
fcd263c61a Merge pull request #923 from miloyip/issue910_casting
Fix #910 incorrect casting
2017-04-07 15:05:47 +08:00
Milo Yip
77f643dc51 Fix #910 incorrect casting 2017-04-07 10:23:30 +08:00
Milo Yip
5d9d0f78b5 Merge pull request #909 from miloyip/issue905_PrettyWriterWriteFlags
Fix #905 unable to set writeFlags for PrettyWriter
2017-03-27 18:26:17 +08:00
Milo Yip
d88be8ef16 Fix #905 unable to set writeFlags for PrettyWriter 2017-03-27 14:05:03 +08:00
Milo Yip
b8f0414b9a Merge pull request #907 from almavi/master
Fixed bug on space hexadecimal encoding
2017-03-25 11:10:48 +08:00
Alejandro Martinez
85500e8c8f Changed error code for invalid special ascii chars, fixed writer tests 2017-03-24 13:37:23 +00:00
Alejandro Martinez
3c6e2cf030 Added unittests for invalid ascii control chars 2017-03-23 10:14:17 +00:00
Alejandro Martinez
da4fd6794c Fixed bug on space hexadecimal encoding 2017-03-22 10:19:54 +00:00
Milo Yip
430e8d4c9b Update schema.zh-cn.md 2017-03-20 11:20:04 +08:00
Milo Yip
3f78a026c7 Merge pull request #903 from shadeware/patch-1
fix typos in doc code
2017-03-20 11:18:56 +08:00
shadeware
a38104a165 fix typos in doc code 2017-03-19 03:03:36 +03:00
John Stiles
1391e42579 Merge pull request #3 from miloyip/master
Merge back
2017-03-17 10:26:47 -07:00
Milo Yip
e5635fb27f Fix #899 2017-03-16 10:46:48 +08:00
Milo Yip
0bc856a747 Merge pull request #894 from belveder79/master
update to create config file which is independent from actual install…
2017-03-16 10:37:07 +08:00
Milo Yip
bba388b4fa Merge pull request #896 from StilesCrisis/writer-flush-api
Writer flush api
2017-03-16 10:36:25 +08:00
Milo Yip
465fab45c1 Merge pull request #897 from StilesCrisis/issue-889-pretty-writer
Issue 889 pretty writer
2017-03-16 10:35:26 +08:00
John Stiles
d5d18cf694 Fix template length optimization issue in PrettyWriter
Missed PrettyWriter in the initial fix for Issue #889
2017-03-14 23:48:41 -07:00
John Stiles
31c6c50ac6 Provide a Flush() API within Writer
This is helpful if you’re writing code that needs to control flush
behavior and you don’t want to pass around your buffer object to each
handler function alongside the writer. Seems like an easy convenience
to add.
2017-03-14 23:28:59 -07:00
John Stiles
c7703f8313 Merge branch 'lookahead-parser-improvements' into writer-flush-api 2017-03-14 23:23:18 -07:00
John Stiles
5b593bba19 Merge pull request #2 from miloyip/master
Merge back
2017-03-14 15:41:53 -07:00
Clemens Arth
b91c515afe update to create config file which is independent from actual install location 2017-03-14 10:27:36 +01:00
John Stiles
f0c108b5c9 Remove all switch 2017-03-13 07:53:37 -07:00
John Stiles
6723e3296a Initialize v_ to placate GCC
v_ has a value assigned to it as part of ParseNext() which happens in
the constructor, but that’s not soon enough for GCC
2017-03-13 07:43:26 -07:00
John Stiles
bf19c1a0be Remove switch
GCC and Clang cannot agree on what constitutes a good switch statement.
2017-03-13 07:40:51 -07:00
Milo Yip
266870df8e Merge pull request #890 from StilesCrisis/issue-889
Issue 889
2017-03-13 15:41:06 +08:00
John Stiles
e7fd707698 Improve LookaheadParser
Fix clang -Wswitch-enum warnings.
Made NextArrayValue() more robust—now handles error state correctly,
will enter error state if an unexpected state is reached.
Made separate states for each value type to simplify getters.
Simplified implementation of skipping arrays and objects.
Skipping an object now works whether you’ve retrieved the key or not.
2017-03-13 00:33:10 -07:00
John Stiles
55f8a32020 Remove broken templatized string length optimization
It did not support char arrays.
2017-03-12 23:47:59 -07:00
John Stiles
84a0356608 Add unit test for Issue 889 2017-03-12 23:40:54 -07:00
StilesCrisis
33a9f58509 Merge remote-tracking branch 'miloyip/master' 2017-03-08 23:55:03 -08:00
Milo Yip
5de06bfa37 Merge pull request #882 from StilesCrisis/lookaheadparser
Lookahead Parser
2017-03-09 09:32:15 +08:00
John Stiles
260e2f372e Merge remote-tracking branch 'refs/remotes/origin/lookaheadparser' 2017-03-08 15:18:53 -08:00
John Stiles
036f300210 Merge remote-tracking branch 'refs/remotes/miloyip/master' 2017-03-08 14:59:11 -08:00
Milo Yip
2df32fbfa0 Merge pull request #881 from TedLyngmo/issue_874_Werror_effcplusplus
Fix -Werror=effc++ errors with GNU 6.3.1
2017-03-08 17:31:45 +08:00
StilesCrisis
8da89f54bd Fix GCC warning 2017-03-08 01:16:19 -08:00
StilesCrisis
d4669bbc8e Add lookahead parser example 2017-03-08 01:08:41 -08:00
Ted Lyngmo
ef22ca1732 Fix -Werror=effc++ errors with GNU 6.3.1
Fix "'MyHandler::type’ should be initialized in the member
initialization list [-Werror=effc++]" errors.

https://github.com/miloyip/rapidjson/issues/874
2017-03-08 09:47:38 +01:00
Ted Lyngmo
c64f378f16 Fix -Werror=effc++ errors with GNU 6.3.1
Fix "'MyHandler::type’ should be initialized in the member
initialization list [-Werror=effc++]" errors.

https://github.com/miloyip/rapidjson/issues/874
2017-03-08 06:25:41 +01:00
John Stiles
237d2f2ea3 Merge remote-tracking branch 'miloyip/master' 2017-03-05 21:27:54 -08:00
Milo Yip
a1fac159d7 Merge pull request #872 from StilesCrisis/issue845_native_strlen
Use native strlen
2017-03-06 09:50:43 +08:00
John Stiles
c4e3d6243c Fix msvc x64 compilation issue
Disambiguate by putting the ENABLEIF on the return value instead of in
the argument list.
2017-03-05 09:50:03 -08:00
John Stiles
cdea825a0b Assert that String() and Key() are given null-terminated strings
Assert in case users attempt to pass a char array to String() or Key()
that is not null terminated; that is not the intended use of the API.
Null terminate your string buffers.
2017-03-05 09:23:03 -08:00
John Stiles
61f8c4ef0d Quoted strings to String() or Key() are auto-sized by template
Same fix as previous commit, to prettywriter
2017-03-05 00:38:34 -08:00
John Stiles
dd97ede84d Quoted strings to String() or Key() are auto-sized by template
No strlen call needs to be made when templates can auto-deduce the
string length. No strlen = faster!

Unfortunately this needs a touch of  SFINAE to allow multiple overrides
to coexist cleanly.
2017-03-05 00:27:08 -08:00
John Stiles
7116c355df Merge remote-tracking branch 'miloyip/master' into issue845_native_strlen 2017-03-05 00:19:19 -08:00
Milo Yip
02de69892c Merge pull request #876 from erikfroseth/issue-875
Remove executable bit
2017-03-03 17:46:07 +08:00
Erik Froseth
d6e9cf5d54 Remove executable bit
Remove the executable bit for various .json files
2017-03-03 09:48:41 +01:00
John Stiles
66b564f385 Remove unneeded change 2017-03-03 00:42:21 -08:00
John Stiles
db8d3bb4d6 Remove unneeded change 2017-03-03 00:42:00 -08:00
John Stiles
6ae50ad6e3 Once again 2017-03-03 00:27:47 -08:00
John Stiles
534f135261 Try again to suppress Valgrind 2017-03-03 00:21:10 -08:00
John Stiles
3f9ebfe9e9 Trivial change to trigger Travis CI 2017-03-02 21:24:03 -08:00
John Stiles
13e99d8d5f Trivial change to re-trigger Travis CI
No-op blank line
2017-02-28 22:58:24 -08:00
Milo Yip
9ae349c622 Merge pull request #871 from StilesCrisis/token-by-token-doc
Token-by-token parser documentation
2017-03-01 14:51:12 +08:00
John Stiles
4b822a41af Attempt to suppress valgrind wcslen error 2017-02-28 19:31:21 -08:00
StilesCrisis
6e2e5c7dbe Specialize StrLen for char/wchar_t
Compilers generally provide a much smarter strlen than ours.
2017-02-28 01:11:30 -08:00
StilesCrisis
f349456bc5 Merge remote-tracking branch 'miloyip/master' into issue845_native_strlen 2017-02-28 01:09:58 -08:00
StilesCrisis
0f3bf99d58 Tiny fix
Make example code var names match API above for consistency
2017-02-28 00:08:30 -08:00
StilesCrisis
5c2bb18772 Add IterativeParse docs 2017-02-28 00:06:02 -08:00
Milo Yip
e6b192a75c Merge pull request #869 from StilesCrisis/writer-key-fix
Writer EndObject missing-value fix
2017-02-28 16:02:52 +08:00
Milo Yip
9cabd6372d Merge pull request #870 from StilesCrisis/null-handler-fix
Null handler fix
2017-02-28 16:02:22 +08:00
StilesCrisis
4643104b8a Fix null handler construction
We should not malloc the null-handler object and cast to OutputHandler;
we need to actually invoke the constructor via placement new.
2017-02-27 23:28:25 -08:00
StilesCrisis
0ec4e86f14 Unit test
Add unit test for Issue 848 (segfault in ~Document)
2017-02-27 23:06:05 -08:00
StilesCrisis
fa84cd18f4 Add matching fix for PrettyWriter
PrettyWriter EndObject will now also assert if called when a key is
missing its matching value.
2017-02-27 22:53:59 -08:00
StilesCrisis
2e9b7b1ae6 Added assertion
Documented existing assertions in EndObject
Added new assertion in EndObject to catch error condition where objects
are ended with a key but no matching value.
2017-02-27 22:44:13 -08:00
StilesCrisis
595b114216 Unit test
Add unit tests expecting an assertion when writing an object with a key
but no value.
2017-02-27 22:36:48 -08:00
StilesCrisis
26e089b9a2 Merge remote-tracking branch 'miloyip/master' 2017-02-27 21:37:20 -08:00
Milo Yip
97e2f7f16f Try fixing Error compilation Ubuntu 14.04 #834 2017-02-28 09:48:36 +08:00
Milo Yip
7f753fe76b Merge pull request #867 from oviradoi/issue858
Fix creating the nuget package with Raggles' fork of CoApp
2017-02-26 22:38:23 +08:00
Milo Yip
82295b1f4d Merge pull request #842 from StilesCrisis/token-by-token-parsing
Token-by-token pull parsing
2017-02-26 22:36:04 +08:00
Milo Yip
a677b85706 Merge pull request #866 from ylavic/patch-1
Missing "internal" namespace for StrLen
2017-02-26 22:32:40 +08:00
oviradoi
5f92c3926b Fix creating the nuget package with Raggles' fork of CoApp 2017-02-24 19:50:36 +02:00
ylavic
b977fd3c9d Missing "internal" namespace for StrLen
include/rapidjson/pointer.h:243:40: error: 'StrLen' was not declared in this scope
         return Append(name, StrLen(name), allocator);
2017-02-24 16:46:53 +01:00
Milo Yip
0eaa0d288c Merge pull request #862 from StilesCrisis/nan-inf-parse-fix
NaN/Inf parse fix
2017-02-24 09:47:11 +08:00
StilesCrisis
ecf3d64293 Merge branch 'nan-inf-parse-fix' into token-by-token-parsing 2017-02-23 00:19:07 -08:00
StilesCrisis
5e785d3db2 Fix parsing of NaN/Inf
A failed half-consume of “NaN” now returns “value invalid” instead of
attempting to consume an “Inf”.
2017-02-23 00:11:12 -08:00
StilesCrisis
c4117c68cc Put in unit tests to catch parser failure
Noticed that the reader could over-consume “NaN” if token terminated in
the middle.
2017-02-22 21:54:31 -08:00
John Stiles
bd4c282d77 Test coverage up
Add more tests! Good for coverage.
2017-02-07 01:08:51 -08:00
John Stiles
0f8389e787 Restored original IterativeParse implementation
Runs about 1-2% faster (original speed) by running in a tight loop, at
the expense of slight code duplication with IterativeParseNext.
2017-02-07 00:02:08 -08:00
John Stiles
488252eca2 Merge remote-tracking branch 'miloyip/master' into token-by-token-parsing 2017-02-06 21:12:52 -08:00
John Stiles
933eb839d9 Merge remote-tracking branch 'miloyip/master' 2017-02-06 21:11:55 -08:00
Milo Yip
0163a53f4a Merge pull request #841 from StilesCrisis/improve-unit-test-reporting
Improved reporting
2017-02-06 09:15:05 +08:00
StilesCrisis
a11ec69796 More C++98 fixes 2017-02-04 01:18:46 -08:00
StilesCrisis
6288d95d1e SimplePullReader C++98 support
std::to_string can’t be used because it requires C++11.
2017-02-04 01:07:00 -08:00
StilesCrisis
4232e407f4 Clean up example code 2017-02-04 00:47:43 -08:00
StilesCrisis
d84d5fe055 Add example SimplePullHandler code
Example code to demonstrate how the token-pulling reader can be used.
2017-02-04 00:41:34 -08:00
StilesCrisis
4394b3bac7 Add LIKELY and UNLIKELY hints
Doesn’t seem to affect timings in perftest on my machine, but it may
help others.
2017-02-04 00:05:34 -08:00
StilesCrisis
82a423db7d Added unit test for pull parsing
New unit test which ensures that IterativeParseNext always generates
exactly one element at a time, and that calling IterativeParseNext on a
complete document is harmless and generates zero events.
2017-02-03 21:12:53 -08:00
StilesCrisis
116f65994b Improve coverage and performance
Further improvement to perftest and hoping to make coveralls happy.
2017-02-03 18:58:37 -08:00
StilesCrisis
5de7258478 Improve performance
Slight performance improvement over previous submission
2017-02-03 17:14:14 -08:00
StilesCrisis
1a7c5ea517 Fix Dev Studio bool-conversion warning 2017-02-03 00:29:43 -08:00
StilesCrisis
20f5caa8f6 Token-by-token pull parsing
Refactored the iterative parser so that users can parse a single JSON
element at a time (invoking the handler one time) and then return
control to the calling code. Call IterativeParseInit to start, and then
call IterativeParseNext to retrieve one JSON element. Use
IterativeParseComplete to check for JSON document completion.
2017-02-02 23:25:29 -08:00
StilesCrisis
6769f3e33e Improved reporting
Add “filename” to the error message when JsonChecker reports an error.
2017-02-02 23:18:07 -08:00
Milo Yip
738864c53c Remove non-ASCII character
Fix #824
2017-01-24 15:08:38 +08:00
Milo Yip
3693e942b7 Fix output character type in writers 2017-01-24 14:54:50 +08:00
Milo Yip
942bb46088 Merge pull request #827 from lichray/fix-signed
Treat signed-unsigned conversions as errors.
2017-01-24 14:35:17 +08:00
Milo Yip
265fb6ee88 Fix #831 RAPIDJSON_HAS_CXX11_RANGE_FOR is error defined 2017-01-24 09:28:52 +08:00
Zhihao Yuan
3cc77d5d63
Treat signed-unsigned conversions as errors. 2017-01-18 18:09:18 -06:00
Milo Yip
835f2f4a79 Update Doxyfile.zh-cn.in
Change internals from English to Chinese
2016-12-31 14:51:07 +08:00
Milo Yip
e61b66c38a Merge pull request #816 from SuperSodaSea/master
Translate doc/internals.md into Chinese
2016-12-31 14:49:51 +08:00
SuperSodaSea
dba9816009 Translate doc/internals.md Part 2 2016-12-31 11:23:05 +08:00
SuperSodaSea
af4ec9b7e9 Translate doc/internals.md Part 1 2016-12-30 23:12:41 +08:00
Milo Yip
03a7391049 Merge pull request #757 from patcheng/feature/fix_clang_warning
added assertion to help suppress clang warnings
2016-12-23 10:00:30 +08:00
Milo Yip
369e07d1c9 Merge pull request #811 from glebov-andrey/improved_new_macro
Improved customization of RAPIDJSON_NEW macro
2016-12-23 09:59:31 +08:00
Andrey Glebov
41ceb8624f - replaced RAPIDJSON_NEW with C++98 compatible version 2016-12-21 14:03:53 +03:00
Andrey Glebov
3f120caeef - replaced RAPIDJSON_NEW calls in fwdtest.cpp 2016-12-21 10:41:06 +03:00
Andrey Glebov
9fe93bb984 - replaced RAPIDJSON_NEW macro with variadic varient 2016-12-21 10:17:25 +03:00
Milo Yip
014097e51a Merge pull request #800 from ivankravets/patch-3
Update version to 1.1.0
2016-11-28 20:18:54 +08:00
Ivan Kravets
ba34c94533 Update version to 1.1.0 2016-11-28 12:53:24 +02:00
Milo Yip
0024592c23 Update sax.zh-cn.md 2016-11-21 09:50:59 +08:00
Milo Yip
bff326fb24 Update sax.md 2016-11-21 09:37:02 +08:00
Milo Yip
eb6831a4c2 Merge pull request #790 from SuperSodaSea/master
修复拼写错误
2016-11-05 14:07:45 +08:00
SuperSodaSea
a077baa9c3 修复拼写错误 2016-11-05 11:55:12 +08:00
Milo Yip
fbcd7acfd3 Merge pull request #788 from miloyip/issue786_CopyFrom
Refactor GenericValue deep-clone constructor
2016-10-31 19:49:47 +08:00
Milo Yip
e07d0e9438 Move GenericValue deep-clone constructor into the class declaration. 2016-10-31 18:28:53 +08:00
Milo Yip
95b346c3ca Refactor GenericValue deep-clone constructor 2016-10-31 18:24:17 +08:00
Milo Yip
d57944fc2b Merge pull request #783 from FrozenGene/master
[POWER][XL Compiler] support IBM PowerPC / ppc64 / ppc64le and XL compiler
2016-10-26 20:27:09 +08:00
Wu Zhao
c4db88a314 support IBM PowerPC / ppc64 / ppc64le and XL compiler
Avoid POWER platform compiling error and support IBM XL C++ compiler on
Linux / AIX.
2016-10-26 17:27:54 +08:00
Milo Yip
381d8f85e7 Merge pull request #782 from miloyip/issue781_aix
Remove empty NumberStream::~NumberStream()
2016-10-26 09:28:38 +08:00
Milo Yip
d7dd4106ea Remove empty NumberStream::~NumberStream()
Fix #781
2016-10-25 18:21:01 +08:00
Milo Yip
d6c8b378d4 Merge pull request #777 from miloyip/issue728_threadsafe
Fix nullHandler allocation bug
2016-10-21 17:35:53 +08:00
Milo Yip
992b7f5f8e Fix nullHandler allocation bug 2016-10-21 12:25:37 +08:00
Milo Yip
fba9ebd9bc Merge pull request #776 from miloyip/issue728_threadsafe
Remove singletons in schema classes
2016-10-20 14:01:32 +08:00
Milo Yip
59bcebbf3d Merge pull request #773 from bluehero/master
use _mm_cmpistri
2016-10-18 14:38:39 +08:00
Milo Yip
bf0cc7bea8 Fixed a bug for SchemaDocument move constructor 2016-10-18 13:53:00 +08:00
bluehero
31ace3b767 use _mm_cmpistri 2016-10-18 12:54:42 +08:00
Milo Yip
7c4e511eb0 Change Schema::GetTypeless() from singleton to instance
Now owned by SchemaDocument::typeless_, and be shared to its
Schema::typeless_
2016-10-18 11:37:15 +08:00
Milo Yip
ddbd2ef05d Restore missing deallocation of GenericSchemaValidator::nullHandler_ 2016-10-18 10:14:00 +08:00
Milo Yip
b963eb447b Change SchemaValidator::GetNullHandler() from singleton to instance. 2016-10-17 18:30:18 +08:00
Milo Yip
97fb9bc85b Merge pull request #770 from miloyip/issue728_threadsafe
Fixed another crash bug in #728
2016-10-17 15:35:01 +08:00
Milo Yip
3b1a037499 Merge pull request #748 from sfinktah/sfinktah-minwindef-fix
Fix for winmindef.h defining min/max macros
2016-10-17 14:29:10 +08:00
Milo Yip
517dd4dbb8 Fix failing to resolve $ref in allOf causes crash in SchemaValidator::StartObject() 2016-10-17 14:25:24 +08:00
Milo Yip
9b6af55525 Merge branch 'master' into issue728_threadsafe 2016-10-17 09:50:18 +08:00
Milo Yip
2363227974 Add Value::Value(float) and static_cast for suppressing clang warning 2016-10-14 22:03:54 +08:00
Milo Yip
8eaa122c27 Update dom.zh-cn.md 2016-10-06 13:32:16 +08:00
Milo Yip
94b36dc97e Merge pull request #763 from miloyip/issue762_move
Remove unncessary std::move()
2016-10-05 17:32:16 +08:00
Milo Yip
3f23397596 Remove unncessary std::move()
Fixes #762
2016-10-05 15:02:31 +08:00
Milo Yip
11df748a3b Revert "Another try for fixing schema.md"
This reverts commit c490d880a3e18d315af0afbe5e8b54c7179d6df0.
2016-10-05 10:21:45 +08:00
Milo Yip
c490d880a3 Another try for fixing schema.md 2016-10-05 09:41:56 +08:00
Milo Yip
a3300bf4b1 Fix schema.zh-cn.md 2016-10-05 09:21:06 +08:00
Milo Yip
ba56498d10 Merge pull request #760 from icechen1/patch-1
FIx typo in documentation
2016-10-05 09:19:38 +08:00
Yu Chen Hou
48f8364f65 FIx typo in documentation
The use of the vertical bar seems to break the rendering of the table in the documentation here:
http://rapidjson.org/md_doc_schema.html

Seems like we can fix it by using html encoding for the vertical bars as described in this post:
http://stackoverflow.com/questions/17319940/how-to-escape-a-pipe-char-in-a-code-statement-in-a-markdown-table/17320389#17320389
2016-10-04 14:07:50 -07:00
Milo Yip
b4dae2b77d Merge pull request #755 from AdamMajer/fix_old_gcc
Fix compilation with older GCC versions
2016-10-01 15:46:21 +08:00
Patrick Cheng
95224aff7d When length is 0, the code does nothing, so skip it completely.
Previously, os.Push(0) would do nothing as well. But with the newly added assertion, is the stack is empty, it will fail the assertion.
2016-09-30 13:44:15 -07:00
Patrick Cheng
91a803d463 Reserve() is sometimes called when stackTop_ is null. The assert is invalid. 2016-09-30 11:12:23 -07:00
Patrick Cheng
9d8df28c1d added assertion to help suppress clang warnings 2016-09-30 10:47:00 -07:00
Adam Majer
cb017cbf5e Fix compilation with older GCC versions
Older GCC versions fail compiling RapidJSON due to a warning

include/rapidjson/reader.h:578: error: suggest a space before ';' or explicit braces around empty body in 'while' statement
: warnings being treated as errors
2016-09-30 17:10:04 +02:00
Milo Yip
ffc7942857 Merge pull request #750 from bennyyip/master
fix #749
2016-09-25 21:30:39 +08:00
BennyYip
6a15e40b6e fix #749 2016-09-25 21:16:26 +08:00
Sfinktah Bungholio
51a31ce006 Fix for winmindef.h defining min/max macros 2016-09-25 20:36:33 +10:00
Milo Yip
7a39172771 Merge pull request #746 from miloyip/issue744_stringbuffergetlength
Add StringBuffer::GetLength()
2016-09-22 19:04:35 +08:00
Milo Yip
5cd62c235d Add StringBuffer::GetLength()
Fix #744
2016-09-22 18:11:22 +08:00
Milo Yip
0761ac126b Remove lambda expression in (pretty)writertest 2016-09-21 21:49:49 +08:00
Milo Yip
f28203c7a1 Fix #741 2016-09-21 11:09:04 +08:00
Milo Yip
185a7cc210 Merge pull request #740 from CreoValis/writer-move-ctor
Move constructor support for Writer
2016-09-20 09:35:33 +08:00
Tallódi Mihály
1a64cd0997 Tests for Writer, PrettyWriter move constructors 2016-09-19 22:13:33 +02:00
Tall??di Mih??ly
62dc1077eb Move constructor support for PrettyWriter 2016-09-19 21:47:27 +02:00
Tall??di Mih??ly
307e021606 Move constructor support for Writer
This also requires turning off the c++98 compatibility checks when building
with clang.
2016-09-19 21:47:27 +02:00
Milo Yip
52682115fb Merge pull request #739 from miloyip/issue728_threadsafe
Refactor regex
2016-09-16 13:36:36 +08:00
Milo Yip
769185d68b Refactor regex
Remove mutable which causes reentrant issue
2016-09-16 12:13:02 +08:00
Milo Yip
328ead0e17 Merge pull request #732 from miloyip/issue731_writerstringassert
Add preconditions in writer and string functions
2016-09-03 23:53:40 +08:00
Milo Yip
3e2172bd52 Add preconditions in writer and string functions 2016-09-03 23:37:00 +08:00
Milo Yip
8979c14fb6 Merge branch 'master' into issue716_parsebyparts 2016-09-03 23:24:56 +08:00
Milo Yip
9f66882898 Merge pull request #730 from myd7349/master
Fix typo in doc
2016-09-02 17:49:20 +08:00
myd7349
6023ed3a0c Fix typo in doc 2016-09-02 17:35:40 +08:00
Milo Yip
cdb3454283 Merge pull request #723 from niukuo/master
fix wrong length in remote schema
2016-09-01 10:04:35 +08:00
niukuo
250cf666d3 fix wrong length in remote schema
Change-Id: Ia96ddf5746f1c18968e9e086f17fe4a24b8480d7
2016-08-31 16:26:27 +08:00
Milo Yip
9bd618f545 Merge pull request #719 from yachoor/remove_broken_assignment
Remove non-compiling assignment operator
2016-08-29 10:30:04 +08:00
Milo Yip
0f9dbe0a9c Defer thread creation in parsebypart example 2016-08-29 10:17:57 +08:00
Janusz Chorko
862c39be37 Explicitly disable copy assignment operator 2016-08-26 21:26:50 +02:00
Janusz Chorko
3b2441b87f Removed non-compiling assignment operator. Fixed #718 2016-08-26 21:17:38 +02:00
Milo Yip
f54b0e47a0 Merge pull request #714 from miloyip/version1.1.0
Version 1.1.0
2016-08-25 15:59:05 +08:00
Milo Yip
17254e090e Version 1.1.0
Change version numbers
Fixed some document linkage
Fix #648
2016-08-25 14:35:17 +08:00
Milo Yip
ab791ae90c Merge pull request #703 from jmallach/master
Fix builds on x32 platform.
2016-08-02 10:47:00 +08:00
Jordi Mallach
323a0dce43 Fix builds on x32 platform.
From the Debian wiki: https://wiki.debian.org/X32Port

X32 is an ABI for amd64/x86_64 CPUs using 32-bit integers, longs
and pointers. The idea is to combine the smaller memory and cache
footprint from 32-bit data types with the larger register set of
x86_64. The 64-bit registers can make computation more efficient,
and with 8 additional registers available, there is less pressure
compared to i386/i686.

rapidjson makes an incorrect assumption in a check for 64 bit
platforms, and uses __LP64__ exclusively. This fix adds an
additional check for __x86_64__ && __ILP32__ defines, as a very
conservative fix. However, the usage of __LP64__ would be a problem
for other "mixed" applications like ARM ILP32, so a better detection
scheme might be needed in the future.
2016-08-01 14:25:50 +02:00
Milo Yip
fedae8552a Remove google analytics 2016-08-01 09:21:31 +08:00
Milo Yip
6d9ab582b2 Fix doxygen build 2016-07-29 15:27:32 +08:00
Milo Yip
319248eb52 Remove disqus in documentation 2016-07-29 14:49:08 +08:00
Milo Yip
c76ebf98de Merge pull request #698 from jseward/master
Add std::string overload to PrettyWriter::Key() when RAPIDJSON_HAS_STDSTRING is #defined
2016-07-27 16:46:31 +08:00
Jamie Seward
78a7ecb946 Add std::string overload to PrettyWriter::Key() when RAPIDJSON_HAS_STDSTRING is #defined
Only String() has the std::string overload currently.
2016-07-26 22:35:46 -07:00
Milo Yip
67d8a99477 Merge pull request #691 from miloyip/issue682_mallocfail
Handle malloc() fail in PoolAllocator
2016-07-23 10:31:55 +08:00
Milo Yip
332b61fe41 Handle malloc() fail in PoolAllocator
Fix #682
2016-07-21 17:25:17 +08:00
Milo Yip
2f751650e2 Merge pull request #690 from fuzhufang/master
optimize FindMember  when use std::string
2016-07-21 11:37:33 +08:00
Milo Yip
99ba17bd66 Merge pull request #689 from miloyip/issue684_flush
Add Flush() for all value types
2016-07-21 10:59:57 +08:00
Milo Yip
db6a6f3f64 Add Flush() for all value types
Fixes #684
2016-07-21 09:33:00 +08:00
fuzhufang
b67ff2fb11 if define RAPIDJSON_HAS_STDSTRING, FindMember use std::string, but it
also use internal::StrLen to get the string lengtht,
when it call FindMember(StringRef(name)).
Now use GenericValue construct it, then can use the std::string.size.
now it will be faster.
2016-07-14 17:50:48 +08:00
Milo Yip
369de87e5d Merge pull request #681 from niukuo/master
fix rapidjson::value::Get<std::string>() may returns wrong data
2016-07-11 16:05:38 +08:00
yiteng.nyt
8c43554de6 fix rapidjson::value::Get<std::string>() may returns wrong data
Change-Id: Ia7325edb437e3039e29223d0ecc4d9c83d824bc0
2016-07-11 12:38:10 +08:00
Milo Yip
5e8a382c19 Merge pull request #674 from sjasonsmith/master
Make GenericSchemaDocument constructor explicit
2016-07-02 21:00:47 +08:00
Jason Smith
899156172d Make GenericSchemaDocument constructor explicit
Prior to this change, a user could incorrectly pass a Document object to
SchemaValidator. This would implicitly construct a SchemaDocument, which
would then be destructed before the validator was used. This caused
unpredictable results including memory corruption and program crashes.
2016-07-01 06:59:07 -07:00
Milo Yip
727e2b958d Merge pull request #673 from sjasonsmith/master
Fix buffer overrun using PutN (closes #672)
2016-07-01 17:44:01 +08:00
Jason Smith
252e8122bf Fix buffer overrun using PutN (closes #672)
Fix inconsistent calling of template functions in PutN in stream.h. When
used with a GenericStringBuffer<<UTF8>, MemoryPoolAllocator>, PutN would call
PutReserve from stream.h, and PutUnsafe from stringbuffer.h. This
resulted in bytes being added to the buffer without allocating space.

This was not an issue when used with the default memory allocator,
because in this case the specialized PutN is used from stringbuffer.h.
2016-06-30 14:18:14 -07:00
Milo Yip
c79958a29b Fix #670 remote schema provider document 2016-06-29 09:48:38 +08:00
Milo Yip
f51d7c9d4b Merge pull request #669 from pah/fixes/666
readertest: Suppress "dangling-else" warning on GCC 7 and later
2016-06-28 09:58:22 +08:00
Philipp A. Hartmann
ad32940da8 readertest: Suppress "dangling-else" warning on GCC 7 and later
GCC 6.x doesn't yet support this warning flag, as reported by
@ragnar-ouchterlony.
2016-06-27 19:05:29 +02:00
Milo Yip
6da92274ae Merge pull request #667 from pah/fixes/666
Fix warnings on GCC 6 and later (closes #666)
2016-06-27 09:58:14 +08:00
Milo Yip
cf7324b466 Merge pull request #660 from andytimes/for-milo
document typo fix and .gitignore update
2016-06-27 09:35:42 +08:00
Philipp A. Hartmann
f6a07692f9 Fix warnings on GCC 6 and later (closes #666)
* document.h
  * suppress -Wterminate on GCC 6.x and later
  * simplify warning handling
* schema.h
  * drop RAPIDJSON_NOEXCEPT from GenericSchemaDocument constructor
    (calls RAPIDJSON_NEW anyway)
  * simplify warning handling
    (avoids RAPIDJSON_POP mismatch on Clang)
* encodingtest.cpp, istreamwrappertest.cpp
  * work around -Wdangling-else
* readertest.cpp
  * suppress -Wdangling-else
2016-06-23 21:42:16 +02:00
Andy Deng
dabbd2b028 gitignore: ignore Doxyfile.zh-cn
Doxyfile.zh-cn is a generated file that we need to ignore.
2016-06-15 11:56:20 +08:00
Andy Deng
2246ef3e6b doc/tutorial-zh-cn: Fix a typo in tutorial 2016-06-15 11:53:23 +08:00
Milo Yip
1c087b77cb Fix #650 SAX documentation bug 2016-06-15 09:46:30 +08:00
Milo Yip
b34f18525e Fix tutorial bug 2016-06-15 09:41:56 +08:00
Milo Yip
62ff0a9df9 Merge pull request #646 from efidler/ubsan
Fix undefined behaviour
2016-06-15 09:35:12 +08:00
Eli Fidler
8c4059766e test for no-double-promotion instead of just checking compiler version 2016-06-14 07:01:41 -07:00
Eli Fidler
21acc56d57 range check in IsLosslessFloat to avoid undefined double->float cast
UBSAN gave in Value.IsLosslessFloat:
include/rapidjson/document.h:981:38: runtime error: value 3.40282e+38 is outside the range of representable values of type 'float'
2016-06-14 07:01:41 -07:00
Eli Fidler
c52cec7e51 fix undefined double to uint64_t cast
note that std::numeric_limits<uint64_t>::max() and
std::numeric_limits<int64_t>::max() aren't exactly representable in a
double, so we need to be strictly less to be definitely lossless

UBSAN gave during Value.IsLosslessDouble test:
include/rapidjson/document.h:955:42: runtime error: value 1.84467e+19 is outside the range of representable values of type 'unsigned long'
2016-06-14 07:01:41 -07:00
Eli Fidler
05f0592b34 avoid shift out-of-range error
UBSAN gave in Regex.Unicode test:
include/rapidjson/encodings.h:157:28: runtime error: shift exponent 32 is too large for 32-bit type 'int'
2016-06-14 07:01:41 -07:00
Eli Fidler
9dcf51c3a1 avoid shift out-of-range error
UBSAN gave during Reader.ParseNumber_FullPrecisionDouble test:
include/rapidjson/internal/strtod.h:149:11: runtime error: shift exponent 46 is too large for 32-bit type 'int'
2016-06-14 07:01:41 -07:00
Eli Fidler
df9b45a656 avoid division by zero, which is undefined behavior
UBSAN gave:
runtime error: division by zero
2016-06-14 07:01:41 -07:00
Eli Fidler
760ea4316c avoid signed-integer underflow, which is undefined behavior
maybe these tests should just be deleted?

UBSAN gave:
runtime error: signed integer overflow: -9223372036854775808 - 1 cannot be represented in type 'long'
runtime error: signed integer overflow: -9223372036854775808 - 2 cannot be represented in type 'long'
2016-06-14 07:01:41 -07:00
Eli Fidler
be1eedf808 avoid signed-integer overflow, which is undefined behavior
UBSAN gave for test/unittest/itoatest.cpp:87:
runtime error: signed integer overflow: 4611686018427387904 * 2 cannot be represented in type 'long'
2016-06-14 07:01:41 -07:00
Eli Fidler
61637d3382 avoid passing a null pointer to memcpy
UBSAN on Clang/Linux gave:
runtime error: null pointer passed as argument 2, which is declared to never be null
/usr/include/string.h:43:45: note: nonnull attribute specified here
2016-06-13 07:24:26 -07:00
Eli Fidler
8074b722f0 avoid reference to null pointer and member access within null pointer
UBSAN gave issues with the typeless Schema:
runtime error: reference binding to null pointer of type 'rapidjson::GenericSchemaDocument<rapidjson::GenericValue<rapidjson::UTF16<wchar_t>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >, rapidjson::CrtAllocator>'
and
runtime error: member access within null pointer of type 'AllocatorType' (aka 'rapidjson::CrtAllocator')
2016-06-13 07:24:26 -07:00
Eli Fidler
fe550f3866 avoid array index out-of-bounds
UBSAN gave "runtime error: index 13 out of bounds for type 'const uint32_t [10]'"
2016-06-13 07:24:26 -07:00
Eli Fidler
5c77c9248c with recent clang, this triggers -Wunevaluated-expression
specifically, "expression with side effects has no effect in an unevaluated context"
2016-06-13 07:24:26 -07:00
Eli Fidler
035271091f with recent clang, when expected is false, this code triggers -Wunreachable-code
clang advises: "note: silence by adding parentheses to mark code as explicitly dead"
2016-06-13 07:24:26 -07:00
Eli Fidler
13e3aa9b00 we do need to avoid the double-promotion warning on clang, since we're compiling with -Werror 2016-06-13 07:24:26 -07:00
Eli Fidler
89f6b8a380 Clang doesn't like the C-style casts in nmmintrin.h 2016-06-13 07:24:26 -07:00
Eli Fidler
56bb9992b0 support building with ASAN and UBSAN on Clang and GCC 2016-06-13 07:24:26 -07:00
Milo Yip
2e66339137 Disable parsebyparts example for clang 2016-06-13 09:54:02 +08:00
Milo Yip
fee5190def Fix a clang warning 2016-06-13 09:34:47 +08:00
Milo Yip
024fc49586 Merge pull request #654 from efidler/travis-clang
switch Clang from broken Ubuntu PPA to upstream binary release
2016-06-13 09:21:02 +08:00
Eli Fidler
d1697f7437 use included clang on travis
This should fix the Travis clang builds, since the upstream LLVM apt
repo is down.
2016-06-10 15:21:29 -04:00
Milo Yip
6f5e83db04 Merge pull request #639 from milkandsour/master
npm docs
2016-06-10 11:31:00 +08:00
Milo Yip
ba54d02871 Merge pull request #656 from miloyip/pr/651
Fix cmake build with new gtest reference
2016-06-09 21:26:37 -05:00
Milo Yip
ce3ca58fee Change googletest search path for cmake 2016-06-10 10:15:45 +08:00
Zhang Ye
47d7320096 Update reference to gtest thirdparty module. 2016-06-08 09:36:03 +08:00
Milo Yip
e6895ec115 Merge pull request #641 from m7thon/allow_nan_and_inf
Allow options for writing and parsing NaN/Infinity
2016-05-22 20:55:04 -05:00
Michael Thon
135da7ab34 Allow options for writing and parsing NaN/Infinity
This adds kWriteNanAndInfFlag to Writer to allow writing of nan,
inf and -inf doubles as "NaN", "Infinity" and "-Infinity",
respectively, and kParseNanAndInfFlag to Reader to allow parsing
of "NaN", "Inf", "Infinity", "-Inf" and "-Infinity". This is part
of issue #36, adding optional support for relaxed JSON syntax.
2016-05-20 23:54:55 +02:00
Andrea Colaci
f9810e548b 1.0.4 2016-05-17 13:33:43 +01:00
Andrea Colaci
7708961484 npm docs 2016-05-17 13:33:26 +01:00
Milo Yip
2a3fbdaf5c Merge pull request #631 from milkandsour/master
npm compliant package.json
2016-05-11 01:34:39 -05:00
Milo Yip
30111dbf4d Merge pull request #635 from gggin/master
fix some document problem
2016-05-10 22:37:17 -05:00
liujiayang
e154f8e959 add space for template 2016-05-11 11:01:47 +08:00
liujiayang
7b32bbaae7 fix document problem 2016-05-11 10:59:56 +08:00
Milo Yip
4b8cc94a25 Merge pull request #634 from Eswcvlad/master
Added missing include guards in istreamwrapper.h and ostreamwrapper.h
2016-05-10 18:45:43 -05:00
Vlad Lipskiy
819ba73b17 Added missing include guards in istreamwrapper.h and ostreamwrapper.h 2016-05-10 18:09:01 +03:00
Milo Yip
7cc76a9d46 Fix #630 2016-05-10 13:20:03 +08:00
Andrea Colaci
f8df637783 include folder added 2016-05-09 16:45:18 +01:00
Andrea Colaci
0febc29f1a refs 2016-05-09 16:33:35 +01:00
Andrea Colaci
af327524ed package update 2016-05-09 16:31:37 +01:00
Andrea Colaci
cf8f08f9d0 include dirs 2016-05-09 16:29:15 +01:00
Andrea Colaci
5bff05963c package json 2016-05-09 16:19:10 +01:00
Milo Yip
c02d52ad56 Fix documentation mistake in #620 2016-04-29 17:45:09 +08:00
Milo Yip
a636c79487 Merge pull request #618 from danvk/patch-1
Fix filterkeydom link
2016-04-27 11:53:44 +08:00
Dan Vanderkam
6b6b121ff0 Fix filterkeydom link 2016-04-26 19:24:52 -04:00
Milo Yip
1d9cb20a41 Merge pull request #617 from brucestephens/master
Define RAPIDJSON_HAS_CXX11_RVALUE_REFS directly in clang
2016-04-25 23:14:47 +08:00
Bruce Stephens
ee4207b3f0 Define RAPIDJSON_HAS_CXX11_RVALUE_REFS directly in clang
This makes no difference except that it avoids "warning: macro expansion
producing 'defined' has undefined behavior" messages.
2016-04-25 13:03:39 +01:00
Milo Yip
fdf665d637 Merge pull request #615 from miloyip/example
Add filterkey and filterkeydom examples
2016-04-23 08:26:03 -05:00
Milo Yip
00ed0a5f91 Fix gcc warning 2016-04-23 20:54:06 +08:00
Milo Yip
b010f388d1 Change FilterKeyHandler from struct to class
Also disable copy constructor/assignment operator
2016-04-23 20:11:05 +08:00
Milo Yip
05b2ed7532 Add filterkey and filterkeydom examples 2016-04-23 16:02:40 +08:00
Milo Yip
96ca84798f Merge branch 'master' into example 2016-04-23 16:02:02 +08:00
Milo Yip
e4ff9c0ee4 Merge pull request #614 from miloyip/zh-doc
Adding spaces in Chinese doc
2016-04-23 03:00:58 -05:00
Milo Yip
e6a1bd91bc Merge pull request #612 from miloyip/cmake_CMP0054
Try to fix cmake CMP0054 warning
2016-04-21 10:59:30 -05:00
Milo Yip
5b6e40df26 Update changelog 2016-04-21 23:59:01 +08:00
Milo Yip
aae2fbfc99 Try to fix cmake CMP0054 warning 2016-04-21 23:12:31 +08:00
Milo Yip
0fe08c222f Fix english error message gramma
Fix #606
2016-04-19 16:22:24 +08:00
Milo Yip
cb927a24ca Adding spaces in Chinese doc 2016-04-19 15:48:02 +08:00
Milo Yip
8821797f01 Merge pull request #609 from miloyip/issue608_required
Fix schema "required" keyword cannot handle duplicated keys
2016-04-19 02:45:18 -05:00
Milo Yip
bbcdb8b574 Update changelog 2016-04-19 15:44:50 +08:00
Milo Yip
a6571d504a Combine objectDependices and objectRequired into propertyExist array 2016-04-19 15:10:28 +08:00
Milo Yip
f586edd33d Fix required for duplicated keys
Fix #608
2016-04-19 15:06:41 +08:00
Milo Yip
c8a1d51753 Add reproduction test case 2016-04-19 15:05:15 +08:00
Milo Yip
07343d5e33 Merge pull request #605 from miloyip/issue583_regexcrash
Fix regex crash
2016-04-17 03:27:06 -05:00
Milo Yip
fa8c676b37 Update changelog 2016-04-17 12:10:44 +08:00
Milo Yip
be352d9548 Fix a bug in regex
Due to dereferencing a pointer which may be invalidated
2016-04-17 11:59:09 +08:00
Milo Yip
8f4e99b2e5 Merge pull request #604 from miloyip/coverage
Improve coverage to 100%
2016-04-17 11:24:31 +08:00
Milo Yip
d7ee08621a Update changelog 2016-04-17 10:11:40 +08:00
Milo Yip
01aeebf9bf Improve reader coverage by removing a default case 2016-04-17 09:47:29 +08:00
Milo Yip
a28e4befed Improve coverage of Regex by removing default case. 2016-04-17 09:34:04 +08:00
Milo Yip
ba0a137b9c Remove unnecessary code in GenericSchemaDocument::CreateSchemaRecursive() 2016-04-17 09:17:05 +08:00
Milo Yip
cb2f340d55 Remove ISchemaStateFactory::ReallocState() 2016-04-17 09:11:00 +08:00
Milo Yip
ed6fdb6d78 Improve coverage for SchemaValidator:::AppendToken() 2016-04-17 09:09:25 +08:00
Milo Yip
954f80872d Improve schema minimum/maximum/multipleOf coverage 2016-04-17 01:55:55 +08:00
Milo Yip
e7149d6659 Fix memory leak for invalid regex 2016-04-17 00:58:32 +08:00
Milo Yip
26e69ffde9 Fix a bug in schema minimum/maximum keywords for 64-bit integer 2016-04-17 00:48:02 +08:00
Milo Yip
ecd8fa3437 Improve coverage of regex 2016-04-16 23:04:40 +08:00
Milo Yip
c71825f80e Improve Value::IsFloat() coverage 2016-04-16 22:14:38 +08:00
Milo Yip
fdd443120f Move break into same line to make coverage happy 2016-04-16 22:09:23 +08:00
Milo Yip
bdfa0447ec Add test cases for ScanCopyUnescapedString 2016-04-16 21:44:33 +08:00
Milo Yip
a6f9cb85ab Third trial on writer coverage 2016-04-16 16:11:34 +08:00
Milo Yip
3da4afd259 Another trial on writer coverage 2016-04-16 15:19:34 +08:00
Milo Yip
8fcc65bf58 Adjust ScanWriteUnescapedString test case 2016-04-15 19:51:50 +08:00
Milo Yip
8f9ff88c29 Add Writer. ScanWriteUnescapedString to try to improve coverage 2016-04-15 17:03:23 +08:00
Milo Yip
a8970be543 Improve UTF8::Encode() coverage via writing to AutoUTF 2016-04-15 14:15:08 +08:00
Milo Yip
1bfa188d18 Improve encodings coverage 2016-04-15 13:50:24 +08:00
Milo Yip
105c92ee08 Add example catalog in readme 2016-04-15 11:18:00 +08:00
Milo Yip
f4ea0d3f64 Added documentation for kParseNumbersAsStringsFlag 2016-04-15 10:43:14 +08:00
Milo Yip
006533cdea Added documentation about kParseTrailingCommasFlag 2016-04-15 10:18:16 +08:00
Milo Yip
6bc606c926 Update changelog 2016-04-15 10:09:27 +08:00
Milo Yip
d35c783ec6 Fix schema documentation 2016-04-15 09:06:50 +08:00
Milo Yip
75d0e4ff65 Use single Peek() in SkipWhitespace
Fix #594
2016-04-07 00:47:26 +08:00
Milo Yip
47e21a054c Temp revert cmake for OS X 2016-04-07 00:46:39 +08:00
Milo Yip
795946b1ca Merge pull request #595 from miloyip/vcwarning
Fix VC warnings
2016-04-07 00:44:58 +08:00
Milo Yip
12425693ba Revert formatting of enum 2016-04-06 23:33:26 +08:00
Milo Yip
49c29d057d Fix VC warning C4189 2016-04-06 01:16:00 +08:00
Milo Yip
44d114f3ee Supress VC C4512 warning 2016-04-06 00:47:16 +08:00
Milo Yip
be5a886f8f Fix clang compilation error 2016-04-06 00:34:45 +08:00
Milo Yip
689be10891 Fix a compilation error 2016-04-06 00:11:49 +08:00
Milo Yip
35ccca8b74 Try to fix VC warning C4512 2016-04-05 23:56:50 +08:00
Milo Yip
8991037ecd Revert using of static const back to enum due to gcc error 2016-04-05 23:26:08 +08:00
Milo Yip
c843a2655b Try to fix all /W4 warnings in VC2015 2016-04-04 15:01:34 +08:00
Milo Yip
2418d7cd91 Fix cmake 2016-03-31 15:02:03 +08:00
Milo Yip
d7df1f26ba Add /W4 and /WX for VC 2016-03-31 14:20:24 +08:00
Milo Yip
89afda0694 Add CMAKE verbose for appveyor 2016-03-31 10:25:55 +08:00
Milo Yip
62a9a6b0d8 Merge pull request #589 from jnicholls/rawnumber
RawNumber Improvements / Clang Test Fix / Whitespace Cleanup
2016-03-31 10:18:26 +08:00
Jarred Nicholls
926d7ffcc8 Later clang compilers will warn on float -> double promotion because it can add precision. In the context of RapidJSON – especially with its float methods on GenericValue – I think this warning holds no water and should be ignored.
Trim whitespace off the end of various lines.

Added an additional NumberStream specialization that will always perform a TakePush() even when just Take() is called. This supports RawNumber parsing by pushing onto our StackStream particular parts of the number that currently aren't captured because of full precision double parsing, such as the negative sign, scientific number exponents, etc.

RawNumber parsing fails with input streams that don't have copy optimization, such as the BasicIStreamWrapper stream. To work around this, instead do the Transcode copy operation by reading from a UTF8 StringStream instead of the original InputStream. Since the NumberStream downcasts all input Ch into chars, we know we're dealing with UTF8/ASCII compatible stack characters during the Transcoding.
2016-03-29 15:44:30 -04:00
Milo Yip
4fdcb10c3e Fix #587 2016-03-26 22:47:07 +08:00
Milo Yip
ec32200507 Merge pull request #584 from ludocode/trailing-commas
Added optional support for trailing commas
2016-03-21 09:33:59 +08:00
Nicholas Fraser
68217548f3 Added trailing comma support to iterative parser
This also fixes cases where the iterative parser should have produced
kParseErrorValueInvalid rather than kParseErrorUnspecifiedSyntaxError
when expecting a value (after a colon in an object, after a comma in an
array, and at the start of an array.)
2016-03-20 12:52:48 -04:00
Nicholas Fraser
7c0e9d941d Added additional tests for trailing commas 2016-03-20 11:39:00 -04:00
Nicholas Fraser
3e21bb429d Added optional support for trailing commas
This adds kParseTrailingCommasFlag to allow a trailing comma at the
end of maps and arrays. This is part of issue #36, adding optional
support for relaxed JSON syntax.
2016-03-20 01:10:33 -04:00
Milo Yip
ca07fe2fef Merge pull request #582 from ktrushin/explicit_type_conversion
do potentially precision-losing conversions explicitly
2016-03-14 01:25:58 +08:00
Konstantin Trushin
305882489c do potentially precision-losing conversions explicitly 2016-03-13 14:07:39 +03:00
Milo Yip
d454d21409 Merge pull request #577 from comand/prettywriter-options
Add PrettyWriter format option for writing array in single line.
2016-03-09 09:31:36 +08:00
Cory Omand
7a79e91ecd PrettyWriter formatting options.
This change adds PrettyWriter::SetFormatOptions with a corresponding
bitfield enum PrettyFormatOptions. This allows options affecting the
format of the PrettyWriter to be set. The first option to be provided
is kFormatSingleLineArray, which instructs the PrettyWriter to write
arrays on a single line, rather than breaking them up onto a line
per element.
2016-03-08 15:33:04 -08:00
Milo Yip
1623ef2a96 Update simplewriter example with Writer::Key() 2016-03-08 14:35:10 +08:00
Milo Yip
a045314f02 Merge pull request #576 from ChrisLundquist/patch-1
[simplewriter.cpp] show generated output
2016-03-08 14:29:34 +08:00
Milo Yip
7886965e34 Fix a bug in dtoa
This previously affects Writer:: SetMaxDecimalPlaces()
2016-03-08 10:03:31 +08:00
Chris Lundquist
d175915c55 [simplewriter.cpp] show generated output
This makes it painfully obvious that writer expects subsequent key/value pairs.
2016-03-05 18:14:20 -08:00
Milo Yip
824120b8d8 Merge pull request #575 from corporateshark/master
Removed commented code and added an explanatory comment instead
2016-03-05 23:23:20 +08:00
Sergey Kosarevsky
6e70e3521a Removed commented code and added an explanatory comment instead 2016-03-05 13:47:32 +01:00
Milo Yip
01b2d463f7 Fix #573 2016-03-05 10:34:00 +08:00
Milo Yip
91fabf0461 Merge pull request #574 from miloyip/travis
Fix clang example compilation
2016-03-05 10:22:41 +08:00
Milo Yip
facb432f91 Try another fix 2016-03-04 16:37:04 +08:00
Milo Yip
d60abc914c Fix example clang link flags 2016-03-04 14:09:56 +08:00
Milo Yip
031a0b6660 Merge branch 'master' into travis 2016-03-04 14:04:49 +08:00
Milo Yip
a62777487d Normalize line endings but not JSON files 2016-03-04 11:52:18 +08:00
Milo Yip
7fb84d304b Revert "Normalize all the line endings"
This reverts commit 6047e3ce128954ec594e9a893ef2125c9f9b61c7.
2016-03-04 11:51:30 +08:00
Milo Yip
6047e3ce12 Normalize all the line endings 2016-03-04 09:46:11 +08:00
Milo Yip
d9cf99baf6 Normalize all line endings 2016-03-04 09:44:01 +08:00
Milo Yip
6d0f0b2a84 Merge pull request #564 from corporateshark/stringnumbers
Implemented feature as in #560 (ints/doubles as strings)
2016-03-03 09:34:53 +08:00
Milo Yip
29c95808ac Inlucde SIMD headers for writer.h 2016-03-02 17:58:16 +08:00
Sergey Kosarevsky
b5966c3290 Added missing static_cast 2016-03-02 03:07:53 +01:00
Sergey Kosarevsky
ae785ffb52 Don't use nullptr 2016-03-02 02:21:38 +01:00
Sergey Kosarevsky
57eae5595e Added new unit test for kParseNumbersAsStringsFlag 2016-03-02 02:08:59 +01:00
Sergey Kosarevsky
bea3790a74 Don't insert terminating zero 2016-03-02 02:08:58 +01:00
Milo Yip
680c111278 Add debian docker file for development 2016-03-02 01:45:05 +08:00
Milo Yip
364545fe57 Prevent gcc wrong warning 2016-03-02 01:39:33 +08:00
Milo Yip
928caf92ed Fix gcc strict-overflow warning
Fix #566 #568
2016-03-02 01:01:17 +08:00
Milo Yip
6c927047c4 Fix RAPIDJSON_(UN)LIKELY for VC 2016-03-01 10:16:40 +08:00
Sergey Kosarevsky
5642a81f24 Added JsonxWriter::RawNumber() 2016-02-29 20:21:28 +01:00
Sergey Kosarevsky
a9c79db580 Added CapitalizeFilter::RawNumber() 2016-02-29 18:48:15 +01:00
Sergey Kosarevsky
9748595960 Added MyHandler::RawNumber() 2016-02-29 18:25:14 +01:00
Sergey Kosarevsky
22d22145d2 Added GenericSchemaValidator::RawNumber() 2016-02-29 18:05:24 +01:00
Sergey Kosarevsky
1ffb335915 Added RawNumber() to fix unit tests 2016-02-29 18:05:05 +01:00
Sergey Kosarevsky
3dba370486 Added IterativeParsingReaderHandler::RawNumber() 2016-02-29 17:51:32 +01:00
Sergey Kosarevsky
43a2c5694e Play nice with different encodings 2016-02-29 17:42:48 +01:00
Sergey Kosarevsky
9b13eacdf1 Add 0-character during in-situ numbers-as-strings parsing 2016-02-29 17:40:43 +01:00
Sergey Kosarevsky
f83b2c09e8 Fixed warning unused parameter ‘c’ 2016-02-29 16:31:54 +01:00
Sergey Kosarevsky
e23bc0d1a5 Fixed numbers-as-strings for in-situ streams 2016-02-29 16:12:30 +01:00
Sergey Kosarevsky
7d4891e243 Added NumberStream::Push() 2016-02-29 16:11:31 +01:00
Sergey Kosarevsky
a214bdff4d Removed unnecessary kParseInsituFlag check in ParseNumber() 2016-02-29 10:54:55 +01:00
Sergey Kosarevsky
6143f97b45 BaseReaderHandler::RawNumber() calls String() by default 2016-02-29 10:52:36 +01:00
Sergey Kosarevsky
f76174422d Fixed Ch type 2016-02-28 21:29:16 +01:00
Sergey Kosarevsky
fb5c464221 Added PrettyWriter::RawNumber() 2016-02-28 21:29:06 +01:00
Sergey Kosarevsky
2bbfe0d8a8 Number() -> RawNumber() to avoid name clashes with the union Number 2016-02-28 18:50:04 +01:00
Sergey Kosarevsky
4f94ec9b0b Added GenericDocument::Number() 2016-02-28 18:38:06 +01:00
Sergey Kosarevsky
334461b421 Added Hasher::Number() 2016-02-28 18:28:19 +01:00
Sergey Kosarevsky
eeb13bdb4c Added Writer::Number() 2016-02-28 18:12:57 +01:00
Sergey Kosarevsky
d2d5f6f919 ParseNumber() handles kParseNumbersAsStringsFlag 2016-02-28 17:58:34 +01:00
Sergey Kosarevsky
4abcfd1e28 Added Number() to rapidjson::Handler 2016-02-28 17:58:01 +01:00
Sergey Kosarevsky
ba2b751b4d Added kParseNumbersAsStringsFlag 2016-02-28 17:33:49 +01:00
Milo Yip
ef5e74a200 Merge pull request #563 from oktal/example-compilation-fix
#562: example: parsebyparts now compiles with g++-4.9
2016-02-28 13:21:29 +08:00
octal
d53d71b874 example: parsebyparts now compiles with g++-4.9 2016-02-27 19:59:29 +01:00
Milo Yip
2d5d9363d8 Merge pull request #556 from miloyip/example_parsebyparts
Add parse-by-parts example
2016-02-28 01:22:44 +08:00
Milo Yip
c62a19cfbd Remove CMakeLists license info 2016-02-28 01:22:15 +08:00
Milo Yip
bc40c8a682 Add missing valgrind 2016-02-28 00:53:15 +08:00
Milo Yip
5f13820899 Another try 2016-02-27 23:41:38 +08:00
Milo Yip
52512b7c12 Try to set libc++ in cmake 2016-02-27 22:56:23 +08:00
Milo Yip
de28919b41 Try libc++ 2016-02-27 22:42:55 +08:00
Milo Yip
d6575035a5 Add another source 2016-02-27 21:34:32 +08:00
Milo Yip
9e05693ca1 Add sources for clang 2016-02-27 21:20:52 +08:00
Milo Yip
c0b4981765 Try clang-3.7 2016-02-27 16:29:41 +08:00
Milo Yip
95c18905d7 Fix YAML 2016-02-27 16:10:03 +08:00
Milo Yip
cc2206d56c Try using clang 3.7 2016-02-27 16:07:42 +08:00
Milo Yip
2de47aae12 Merge branch 'master' into example_parsebyparts 2016-02-27 15:43:41 +08:00
Milo Yip
4de9ba54bc Merge pull request #559 from corporateshark/master
Custom Microsoft headers are necessary only for Visual Studio 2012 and lower
2016-02-26 22:46:51 +08:00
Sergey Kosarevsky
852ed80881 Custom Microsoft headers are necessary only for Visual Studio 2012 and lower 2016-02-26 12:03:22 +01:00
Milo Yip
f44961ff9b Merge branch 'master' into example_parsebyparts 2016-02-25 00:47:40 +08:00
Milo Yip
ed7efe6289 Merge pull request #558 from miloyip/travis
Remerge container based Travis CI build
2016-02-25 00:47:14 +08:00
Milo Yip
5a955c0d14 Add C++11 config 2016-02-24 23:32:56 +08:00
Milo Yip
ae840f66c5 Remerge #504 2016-02-23 14:21:03 +08:00
Milo Yip
e09765dd34 Merge pull request #557 from kevina/doc-fix
Documentation fix.
2016-02-23 09:36:33 +08:00
Kevin Atkinson
2f1e59324f Documentation fix.
GenericObject is a helper class for accessing Value of _object_ type.
2016-02-22 00:53:58 -05:00
Milo Yip
f1387ef879 Rollback stdlib flag 2016-02-22 10:02:01 +08:00
Milo Yip
dbe8d115b1 Rename variable in parsebyparts 2016-02-22 09:34:23 +08:00
Milo Yip
24d0ebd8fb Fix compilation problem of parsebyparts 2016-02-22 09:33:41 +08:00
Milo Yip
70cad1901a Add parse-by-parts example
Fix #527
2016-02-21 17:23:23 +08:00
Milo Yip
494f9deb9b Merge pull request #555 from miloyip/appveyor_vs2015
Add VS2010 and VS2015 to AppVeyor CI
2016-02-21 17:16:28 +08:00
Milo Yip
770f3a47b1 Bypass a VC2010 problem on IsLosslessDouble() 2016-02-21 14:57:08 +08:00
Milo Yip
a4e13ecce9 Give up VC2008 on appveyor 2016-02-21 14:41:38 +08:00
Milo Yip
d3129c5d33 Try to fix msbuild issue on VC2008 2016-02-21 14:39:03 +08:00
Milo Yip
a907ca490e Fix another VC2010 compilation error 2016-02-21 14:14:49 +08:00
Milo Yip
3227aa0533 Try to change VS generator names 2016-02-21 12:57:52 +08:00
Milo Yip
4620fa60f5 Fix VS2010 compilation errors 2016-02-21 12:52:14 +08:00
Milo Yip
e1617b4798 Try to fix VS2015 and add 2008, 2010 2016-02-21 12:26:24 +08:00
Milo Yip
9f3f07eec6 Try adding VS2015 to appveyor 2016-02-21 11:42:58 +08:00
Milo Yip
10ccdf88e2 Merge pull request #554 from miloyip/issue552_movingschemadocument
Add move constructor for GenericSchemaDocument
2016-02-21 10:40:16 +08:00
Milo Yip
7a9166f362 Fix Issue552 test 2016-02-20 22:40:36 +08:00
Milo Yip
db4bc75cd9 Add move constructor for GenericSchemaDocument 2016-02-20 22:18:23 +08:00
Milo Yip
dd25c9651a Merge pull request #553 from miloyip/issue158_parsestdstring
Issue158 parsestdstring
2016-02-20 21:42:32 +08:00
Milo Yip
3595b1f677 Fix VC compilation error 2016-02-20 16:33:29 +08:00
Milo Yip
5fc59cb6fa Merge branch 'master' into issue158_parsestdstring 2016-02-20 00:35:52 +08:00
Milo Yip
ff12c04a61 Merge pull request #546 from miloyip/optimization
x86-64 48-bit pointer optimization for GenericValue
2016-02-20 00:35:38 +08:00
Milo Yip
b8c83c53b1 Resolve conflicts 2016-02-19 23:40:48 +08:00
Milo Yip
f8e417818f Merge branch 'master' into optimization 2016-02-19 22:29:40 +08:00
Milo Yip
4029ddb165 Merge pull request #542 from miloyip/issue316_templatedaccessors
Templated accessors and range-based for
2016-02-19 22:28:48 +08:00
Milo Yip
cdc2330c0e Merge pull request #550 from ibell/patch-1
Editorial changes to schema documentation
2016-02-19 10:24:42 +08:00
Ian Bell
479a6b9f68 Editorial changes to schema documentation
Fixed up some wording to the schema documentation
2016-02-18 19:23:07 -07:00
Milo Yip
9f6736c2cc Add noexcept to the constructors 2016-02-19 01:07:16 +08:00
Milo Yip
46dc8e9240 Add implicit constructors of GenericValue for GenercArray|Object
Also remove SetArray|Object(…)
2016-02-19 00:49:05 +08:00
Milo Yip
d13be6c721 Change pointer to reference in GenericArray|Object 2016-02-18 19:04:22 +08:00
Milo Yip
70f9671bdf Return value type for GenericObject/Array member functions 2016-02-18 01:19:47 +08:00
Milo Yip
8c79fb65ae Fix return type of GenericObject::AddMember() 2016-02-17 09:34:19 +08:00
Milo Yip
4ababca893 Fixed typos pointed out by @pah 2016-02-17 08:48:22 +08:00
Milo Yip
2358f82ee5 Fix clang compilation 2016-02-15 22:32:14 +08:00
Milo Yip
48378b751e Optimize the new Parse() interfaces 2016-02-15 20:21:36 +08:00
Milo Yip
9fe18f71c1 Add Document::Parse() overloads 2016-02-15 17:15:27 +08:00
Milo Yip
e733690e69 Merge pull request #543 from miloyip/issue205
Add (Pretty)Writer::RawValue()
2016-02-15 13:06:23 +08:00
Milo Yip
9ecf073aff Merge pull request #536 from miloyip/issue362
Add Writer::SetMaxDecimalPlaces()
2016-02-15 13:05:05 +08:00
Milo Yip
49c982b4b7 Fix C++03 compilation error about sizeof() 2016-02-15 12:19:30 +08:00
Milo Yip
4bb6f2c089 Fix compilation errors on 32-bit gcc/clang 2016-02-15 11:39:32 +08:00
Milo Yip
e731726c56 Optimize memory consumption with RAPIDJSON_48BITPOINTER_OPTIMIZATION
#330
2016-02-15 11:20:00 +08:00
Milo Yip
90c0235fc4 Merge branch 'master' into optimization 2016-02-14 20:22:49 +08:00
Milo Yip
716f16b137 Merge pull request #544 from miloyip/optimization
Optimize Writer::WriteString() with SIMD
2016-02-14 18:59:39 +08:00
Milo Yip
6a6d9c7e05 Optimize Writer::WriteString() with SIMD 2016-02-14 17:37:53 +08:00
Milo Yip
e7cb2b1cbf Add (Pretty)Writer::RawValue()
Fix #205
2016-02-14 15:31:24 +08:00
Milo Yip
6671bd50f1 Fix another compilation error 2016-02-14 14:07:19 +08:00
Milo Yip
be66450ecd Fix compilation errors 2016-02-14 14:00:27 +08:00
Milo Yip
1634395378 Add object helper 2016-02-14 13:49:52 +08:00
Milo Yip
c974997d05 Merge pull request #541 from jschobben/issue507
Add stream position check to reader unit tests
2016-02-14 06:57:26 +08:00
Milo Yip
923db0e641 Fix gcc compilation error 2016-02-14 06:14:12 +08:00
Jesse Schobben
995652e748 Add stream position check to reader unit tests 2016-02-13 23:04:21 +01:00
Milo Yip
effc8a8f30 Let constness of GenericArray::ValueItaertor depending on ValueType 2016-02-14 00:12:04 +08:00
Milo Yip
960324a95b Try to fix gcc compilation error 2016-02-13 23:07:26 +08:00
Milo Yip
2a78b4da8c Fix Value.String test compilation error 2016-02-13 22:11:12 +08:00
Milo Yip
0b098eb38d Rectify constness of Array 2016-02-13 22:09:14 +08:00
Milo Yip
59309b5dd2 Add GenericArray helper class with range-based for 2016-02-13 19:06:03 +08:00
Milo Yip
c6946fd2c1 Merge branch 'master' into issue316_templatedaccessors 2016-02-13 17:09:15 +08:00
Milo Yip
b20a9dc88d Merge branch 'issue341_float' 2016-02-13 17:03:26 +08:00
Milo Yip
98ddfacdf1 Another try with volatile 2016-02-13 16:53:45 +08:00
Milo Yip
58d8d9ab9b Try fixing unit test in release configuration 2016-02-12 23:35:17 +08:00
Milo Yip
746a996cb9 Merge branch 'master' into issue341_float 2016-02-12 23:06:55 +08:00
Milo Yip
513fe7894e Add templated accessors for C string 2016-02-12 23:06:49 +08:00
Milo Yip
4d648fdcd8 Add templated accessors 2016-02-12 18:23:32 +08:00
Milo Yip
e61169e61a Fix Value::GetFloat() 2016-02-12 18:13:11 +08:00
Milo Yip
23e410b18a Merge pull request #540 from miloyip/issue341_float
Add Value::Get/SetFloat(), Value::IsLossLessFloat/Double()
2016-02-12 16:47:49 +08:00
Milo Yip
8b4c999888 Add Value::GetFloat(), Value::IsLossLessFloat/Double()
Fix #341
2016-02-12 16:33:31 +08:00
Milo Yip
3cb5733ec0 Merge pull request #539 from miloyip/issue538_regexzeromin
Support {0, } and {0, m} in Regex
2016-02-12 15:01:57 +08:00
Milo Yip
60116cf11e Support {0, } and {0, m} in Regex 2016-02-12 14:17:53 +08:00
Milo Yip
1d856b2761 Add Writer::SetMaxDecimalPlaces() 2016-02-11 16:08:17 +08:00
Milo Yip
3c2c16283c Merge pull request #534 from miloyip/issue325
Add encoding validation option for Writer/PrettyWriter
2016-02-11 00:06:18 +08:00
Milo Yip
7e383864c7 Fix #533 2016-02-10 11:36:23 +08:00
Milo Yip
964d89e34b Add encoding validation option for Writer/PrettyWriter 2016-02-10 11:31:29 +08:00
Milo Yip
935e2ef7ed Merge pull request #510 from miloyip/issue509_writingnaninf
Fix #509 by checking Nan/Inf when writing a double
2016-02-09 18:12:17 +08:00
Milo Yip
f9d0f65ba0 Fix compilation 2016-02-09 17:39:46 +08:00
Milo Yip
ab250d21bc Rectify parsing error offsets 2016-02-09 17:33:49 +08:00
Milo Yip
3771188701 Merge pull request #532 from miloyip/issue529
Add optional unresolvedTokenIndex parameter to Pointer::Get()
2016-02-09 12:47:49 +08:00
Milo Yip
cec8dcbc7a Add optional unresolvedTokenIndex parameter to Pointer::Get() and related 2016-02-09 12:09:47 +08:00
Milo Yip
ef36794336 Merge pull request #531 from miloyip/jsonx
Add Jsonx example for converting JSON into JSONx (a XML format)
2016-02-09 01:28:39 +08:00
Milo Yip
5af344b9d9 Add comment for -D__STDC_FORMAT_MACROS 2016-02-09 01:27:22 +08:00
Milo Yip
e702d3dc70 Merge pull request #530 from miloyip/iostream
Add iostream wrapper
2016-02-09 01:21:20 +08:00
Milo Yip
b5d939b71b Fix a gcc warning 2016-02-09 01:09:43 +08:00
Milo Yip
c53a836a3c Try fixing 64-bit printf macro 2016-02-09 00:53:49 +08:00
Milo Yip
9f1dcef6b1 Add jsonx example 2016-02-09 00:09:39 +08:00
Milo Yip
953dd5a34f Fix OStreamWrapper test 2016-02-08 01:45:12 +08:00
Milo Yip
0f7cb315ef Update Stream.md 2016-02-08 00:49:00 +08:00
Milo Yip
562549fbac Disable copy/assignment for stream wrappers 2016-02-08 00:45:55 +08:00
Milo Yip
c3133defb6 Renamed IStreamWrapper/OStreamWrapper 2016-02-08 00:10:52 +08:00
Milo Yip
b9bca8e5c3 Add OStreamWrapper 2016-02-07 23:30:51 +08:00
Milo Yip
ec81cc393b Fix a IStreamWrapper test with incorrect type 2016-02-07 22:54:02 +08:00
Milo Yip
67945ef727 Disable including codecvt in tests as many libraries does not support it yet. 2016-02-07 22:40:21 +08:00
Milo Yip
43b63b1100 Add IStreamWrapper 2016-02-07 22:15:17 +08:00
Milo Yip
c828037784 Make a stackoverflow solution 2016-02-06 16:55:15 +08:00
Milo Yip
7c72640da1 Improve reader coverage for insitu parsing 2016-02-03 13:48:39 +08:00
Milo Yip
cefae77aa2 Fix gcc warning 2016-02-03 13:29:25 +08:00
Milo Yip
021d746931 Fix warning 2016-02-03 13:10:55 +08:00
Milo Yip
d258f59022 Add SIMD ScanCopyUnescapedString test 2016-02-03 12:51:02 +08:00
Milo Yip
28f11ac429 Fix schema performance stats 2016-02-03 11:33:27 +08:00
Milo Yip
b8a273705e Improve comment parsing code coverage 2016-02-03 09:32:34 +08:00
Milo Yip
efe4140208 Fix #399 MemoryPoolAllocator::Realloc expands fail 2016-02-03 00:22:25 +08:00
Milo Yip
d43f001a36 Fix #472 Template specialization failure with SunOS compiler 2016-02-02 22:59:27 +08:00
Milo Yip
3edf0b4d92 Minor doc fix 2016-02-02 22:53:35 +08:00
Milo Yip
29016f3e2b Add notes about SIMD optimization issue. [skip ci]
#499
2016-02-02 22:49:33 +08:00
Milo Yip
7787c449ca Fix again 2016-02-02 20:21:07 +08:00
Milo Yip
f422094b9f Fix the last warning fix 2016-02-02 18:36:27 +08:00
Milo Yip
5f819ea1d3 Fix warnings 2016-02-02 18:27:26 +08:00
Milo Yip
8cb978dc15 Add fwd.h and extract stream.h 2016-02-02 18:20:36 +08:00
Milo Yip
0cf064422a Merge pull request #522 from miloyip/schema
JSON Schema Implementation
2016-02-02 13:25:58 +08:00
Milo Yip
dd2076f8d8 Minor refactoring 2016-02-02 12:56:53 +08:00
Milo Yip
ba7aa979a5 Refactoring: Remove GenericSchemaValiadator::nullOutputHandler_ 2016-02-02 10:17:06 +08:00
Milo Yip
02ea9f9db6 Refactor: remove unncessary template member functions 2016-02-02 10:00:27 +08:00
Milo Yip
f9d1e423ba Refactoring: remove GenericSchemaDocument::document_ 2016-02-02 09:52:00 +08:00
Milo Yip
13ee68c910 Add API doc for schema 2016-02-02 00:43:01 +08:00
Milo Yip
8876d9e6d5 Fix regex doc [ci skip] 2016-02-01 01:38:47 +08:00
Milo Yip
4daade9218 Add Chinese translation of schema [ci skip] 2016-02-01 00:40:15 +08:00
Milo Yip
267fcd1ff6 Add TOC [skip ci] 2016-01-31 23:39:14 +08:00
Milo Yip
84a26e5d18 Fix incorrect escape characters in doc [skip ci] 2016-01-31 23:37:31 +08:00
Milo Yip
a79d6895ed Minor edits of schema.md [ci skip] 2016-01-31 23:35:02 +08:00
Milo Yip
3184e8947d Draft schema documentation 2016-01-31 23:24:17 +08:00
Milo Yip
55d2867841 Add SchemaValidatingReader ::IsValid() 2016-01-31 22:36:19 +08:00
Milo Yip
28e6a40fc6 Change indentation to space 2016-01-31 13:44:49 +08:00
Milo Yip
48e0675ec9 Fix gcc warning 2016-01-31 01:47:51 +08:00
Milo Yip
556a8975bd Add RAPIDJSON_UNLIKELY in Value::Accept() 2016-01-31 01:33:47 +08:00
Milo Yip
b515627446 CMake use RelWithDebInfo as default #319 2016-01-31 01:17:29 +08:00
Milo Yip
b8b7dfedd1 Fix partial specialization issue 2016-01-30 23:07:51 +08:00
Milo Yip
ed12665f16 Fix compilation error for gcc/clang 2016-01-30 22:44:04 +08:00
Milo Yip
a33af83ee4 Optimization for Regex and Schema 2016-01-30 22:41:09 +08:00
Milo Yip
a006648398 Update json schema suite and add perf test 2016-01-30 01:00:01 +08:00
Milo Yip
89106a13c6 Add schema validator example 2016-01-29 15:24:23 +08:00
Milo Yip
4ce000b9f5 Fix out-of-bound access 2016-01-29 10:53:33 +08:00
Milo Yip
ea62c64add Fix clang warning 2016-01-27 14:22:05 +08:00
Milo Yip
63ae3b730a Fix memory leak 2016-01-27 14:17:24 +08:00
Milo Yip
d72f52bbea Fix clang warning 2016-01-27 14:17:06 +08:00
Milo Yip
05968b7031 Fix schema tests and added SchemaValidatingReader 2016-01-27 13:59:14 +08:00
Milo Yip
6978f878eb Resolve conflicts 2016-01-26 15:58:22 +08:00
Milo Yip
7f9921fc60 Merge branch 'master' into schema
# Conflicts:
#	.gitignore
#	include/rapidjson/internal/stack.h
2016-01-26 15:24:04 +08:00
Milo Yip
4f20bdcf39 Merge pull request #515 from miloyip/cxx11warnings
Fix C++11 warnings and make travis to compile with/without C++11
2016-01-23 16:17:20 +08:00
Milo Yip
403115019b Add travis C++11 on/off matrix 2016-01-23 15:53:27 +08:00
Milo Yip
a7490404ba Try to fix a clang missing assignment warning 2016-01-23 15:38:01 +08:00
Milo Yip
d8c793f23f Disable type_traits 2016-01-23 15:27:59 +08:00
Milo Yip
2f5a69b2fb Try using c++0x for gcc 4.6.x 2016-01-23 14:58:19 +08:00
Milo Yip
a6eb15d274 Fix warnings in clang for C++11 2016-01-23 14:37:15 +08:00
Milo Yip
534da223f7 Merge branch 'master' into cxx11warnings 2016-01-23 14:19:12 +08:00
Milo Yip
968a666acd Merge pull request #513 from miloyip/optimization
Make whitespace array more compact
2016-01-22 20:13:58 +08:00
Milo Yip
f183282b64 Fix warning 2016-01-22 19:03:00 +08:00
Milo Yip
a202d82339 Make whitespace array more compact 2016-01-22 18:42:50 +08:00
Milo Yip
4f4aff329f Fix clang compilation 2016-01-22 18:33:08 +08:00
Milo Yip
a5990f3eea Optimize ScanCopyUnescapedString for insitu parsing 2016-01-22 18:26:24 +08:00
Milo Yip
f13caadded Fix valgrind problem 2016-01-22 16:13:06 +08:00
Milo Yip
e392652754 Fix compilation 2016-01-22 16:05:46 +08:00
Milo Yip
d1e6eae2a9 Remove unused code 2016-01-22 15:43:51 +08:00
Milo Yip
6863f7b24c Fix warning 2016-01-22 15:39:07 +08:00
Milo Yip
ae5cf58878 Fix ScanCopyUnescapedString performance issue 2016-01-22 15:33:08 +08:00
Milo Yip
1502e7ed64 Merge branch 'master' into optimization 2016-01-22 12:18:17 +08:00
Milo Yip
69d0f41c4b Implemented ScanCopyUnescapeString optimization
Some performance issues to be fixed
2016-01-22 12:18:05 +08:00
Milo Yip
66f99d208f Merge pull request #511 from ReadmeCritic/master
Update README URLs based on HTTP redirects
2016-01-21 09:38:31 +08:00
ReadmeCritic
292a5c9d83 Update README URLs based on HTTP redirects 2016-01-20 11:24:11 -08:00
Milo Yip
8fbe442925 Merge pull request #510 from miloyip/issue509_writingnaninf
Fix #509 by checking Nan/Inf when writing a double
2016-01-20 22:30:15 +08:00
Milo Yip
78c7d54aba Fix #498 VC2015 warnings 2016-01-20 22:29:50 +08:00
Milo Yip
bab80e7cca Fix clang warning 2016-01-20 02:01:14 +08:00
Milo Yip
ad1d22eba5 Fix #509 by checking Nan/Inf when writing a double 2016-01-20 01:53:40 +08:00
Milo Yip
44f81f09b4 Remove travis doc job number checking.
Travis doc is running on separated task now.
2016-01-19 18:28:28 +08:00
Milo Yip
bd1be768f1 Fix #508 tutorial documentation about move semantics. 2016-01-19 09:59:38 +08:00
Milo Yip
9515b9cc94 Merge pull request #501 from thedrow/fix-cmake-min-version-warning
CMake will no longer complain that the minimum CMake version is not specified
2016-01-04 09:28:30 +08:00
Milo Yip
d0045f15bd Merge pull request #504 from thedrow/containerized-travis
Move Travis to container based infrastructure
2016-01-04 09:27:53 +08:00
Omer Katz
53557c8988 Moved comment to the right place and added a TODO. Added another comment about the documentation task. 2015-12-31 16:17:14 +02:00
Omer Katz
83a2e13efb Add pip caching only when reporting coverage. 2015-12-31 14:21:23 +02:00
Omer Katz
918fafc611 Disable cache for doxygen. 2015-12-31 13:56:35 +02:00
Omer Katz
5337e73f34 Fix path. 2015-12-31 13:41:51 +02:00
Omer Katz
8e40b2062e Split the documentation task from the rest since references to script doesn't work. 2015-12-31 13:29:39 +02:00
Omer Katz
89631a6190 Make documentation only in one of the build jobs. 2015-12-31 13:05:57 +02:00
Omer Katz
5fb5002e9a Run everything in 2 parallel threads. 2015-12-31 12:35:25 +02:00
Omer Katz
52e287a8c9 Fail the build early if cmake cannot generate the Makefiles. 2015-12-31 12:32:50 +02:00
Omer Katz
0cc5974b11 Missed one CCACHE_CPP2=yes 2015-12-31 12:19:09 +02:00
Omer Katz
45ea872f2e Set CCACHE_CPP2 environment variable to yes as described in http://petereisentraut.blogspot.co.il/2011/09/ccache-and-clang-part-2.html 2015-12-31 12:10:34 +02:00
Milo Yip
df76c0d6d7 Apply LIKELY/UNLIKELY in Reader 2015-12-31 18:10:17 +08:00
Omer Katz
163c4b7583 Fixed cmake syntax errors. 2015-12-31 12:07:28 +02:00
Omer Katz
96fbaef1ec Workaround clang and ccache bugs described in http://petereisentraut.blogspot.co.il/2011/05/ccache-and-clang.html 2015-12-31 12:04:47 +02:00
Omer Katz
84c56130d2 Adjust CMakeLists.txt files to use ccache when it's available. 2015-12-31 11:56:39 +02:00
Milo Yip
122c722993 More LIKELY/UNLIKELY in Writer 2015-12-31 16:17:52 +08:00
Milo Yip
bcc3fb6d9e Fix stack reserve bug 2015-12-31 16:07:07 +08:00
Milo Yip
ef6957c177 PutReserve() and PutUnsafe() optimisation for Writer 2015-12-31 15:30:28 +08:00
Milo Yip
1a21379e3c Merge branch 'master' into optimization 2015-12-31 09:23:38 +08:00
Omer Katz
3186e31b57 Print cache statistics. 2015-12-30 15:57:44 +02:00
Omer Katz
db11011a5c Script seems to fail to report coverage. Explictly specifying the commands. 2015-12-30 15:55:24 +02:00
Omer Katz
c3cd3edad2 Explictly specify the entire matrix. 2015-12-30 15:52:11 +02:00
Omer Katz
3a01a25242 Explictly specify compiler in the matrix. 2015-12-30 15:09:36 +02:00
Omer Katz
1f43a6f0b2 Added comment. 2015-12-30 15:07:32 +02:00
Omer Katz
291bcf94b0 Fixed path to coverage script. 2015-12-30 15:01:44 +02:00
Omer Katz
2a7836c961 Cached python packages as well for faster coverage reporting. 2015-12-30 13:11:39 +02:00
Omer Katz
6400ab8d18 Added the missing coveralls script. 2015-12-30 13:10:39 +02:00
Omer Katz
4fadfa5c22 Corrected the build matrix and removed inline logic. 2015-12-30 13:06:53 +02:00
Omer Katz
6d97d8bf71 Fixed bash syntax error. 2015-12-30 12:32:26 +02:00
Omer Katz
feadfad266 Fix syntax errors. 2015-12-30 12:18:39 +02:00
Milo Yip
ecfdb0c0fe Merge pull request #497 from miloyip/issue473_warning
Fix #473 clang -Weverything
2015-12-30 09:21:39 +08:00
Omer Katz
caa4d22d16 Initial attempt at moving travis to containerized infrastructure. 2015-12-29 18:15:52 +02:00
Omer Katz
5121034bb8 CMake will no longer complain that the minimum CMake version is not specified for test/CMakeLists.txt. 2015-12-29 16:57:42 +02:00
Milo Yip
c6384da755 Try to fix clang and gcc warnings problems again x11 2015-12-18 20:53:07 +08:00
Milo Yip
81c07721cb Try to fix clang and gcc warnings problems again x10 2015-12-18 20:38:08 +08:00
Milo Yip
5c003f3ecb Try to fix clang and gcc warnings problems again x9
Abandon RAPIDJSON_NORETURN_SUFFIX
2015-12-18 20:34:46 +08:00
Milo Yip
efdbdc6016 Try to fix clang and gcc warnings problems again x8 2015-12-18 20:26:34 +08:00
Milo Yip
6d6381f596 Try to fix clang and gcc warnings problems again x7 2015-12-18 20:15:11 +08:00
Milo Yip
d72039f3ef Try to fix clang and gcc warnings problems again x6 2015-12-18 20:06:58 +08:00
Milo Yip
6e08e760fc Try to fix clang and gcc warnings problems again x5 2015-12-18 19:57:43 +08:00
Milo Yip
d6478991d0 Try to fix clang and gcc warnings problems again x4 2015-12-18 19:54:10 +08:00
Milo Yip
4cb7c88ca9 Try to fix clang and gcc warnings problems again x3 2015-12-18 19:47:11 +08:00
Milo Yip
a6a73b51b5 Try to fix clang and gcc warnings problems againx2 2015-12-18 19:36:51 +08:00
Milo Yip
9ce381b801 Try to fix clang and gcc warnings problems again 2015-12-18 19:15:51 +08:00
Milo Yip
17f2ca6913 Try to fix clang and gcc warnings problems 2015-12-18 19:04:09 +08:00
Milo Yip
74c8dcfd57 Fix clang -Weverything 2015-12-18 18:34:04 +08:00
Milo Yip
f36af30531 Merge pull request #495 from pah/fixes/494-warning-pop
encodings.h: fix typo in preprocessor condition (closes #494)
2015-12-16 16:46:35 +08:00
Philipp A. Hartmann
7899a3c125 encodings.h: fix typo in preprocessor condition (closes #494) 2015-12-16 09:40:39 +01:00
Milo Yip
a1c4f325ca Temporarily remove git clone single-branch
https://github.com/travis-ci/travis-ci/issues/5225
2015-12-06 13:44:47 +08:00
Milo Yip
bd85e8d259 Merge pull request #488 from haubi/master
detect little endian for Microsoft ARM targets
2015-12-06 12:58:47 +08:00
miloyip
8b265fe4b6 Fixes #489 2015-12-06 11:38:53 +08:00
Michael Haubenwallner
e706397861 detect little endian for Microsoft ARM targets
When _MSC_VER and _M_ARM is defined, this is some Windows ARM target
using little-endian byte order.
2015-12-04 17:54:45 +01:00
Milo Yip
dee230b4d6 Merge pull request #485 from haubi/master
use <wchar.h> with C++ linkage on Windows ARM
2015-12-01 09:25:39 +08:00
Michael Haubenwallner
5b268e6508 use <wchar.h> with C++ linkage on Windows ARM
Instead of commenting that we should, just do include <wchar.h>
with C++ linkage when compiling for Windows on ARM.
Actually, omitting the C linkage really should be enough here.
2015-11-30 17:34:29 +01:00
Milo Yip
28f2ed00d9 Merge pull request #484 from miloyip/Issue483_PointerValue
Fix #483 by using the correct value type
2015-11-30 17:37:58 +08:00
Milo Yip
db0a03a43c Fix #483 by using the correct value type 2015-11-30 17:22:06 +08:00
Milo Yip
9c71093564 Merge pull request #482 from macworld/master
fix typos and dead links in docs
2015-11-30 09:44:02 +08:00
Wenhao Liu
06f62e38f7 fix typos and dead links, sync faq.zh-cn.md 2015-11-29 00:12:29 +08:00
Wenhao Liu
fe89676a9e fix a compatibility issue with doxygen 2015-11-28 22:40:43 +08:00
Milo Yip
9d47c62337 Merge pull request #480 from pah/feature/document-parseresult
GenericDocument: add implicit conversion to ParseResult
2015-11-27 10:42:11 +08:00
Philipp A. Hartmann
9378001e35 documenttest.cpp: check/use conversion from Document to ParseResult 2015-11-26 22:33:14 +01:00
Philipp A. Hartmann
98959e2820 GenericDocument: add implicit conversion to ParseResult
To simplify the error handling, this commit adds an implicit conversion
of GenericDocument to ParseResult, allowing code like (already in the
documentation):

   ParseResult ok = doc.Parse(json);
   if (!ok) // ...
2015-11-26 22:30:59 +01:00
Milo Yip
8ec389f167 Merge pull request #478 from haubi/master
fix Document::Parse(const Ch*) for transcoding
2015-11-26 09:16:07 +08:00
Michael Haubenwallner
07672da098 fix Document::Parse(const Ch*) for transcoding
To allow for an UTF16-Document to Parse(UTF8),
the Parse() argument has to be UTF8-compatible.
2015-11-25 19:45:47 +01:00
Milo Yip
292714e64a Merge pull request #470 from pah/fix/469-expect-throw-after-move
documenttest.cpp: EXPECT_THROW when checking empty allocator (closes #469)
2015-11-17 10:11:59 +08:00
Philipp A. Hartmann
c8d298bc9e documenttest.cpp: EXPECT_THROW when checking empty allocator (closes #469)
In the MoveConstructor/MoveAssignment tests, a check for a `NULL` allocator
return has been used to check for the correct moved-from state of a Document.
After the merge of #426, the GetAllocator call fails with an assertion,
if the allocator of a GenericDocument is NULL.

Check for the throw, instead of NULL in the move-related tests.
Tested with GCC 4.9 on Linux with C++11 enabled.

Reported-by: @woldendans
2015-11-16 21:32:09 +01:00
Milo Yip
b39a898269 Merge pull request #460 from stunney/master
Adding coapp definition
2015-10-30 09:32:08 -07:00
stunney
dceb7bed94 Usage comment
Adding usage comment at the top of the file for knowledge sharing
2015-10-29 14:02:12 -04:00
stunney
d6912d07cd Updating LicenseURL based on @miloyip 's suggestion
https://github.com/miloyip/rapidjson/pull/460#issuecomment-152232015
2015-10-29 13:53:42 -04:00
stunney
c6cb74bff8 Adding coapp definition
To create a nupkg, call CoApp's Write-NuGetPackage .\rapidjson.autopkg
-defines:MYVERSION=1.0.2 (or whatever version you want to call it)
2015-10-29 11:57:56 -04:00
Milo Yip
82329825c3 Fixes full-width spaces 2015-10-28 15:57:13 -07:00
Milo Yip
e602aab7f4 Fix language for pointer 2015-10-27 14:34:35 -07:00
Milo Yip
5512ec30f1 Add Chinese pointer guide to doxygen 2015-10-27 13:36:36 -07:00
Milo Yip
d5d17b96c2 Chinese Translation of JSON Pointer guide and minor English version modification. 2015-10-27 13:22:19 -07:00
Milo Yip
b761f0daea Merge pull request #441 from spl/patch-1
Highlight main features in bold
2015-10-26 12:24:29 +08:00
Milo Yip
aeb5f5671d Merge pull request #442 from FrankHB/patch-1
Fixed typo
2015-10-26 12:23:57 +08:00
Milo Yip
76d729e9c0 Add kParseCommentsFlag documentation 2015-10-22 10:58:58 +08:00
Milo Yip
54eb069f06 Merge pull request #450 from etiennebatise/missing-return-statement
Add missing return statement, fix #448
2015-10-15 17:32:59 +08:00
etiennebatise
edd077f4bf Add missing return statement, fix #448 2015-10-15 10:29:56 +02:00
Milo Yip
1a4cce275d Merge pull request #447 from etiennebatise/missing-breaks-at-switch-statements
Add break at default switch case statements fix #444
2015-10-15 11:19:55 +08:00
etiennebatise
74a021346d Add break at default switch case statements
fix issue #444
2015-10-14 15:46:26 +02:00
Milo Yip
a5d9971a06 Merge pull request #443 from andrusha97/master
Introduce comments support
2015-10-14 12:16:10 +08:00
Andrey
f7960ac0e8 Comments parsing fixes.
* Comments parsing function correctly handles EOF.
* Since SkipWhitespaceAndComments can generate errors, its calls should be followed by RAPIDJSON_PARSE_ERROR_EARLY_RETURN macro.
* Some tests to make the bug never appear again.
2015-10-14 00:04:29 +03:00
Andrey
5ce78b135d Introduce support of comments. 2015-10-11 15:09:58 +03:00
FrankHB
1640ce613c Fixed typo
<algorith> should be <algorithm>.
2015-10-10 11:33:48 +08:00
Sean Leather
481ae5b11d Highlight main features in bold
Might help some people see things better when skimming.
2015-10-09 14:29:30 +02:00
Milo Yip
1c76070520 Merge pull request #439 from pah/fix/437-keep-value-on-error
Keep Document value unchanged on parse error, fixes #437
2015-10-08 09:24:55 +08:00
Philipp A. Hartmann
41dd68f092 add simple test for unchanged DOM after parse error 2015-10-07 21:50:14 +02:00
Philipp A. Hartmann
fa123699d3 Keep Document value unchanged on parse error, fixes #437
Keeping the DOM unchanged in case of an error is the intended
behaviour according to the [documentation] [1].

Instead of forcing the value to `kNullType` before starting the
parsing, store the parsed value upon success via regular move.

[1]: https://miloyip.github.io/rapidjson/md_doc_dom.html#ParseError
2015-10-07 21:48:39 +02:00
Milo Yip
221887d682 Merge pull request #426 from malirod/fix-ub-in-document
Fix UB in GenericDocument::ParseStream
2015-09-19 19:33:21 +08:00
Rodion Malinovsky
2e11498943 Fix the usage of the stack::GetAllocator 2015-09-16 14:54:38 +03:00
Rodion Malinovsky
c7433dfc5e Add stack::HasAllocator
To check is it possible to expose allocator.
2015-09-16 14:53:51 +03:00
Rodion Malinovsky
8604ba0f1c Add asserts to prevent UB 2015-09-16 14:53:12 +03:00
Milo Yip
539e57225b Merge pull request #421 from simplifi/fwrite_return_check
check return of fwrite to avoid warn_unused_result build failures. Fixed #420. Thank you.
2015-09-03 12:06:18 +08:00
Kurt Johnson
2a267ff15a check return of fwrite to avoid warn_unused_result build failures 2015-09-02 09:29:15 -05:00
Milo Yip
d636594c97 Merge pull request #419 from miloyip/issue418_alignment
Fix incorrect 64-bit alignment
2015-09-01 10:35:35 +08:00
Milo Yip
311b48224f Try to fix incorrect 64-bit alignment
Added unit tests for alignment macros.
Fixes #418
2015-09-01 10:05:33 +08:00
Milo Yip
74f0673dad Merge branch 'master' into schema 2015-09-01 09:32:29 +08:00
Milo Yip
3ede21c356 Merge pull request #409 from pah/fix/biginteger-self-assign
BigInteger: guard against self-assignment
2015-08-14 10:07:18 +08:00
Philipp A. Hartmann
afbc0406f0 BigInteger: guard against self-assignment
Related-to: #404.
Suggested-by: @cosinekitty
2015-08-13 23:07:30 +02:00
Milo Yip
3cf7228f46 Port documentation fix from #407 2015-08-13 10:16:19 +08:00
Milo Yip
3517aca39a Merge pull request #407 from fcharlie/master
doc: 自定义流应当使用 ParseStream 而不是 Parse
2015-08-13 10:13:30 +08:00
Force.Charlie-I
ffd389befc 自定义流应当使用 ParseStream 而不是 Parse 2015-08-12 18:38:13 +08:00
Milo Yip
bc4551b5b0 Merge pull request #405 from ziyangli/patch-1
added missing fields of CMakeList.txt
2015-08-10 18:48:51 +08:00
Ziyang LI
4569752903 added missing fields of CMakeList.txt
this fixed cmake error for me
2015-08-10 18:11:25 +08:00
Milo Yip
8498c785a6 Merge pull request #404 from blackball/master
Implement = operator for BigInteger
2015-08-07 17:53:35 +08:00
blackball
c0854473e9 Implement = operator for BigInteger
There's a copy constructor, but no '=' operator implemented. This is dangerous.
2015-08-07 10:04:45 +02:00
Milo Yip
c583119b20 Merge pull request #401 from ivankravets/patch-2
Fix include location
2015-08-04 09:46:05 +08:00
Ivan Kravets
720d1688f1 Fix include location 2015-08-03 16:30:37 +03:00
Milo Yip
315a8ea368 Merge pull request #400 from ivankravets/patch-1
@PlatformIO Library Registry manifest file
2015-08-02 18:59:01 +08:00
Ivan Kravets
b49858a408 Add examples for @PlatformIO Library Registry 2015-08-01 13:10:26 +03:00
Ivan Kravets
2a18d306b8 @PlatformIO Library Registry manifest file
* This library in Web Registry: http://platformio.org/#!/lib/show/438/RapidJSON
* Specification: [PlatformIO Library Manager](http://docs.platformio.org/en/latest/librarymanager/index.html)
* Integration: [IDE Integration](http://docs.platformio.org/en/latest/ide.html)
2015-08-01 13:05:28 +03:00
Milo Yip
f07ca0748f Merge pull request #397 from blackball/master
Fix the error when compiled using vs2013
2015-07-25 10:45:32 +08:00
blackball
fc50f103a6 Fix the error when compiled using vs2013
The error message for the original codes is: unary minus operator applied to unsigned type, result still unsigned. Added static casting to eliminate this message.
2015-07-24 16:19:08 +02:00
Milo Yip
1eaf180cda Merge pull request #394 from nightmouse/master
Warning cleanup on osx10.10/clang, enable -Werror
2015-07-22 09:19:51 +08:00
Justin Scheiber
e527a4fe5e adding -Wno-missing-field-initializers to keep the googletest source from erroring out on a warning 2015-07-21 17:42:28 -06:00
scheiber
73cf03c2bf use google's servers for googletest 2015-07-21 16:52:16 -06:00
scheiber
a0f730e3d7 use -Werror 2015-07-21 16:42:50 -06:00
scheiber
f33b6740fc Revert "update the submodule fore google test"
This reverts commit 5be9b6e584656bbc94d894887ded663442a024fb.
2015-07-21 16:39:00 -06:00
scheiber
d26d50092d fixing sign conversion warnings and loss of precision warnings 2015-07-21 15:15:42 -06:00
Milo Yip
df13af8c6d Merge pull request #392 from sebastic/master
Clarify problematic JSON license (#377)
2015-07-21 16:36:45 +08:00
Bas Couwenberg
b4b1a39937 Clarify problematic JSON license (#377) 2015-07-21 08:46:36 +02:00
Milo Yip
3003b841d5 Merge pull request #391 from pah/fix/no-doc2value-move
Prohibit C++11 move from Document to Value
2015-07-20 16:55:49 +08:00
Milo Yip
9b28107016 Merge pull request #373 from mloskot/faq-issue-366
Add to FAQ: How to insert a document node into another document?
2015-07-20 09:31:24 +08:00
Milo Yip
f431aaff9d Update dom.zh-cn.md 2015-07-20 09:29:46 +08:00
Milo Yip
8c0e50f596 Update dom.md 2015-07-20 09:29:15 +08:00
Philipp A. Hartmann
fec9e8a4f2 prohibit C++11 move from Document to Value
As reported in #387, silently moving a `GenericDocument` to a
`GenericValue` can lead to object slicing and premature deletion of
the owning allocator of the (surviving) `GenericValue`.

To reduce this risk, prohibit move construction of a `GenericValue`
from a `GenericDocument`.
2015-07-17 08:24:43 +02:00
Milo Yip
823b731896 Merge pull request #376 from pah/feature/document-swap
add GenericDocument<>::Swap with std::swap() support
2015-07-13 21:14:02 +08:00
Philipp A. Hartmann
c2b5864927 add documentation for 'swap' friend functions 2015-07-13 14:38:24 +02:00
Philipp A. Hartmann
46e1696316 add free inline swap functions 2015-07-13 09:35:15 +02:00
Philipp A. Hartmann
0ebe16e169 add and use simplified "internal::Swap"
This avoids the dependency on the <algorithm> header, as suggested by
@miloyip in #376.
2015-07-10 17:06:52 +02:00
Milo Yip
9b3b2d0c87 Merge pull request #383 from yuzhaol/master
Make it usable with old VC8 (VS2005)
2015-07-10 10:10:58 +08:00
yuzhaol
7567752710 Declare intrinsic function to avoid LNK2019 in x64 debug mode
Add #pragma intrinsic(_umul128) for MSVS 2005
2015-07-09 22:42:24 +01:00
yuzhaol
8e61b72678 Declare intrinsic function to avoid LNK2019 in x64 debug mode
Add #pragma intrinsic(_umul128) for MSVS 2005
2015-07-09 22:39:38 +01:00
Milo Yip
709daab1fe Merge pull request #369 from mloskot/typed-ctor
Add GenericDocument ctor overload to specify JSON type.
2015-07-04 09:31:03 +08:00
Philipp A. Hartmann
dd901f498b add GenericDocument<>::Swap
See #368.
2015-07-04 01:57:24 +02:00
Milo Yip
eb5818a5a2 Merge pull request #374 from mloskot/faq-issue-368-update
Update FAQ 8 with shorter version of clean-and-minimize idiom
2015-07-03 10:15:04 +08:00
Mateusz Loskot
6610577a3e Update FAQ 8 with shorter version of clean-and-minimize idiom.
Credits to @pah who suggested it in comment to #368.
2015-07-02 14:14:51 +02:00
Mateusz Łoskot
5ac04cb012 Correct formatting of FAQ 8 and 9 2015-07-02 14:05:30 +02:00
Mateusz Loskot
50660c093d Add to FAQ: How to insert a document node into another document?
Closes #366
2015-07-02 14:00:52 +02:00
Mateusz Łoskot
8197805208 Add explicit specifier to GenericDocument ctor.
@pah recommended to mark this constructor as explicit to avoid accidentally creating a temporary GenericDocument from a Type enum value (because all arguments but the first one are optional).
2015-07-01 22:36:26 +02:00
Milo Yip
a45a289c0c Merge pull request #372 from mloskot/faq-issue-368
Add to FAQ: How to clear-and-minimize a document?
2015-06-30 18:03:06 +08:00
Mateusz Loskot
3c47ae9fe4 Add to FAQ: How to clear-and-minimize a document?
Closes #368
2015-06-30 11:33:44 +02:00
Mateusz Loskot
a0177ca210 Add documentation for new GenericDocument ctor taking object type.
Update also documentation of the existing GenericDocument constructor.
2015-06-30 10:28:07 +02:00
Mateusz Loskot
413144a8b2 Add GenericDocument ctor overload to specify JSON type.
It unifies the interfaces with Value where kXXXType can be passed
into constructor.
It enables shortcut that helps to avoid extra SetXXX() call following
construction of a document.
2015-06-26 16:00:49 +02:00
miloyip
5d5d90c100 Applies the same changes for Chinese as #365 2015-06-25 09:53:31 +08:00
Milo Yip
c752b6aa68 Merge pull request #365 from mloskot/patch-1
Add missing allocator to uses of AddMember
2015-06-25 09:24:56 +08:00
Mateusz Łoskot
74b41c1a43 Add missing allocator to uses of AddMember
AddMember requires allocator, this fix keeps all uses of AddMember consistent across the whole tutorial.
2015-06-24 17:22:48 +02:00
Justin Scheiber
ca8e3d5df4 Merge branch 'master' of https://github.com/miloyip/rapidjson 2015-06-22 09:52:47 -06:00
Milo Yip
a326314a61 Fix #538 2015-06-18 15:40:39 +08:00
miloyip
134369d990 Add google analytics to documentation 2015-06-10 17:44:55 +08:00
miloyip
4e8e99c157 Remove www in readme.zh-cn also 2015-06-06 21:41:19 +08:00
miloyip
19687067b7 Try to remove www 2015-06-06 21:29:52 +08:00
miloyip
93bf4ceb32 Add CMAKE in travis-doxygen 2015-06-05 14:08:15 +08:00
Milo Yip
3bc945fdce Change documentation URL to http://www.rapidjson.org 2015-06-05 09:57:11 +08:00
Milo Yip
935d0a3944 Remove emscripten test 2015-06-05 09:56:25 +08:00
Milo Yip
b540ac89a3 Merge pull request #353 from miloyip/issue349_EmscriptenDouble 2015-06-04 22:26:23 +08:00
Milo Yip
81678272a2 Fix #349 emscripten alignment issue 2015-06-04 16:07:43 +08:00
miloyip
ce0184e73b Add and fix -Wimplicit-fallthrough for clang, revert #350 2015-06-03 23:53:14 +08:00
miloyip
c5de8b2cb0 For diagnosis valgrind issue in travis 2015-06-03 23:27:46 +08:00
Milo Yip
1f78bc11ec Merge pull request #350 from c0nk/fix-clang-implicit-fallthrough
Fix warnings when compiling with clang and -Wimplicit-fallthrough
2015-06-03 22:29:33 +08:00
Kal Conley
013b71b92f Fix warnings when compiling with clang and -Wimplicit-fallthrough 2015-05-31 20:35:55 +02:00
Milo Yip
d4d03cab1c Use internal regex as default in schema validator 2015-05-29 19:04:17 +08:00
Milo Yip
b8d2f7e660 Merge regex into schema 2015-05-29 18:39:16 +08:00
Milo Yip
a8feeb4c3e Add invalid regex tests and fix a bug 2015-05-29 17:42:08 +08:00
Milo Yip
c0e7c8304b Fix a bug and add document in regex 2015-05-29 16:02:14 +08:00
Milo Yip
3eb19ceaf9 Add Search(), ^ and $ assertions to regex 2015-05-29 15:23:28 +08:00
miloyip
a5ac3b5dbc Remove an unused line of code 2015-05-28 10:44:52 +08:00
miloyip
960bc0eabd Fix gcc warning 2015-05-28 10:10:38 +08:00
miloyip
56b205264c Refactor to store minIndex in Frag of regex 2015-05-28 00:05:05 +08:00
miloyip
fa7dc1c439 Add numbered quantifier 2015-05-27 23:39:22 +08:00
miloyip
51bb7631f4 Refactor regex with DecodedStream with one look-ahead character 2015-05-27 14:25:00 +08:00
miloyip
0dffe87551 Add character class escapes 2015-05-27 09:56:06 +08:00
miloyip
92285bed44 Add escape characters and control characters 2015-05-27 09:37:55 +08:00
miloyip
1784afe5f7 Add character class to regex 2015-05-26 00:40:23 +08:00
miloyip
06853b89b0 Add any character (.) to regex 2015-05-25 22:51:03 +08:00
miloyip
3c9ceb32a5 Add doxygen notes for regex 2015-05-25 22:09:32 +08:00
miloyip
0934803ae1 Add Unicode regex test 2015-05-25 21:57:46 +08:00
miloyip
328b0d8afc Minor refactor regex 2015-05-25 19:49:07 +08:00
miloyip
994b0dfea2 Clean up regex 2015-05-25 19:42:23 +08:00
miloyip
a386934288 Add ?*+ to regex 2015-05-25 19:34:47 +08:00
miloyip
05c79891d1 Add parenthesis support in regex 2015-05-25 09:14:51 +08:00
miloyip
0bef29a5f6 Initial reggae implementation with only concatenation and alternation 2015-05-24 21:23:39 +08:00
miloyip
c8c8ad47c3 Further improve coverage of GenericPointer::Erase() 2015-05-21 17:02:27 +08:00
miloyip
7ddaa80e46 Improve coverage of GenericPointer::Erase() 2015-05-21 16:45:39 +08:00
miloyip
3ffac19f25 Fix compilation in schema test 2015-05-21 16:20:49 +08:00
miloyip
a2d09f0a03 Refactor GenericPointer::Erase() 2015-05-21 16:13:02 +08:00
miloyip
6e1d10ec6b Add GenericValue::EraseMember(string types) APIs 2015-05-21 16:12:33 +08:00
miloyip
1a570c342d Fix the undefined behaviour when negating the minimum value integers in Reader 2015-05-21 16:00:32 +08:00
miloyip
f688b2b152 Improve coverage of Pointer 2015-05-21 13:25:37 +08:00
Milo Yip
3229566573 Add multiple SkipWhitespace perftest 2015-05-20 13:33:14 +08:00
miloyip
85c8b657c0 Achieve zero heap allocation for SchemaValidator.TestSuite 2015-05-17 22:22:53 +08:00
miloyip
e20645f0d1 Add optional allocator for Pointer default/copy constructor 2015-05-17 22:20:56 +08:00
miloyip
a4cbd3f81b Refactor SchemaValidator.TestSuite to use MemoryPoolAllocator explicitly 2015-05-17 20:44:11 +08:00
miloyip
3919348602 Refactor hasher construction 2015-05-17 20:43:52 +08:00
miloyip
69c58b584f Use state allocator for all context states 2015-05-17 18:58:57 +08:00
miloyip
87d1f95551 Use state allocator for creating parallel validators 2015-05-17 18:06:43 +08:00
miloyip
7ef7ba13f0 Refactor: aggregate parallel validators 2015-05-17 13:07:12 +08:00
miloyip
5e220bbfbc Change schema literal strings to Value type, eliminates StrLen() 2015-05-17 11:02:53 +08:00
miloyip
a92c3b6995 Make schema working for UTF-16 and other encodings 2015-05-17 10:21:58 +08:00
miloyip
332c226f5e Remove Schema::Property::typeless member variable 2015-05-16 17:37:53 +08:00
Milo Yip
4335a62219 Merge remote-tracking branch 'origin/master' into schema 2015-05-16 16:28:29 +08:00
Milo Yip
9acea17d2f Fix nested ref 2015-05-16 16:15:00 +08:00
Milo Yip
5b6061c7e6 Fix meta schema validation 2015-05-16 15:51:36 +08:00
miloyip
11f666a793 Add more verbose info 2015-05-16 10:52:16 +08:00
miloyip
371b9286b1 Refactor move pointer into schema 2015-05-16 10:25:10 +08:00
miloyip
d452a548b8 Add verbose output for schema diagnosis 2015-05-16 10:13:36 +08:00
miloyip
84d74052c1 Fix memory bugs 2015-05-15 21:18:52 +08:00
Milo Yip
0fb2b803b8 Change $ref handling mechnism 2015-05-15 19:53:22 +08:00
Milo Yip
302d1b735f Re-generate images in OSX 2015-05-14 16:56:52 +08:00
Milo Yip
3e56b0c35d Add one more commit about std::string from master 2015-05-14 15:49:33 +08:00
Milo Yip
0e9fe888b7 v1.0.2 release 2015-05-14 15:49:26 +08:00
Milo Yip
424abf1edc Merge pull request #335 from miloyip/member_stdstring
Add Value::XXXMember(...) overloads for std::string
2015-05-14 14:56:35 +08:00
Milo Yip
82ff580faa Merge pull request #342 from miloyip/issue340_doubleparsebug
Fix some numbers parsed incorrectly
2015-05-14 14:00:47 +08:00
Milo Yip
add5a50581 Fix some numbers parsed incorrectly
Fix #340
2015-05-14 12:03:21 +08:00
miloyip
e0a8a327ea Add meta schema test (failing now) 2015-05-13 20:14:41 +08:00
miloyip
979088de60 Add 64-bit integer schema validations 2015-05-13 09:44:25 +08:00
Milo Yip
f8b3c65d7d Merge pull request #337 from Phyks/master
Forgot to update the CMakeLists.txt in doc folder
2015-05-13 07:21:28 +08:00
Phyks
9c008b07ee Forgot to update the CMakeLists.txt in doc folder 2015-05-12 20:15:06 +02:00
miloyip
2786103abd Add Value::XXXMember(...) overloads for std::string 2015-05-12 22:48:14 +08:00
Milo Yip
7562d0219a Merge pull request #334 from Phyks/master
Fix CMakeLists for include as a thirdparty in projects
2015-05-12 13:42:50 +08:00
Phyks
89ad34cef4 Fix CMakeLists for include as a thirdparty in projects 2015-05-12 00:23:50 +02:00
miloyip
1a59ab50dc Add invalid schema keyword 2015-05-11 23:53:03 +08:00
miloyip
a326c6814c Merge branch 'master' into schema 2015-05-11 22:05:12 +08:00
miloyip
7eb117a26e Reduce Pointer parsing/copying to single allocation 2015-05-11 21:41:26 +08:00
Milo Yip
0edd743c83 Fix Document.UserBuffer test 2015-05-11 13:58:45 +08:00
miloyip
98b66e3c5a Change Document::ParseStream() to use stack allocator for Reader 2015-05-11 13:58:02 +08:00
miloyip
3dc40a8f34 Fix MemoryPoolAllocator::Clear() to clear user-buffer 2015-05-11 13:57:50 +08:00
Milo Yip
5bc9523cbf Add invalid schema/document pointers 2015-05-11 13:55:34 +08:00
Milo Yip
6b7e7d769d Fix gcc warning 2015-05-11 11:13:28 +08:00
Milo Yip
8c258405f2 Fix Document.UserBuffer test 2015-05-11 11:03:50 +08:00
Milo Yip
544e26c147 Increase user buffer in documents 2015-05-11 10:33:29 +08:00
Milo Yip
f788702147 Fix compilation error 2015-05-11 10:21:11 +08:00
miloyip
3f1e2c4003 Use allocator in SchemaDocument 2015-05-11 00:37:18 +08:00
miloyip
c54b7faf7c Change Document::ParseStream() to use stack allocator for Reader 2015-05-10 23:26:58 +08:00
miloyip
69414cb4d6 Fix MemoryPoolAllocator::Clear() to clear user-buffer 2015-05-10 22:54:47 +08:00
miloyip
01393e0145 Add uniqueItems in schema 2015-05-10 17:44:43 +08:00
miloyip
aeb5bda600 Use Hasher to match enum in schema 2015-05-10 12:17:23 +08:00
miloyip
573faa9025 Try to fix a gcc warning 2015-05-10 10:47:21 +08:00
miloyip
74300ac718 Add Hasher::IsValid() 2015-05-10 10:26:33 +08:00
miloyip
c040d26c79 Disable printing hash code 2015-05-10 10:23:15 +08:00
miloyip
8209077b8a Try to fix effc++ warning 2015-05-10 09:00:37 +08:00
miloyip
1af660c8cb Add hasher 2015-05-10 08:59:58 +08:00
miloyip
8f5405a939 Fix compilation error 2015-05-09 22:49:36 +08:00
miloyip
44fbf9c174 Add meta schema file 2015-05-09 21:42:43 +08:00
miloyip
3873bcb714 Fix some remote ref issues 2015-05-09 21:36:30 +08:00
miloyip
42f1194a8d Add remote reference 2015-05-09 20:24:47 +08:00
miloyip
ed7e9bc9f0 Refactor template parameters in schema 2015-05-09 15:58:01 +08:00
miloyip
4a0b59121e Move private schema classes into internal namespace 2015-05-09 14:33:25 +08:00
miloyip
422aebf3ac Clean up schema 2015-05-09 14:22:04 +08:00
miloyip
f0c3fa84fc Add Ref in schema 2015-05-09 11:46:45 +08:00
miloyip
1e4a3818ed Centralise schema ownership to SchemaDocument 2015-05-09 09:19:22 +08:00
miloyip
a576a0f5d5 Merge branch 'master' into schema 2015-05-09 08:40:55 +08:00
miloyip
63a1db0907 Fix a bug in Pointer 2015-05-09 08:38:27 +08:00
miloyip
74f1bc582b Add schema map in SchemaDocument 2015-05-09 08:37:49 +08:00
miloyip
0e4c368952 Merge branch 'master' into schema 2015-05-08 22:19:27 +08:00
miloyip
771fa9879a Add Pointer::Append(Value, Allocator) overload 2015-05-08 22:18:46 +08:00
Milo Yip
677af55f70 Merge remote-tracking branch 'origin/master' into schema 2015-05-08 21:50:25 +08:00
Milo Yip
5dee394004 Add Pointer::Append() and fixed bugs in assignment and Parse() 2015-05-08 21:26:56 +08:00
Milo Yip
24f060f7cb Refactor template parameters and add ISchemaValidator 2015-05-08 18:39:26 +08:00
Milo Yip
a5eabe8d0c Rename classes in schema 2015-05-08 16:26:36 +08:00
miloyip
5f548ac9a1 Fix a bug related to if block 2015-05-08 15:22:28 +08:00
miloyip
dec1225c07 Fix warning and runtime delete error. 2015-05-08 15:07:31 +08:00
miloyip
fff931b512 Fix another compilation error 2015-05-08 14:09:46 +08:00
miloyip
09530ad834 Fix compilation 2015-05-08 14:03:05 +08:00
Milo Yip
490630b7cc Readd RAPIDJSON_SCHEMA_HAS_REGEX and fix compilation 2015-05-08 13:48:37 +08:00
Milo Yip
6b3244ead3 Remove RAPIDJSON_SCHEMA_HAS_REGEX 2015-05-08 13:44:52 +08:00
Milo Yip
314ee2281c Add multiple patternProperties match 2015-05-08 13:37:30 +08:00
miloyip
3d3555d373 Use move semantics for property name 2015-05-07 23:37:05 +08:00
miloyip
242d67fa8d Handle all properties in schema 2015-05-07 23:05:05 +08:00
miloyip
e9dd5fffa6 Add schema dependencies (not handling missing property)
[ci skip]
2015-05-07 18:27:17 +08:00
miloyip
9e907ea219 Remove unused multiTypeSchema 2015-05-07 17:22:16 +08:00
Milo Yip
761561a28d Fix clang compilation and a memory leak 2015-05-07 17:09:55 +08:00
miloyip
1948fb5786 Fix multipleOf in schema tests 2015-05-07 16:42:41 +08:00
miloyip
e33049d288 Fix minLength & maxLength with code point instead of code unit 2015-05-07 16:15:09 +08:00
miloyip
9c0e409ff2 Fix "additional items do not match schema" 2015-05-07 15:36:48 +08:00
Milo Yip
f19a1b6abc Fix clang errors/warnings 2015-05-07 15:12:25 +08:00
miloyip
bbbd1c6f5e Schema code simplification 2015-05-07 15:05:55 +08:00
miloyip
838e29f482 Remove polymorphism in schema 2015-05-07 10:26:13 +08:00
miloyip
a274063ab2 Massive refactoring of schema 2015-05-07 00:59:51 +08:00
miloyip
a30a641c3e Fix warnings 2015-05-06 21:24:01 +08:00
miloyip
ca2061acef Turn off some not-yet-implemented test cases, and fix a few
[ci skip]
2015-05-06 18:31:56 +08:00
miloyip
5ad3639dd5 Add Json Schema Test Suite
[ci skip]
2015-05-06 18:11:57 +08:00
miloyip
15c712dc8f Attempt to make correct implementation of logic combiners 2015-05-06 16:29:11 +08:00
Justin Scheiber
5be9b6e584 update the submodule fore google test 2015-05-05 22:41:35 -06:00
Justin Scheiber
1f4211e25a Merge branch 'master' of https://github.com/miloyip/rapidjson 2015-05-05 22:08:28 -06:00
Milo Yip
f4e357f65d Merge pull request #329 from nightmouse/master
Warning cleanup
2015-05-06 11:42:46 +08:00
Milo Yip
286aa8a67c Merge pull request #328 from isanych/master
Fix alignment of 64bit platforms
2015-05-06 10:50:12 +08:00
miloyip
a72c35b9fa Workaround for Valgrind false alarm on wcscmp() 2015-05-06 10:49:01 +08:00
Justin Scheiber
f7c184d36a Revert "add -Werror for clang and gcc"
This reverts commit d0c37814563cd842f7ee7638ad07e7c678032113.
2015-05-05 18:02:03 -06:00
Justin Scheiber
d0c3781456 add -Werror for clang and gcc 2015-05-05 15:33:31 -06:00
Justin Scheiber
050be06e52 fixing conversion warnings 2015-05-05 14:37:18 -06:00
Justin Scheiber
97d489c247 fix shadow warnings on gcc 4.8 (-Wshadow) 2015-05-05 14:02:10 -06:00
Igor Kostenko
1576cde592 Fix alignment of 64bit platforms 2015-05-05 17:39:16 +01:00
Justin Scheiber
33b7a4bae0 don't try to use google's servers 2015-05-05 09:26:22 -06:00
Milo Yip
d6871c3f15 Fix warnings 2015-05-05 21:43:27 +08:00
Milo Yip
eb7d02b51d Add anyOf, oneOf and not in schema (buggy) 2015-05-05 18:27:22 +08:00
Milo Yip
1062f0a46b Add allOf in schema 2015-05-05 16:44:05 +08:00
Milo Yip
c2649a36c6 Disable patternProperties tests when no regex 2015-05-05 10:52:31 +08:00
Milo Yip
efc1932c0d Travis gcc/clang versions cannot support C++11 well 2015-05-05 10:28:26 +08:00
miloyip
d5c2f2ec78 Add patternProperties in schema 2015-05-05 00:47:06 +08:00
miloyip
8366bb8975 Add string pattern in schema 2015-05-05 00:08:36 +08:00
Milo Yip
ba7647531b Fix incorrect doxygen escapes 2015-05-04 22:13:14 +08:00
Milo Yip
8c01e7e1ce Add Pointer::Erase() and EraseValueByPointer() 2015-05-04 21:50:26 +08:00
miloyip
87adfd464a Merge remote-tracking branch 'origin/master' into schema 2015-05-04 18:25:24 +08:00
miloyip
a3e5fcf490 Minor grammar corrections 2015-05-04 18:22:40 +08:00
miloyip
5bec8b99bb Minor modification to Pointer guide 2015-05-04 17:28:37 +08:00
miloyip
1086297f13 Fix Pointer guide punctuations 2015-05-04 17:05:01 +08:00
Milo Yip
2acc1e9a3d Merge pull request #327 from miloyip/json-pointer
Implementation of Json Pointer
2015-05-04 16:53:20 +08:00
miloyip
5543a090c0 Draft Pointer guide 2015-05-04 16:32:02 +08:00
miloyip
436625f83c Fix ambiguous cases in Pointer::Create() 2015-05-04 15:02:43 +08:00
miloyip
b6a54f7244 Add API doc for GenericPointer, rename some (template) parameters 2015-05-04 13:32:44 +08:00
miloyip
b0c6a9d7f9 Merge remote-tracking branch 'origin/master' into json-pointer 2015-05-04 10:29:25 +08:00
miloyip
56568fd73f Add GenericValue::ValueType and fix warning for SetString(std::string, Allocator) 2015-05-04 10:25:31 +08:00
miloyip
e7bcedb4f4 Simplify code 2015-05-04 10:21:30 +08:00
miloyip
1135ef6622 Fix VC2013 false alarm warning 2015-05-04 10:08:23 +08:00
miloyip
fc7b0a04a1 Add const Value& version of SetValueByPointer() and improve coverage 2015-05-04 10:06:31 +08:00
miloyip
a5d700e9e8 Implemented property dependencies of schema 2015-05-04 01:08:42 +08:00
miloyip
c629d37a00 Simplify FindMember() in schema 2015-05-04 00:20:15 +08:00
miloyip
45bed001ee Remove unusable StringRef overloads 2015-05-03 23:44:58 +08:00
miloyip
524974deec Add Validation of UTF-8 sequence for percent encoding, also improves coverage 2015-05-03 21:58:55 +08:00
miloyip
c35d47f83c Change copyright header of pointer test 2015-05-03 21:37:12 +08:00
miloyip
86d298cd46 Merge branch 'master' into json-pointer 2015-05-03 21:24:51 +08:00
miloyip
1c98609ada Standardize MemoryPoolAllocator::Realloc() also, and improve coverage 2015-05-03 21:23:13 +08:00
miloyip
6fdfc90bb2 Merge branch 'master' into json-pointer 2015-05-03 21:07:33 +08:00
miloyip
ae61b7973c Standardize CrtAllocator::Realloc() for newSize = 0 2015-05-03 21:02:34 +08:00
miloyip
3c73975513 Fix 2 FILE* leaks in documenttest.cpp 2015-05-03 20:52:44 +08:00
miloyip
bfd47a70ed Fix merge conflict 2015-05-03 20:30:46 +08:00
miloyip
7fc716006f Merge branch 'master' into json-pointer
Conflicts:
	test/unittest/CMakeLists.txt
2015-05-03 20:27:21 +08:00
miloyip
369cf2a8b7 Fix wcscmp() causing false alarm in Valgrind 2015-05-03 20:11:55 +08:00
miloyip
b55a9bcacb Try diagnosis Valgrind error 2015-05-03 19:58:25 +08:00
miloyip
f55002c9a2 Try to fix valgrind error 2015-05-03 19:27:12 +08:00
miloyip
6582160a12 Fix out-of-bound access in percent decode 2015-05-03 19:14:58 +08:00
miloyip
bb0e828928 Some std::string overloads for Pointer 2015-05-03 18:55:55 +08:00
miloyip
0eb6cb8e5f Add equality/inequality operator, URI fragment stringify and UTF-8 Percent Encoding/Decoding 2015-05-03 14:14:05 +08:00
miloyip
28f14bd68f Add parsing of URI fragment representation of JSON pointer 2015-05-03 09:51:15 +08:00
miloyip
2ee15de4a9 Add no allocator overloads for Swap 2015-05-02 22:58:41 +08:00
miloyip
fd9386589f Add overloads for document as root, with no allocator parameter. 2015-05-02 22:46:30 +08:00
miloyip
d0d18847c5 Add GetValueByPointerWithDefault() overloads 2015-05-02 22:08:03 +08:00
miloyip
32b45f6e6d Add GetWithDefault() overloads 2015-05-02 21:52:49 +08:00
miloyip
2ddbd09031 Add '-' support for Create() and Set() 2015-05-02 21:30:40 +08:00
miloyip
2ece55abc7 Implement pointer parse error 2015-05-02 20:44:30 +08:00
miloyip
1ef380586d Fix a bug in Pointer::Create() and Add different overloads for Set() related implementations 2015-05-02 20:07:50 +08:00
miloyip
0713b8931d Implement Multi-type 2015-05-02 17:46:55 +08:00
miloyip
e0c26e44c0 Fix the test, and refactor to simplify 2015-05-02 12:24:23 +08:00
miloyip
ae645a2ce4 Fix a bug in additionalItems 2015-05-02 11:03:58 +08:00
Milo Yip
602f87545e Add a failed case 2015-05-02 10:28:10 +08:00
Milo Yip
05ae593583 Implement additionalItems 2015-05-02 10:06:48 +08:00
miloyip
33b5c59e5d Fix some gcc warnings/errors 2015-05-01 22:38:00 +08:00
miloyip
9a5283eb0a Fix mismatched delete 2015-05-01 21:42:26 +08:00
miloyip
5c93e64c68 Fix clang compilation 2015-05-01 20:16:41 +08:00
Milo Yip
c1bcccb16a Very basic JSON schema implementation 2015-05-01 17:59:31 +08:00
Milo Yip
ea7b39b960 Update installation section of zh-cn readme 2015-05-01 08:10:21 +08:00
miloyip
c1b66cc082 Fix incorrect API in tutorial document. 2015-04-28 22:41:31 +08:00
Milo Yip
0be627430d Merge pull request #322 from miloyip/issue321_includerapidjson
Include rapidjson.h in error/error.h and internal/*.h
2015-04-28 11:03:01 +08:00
miloyip
dba6d6f1b5 Include rapidjson.h in error/error.h and internal/*.h
Fixes #321
2015-04-28 10:09:37 +08:00
Milo Yip
cca4013dcf Merge pull request #320 from guoxiao/https
Fix warnings when visited via https
2015-04-26 21:37:52 +08:00
Guo Xiao
8f891403bc Fix warnings when visited via https 2015-04-26 20:54:50 +08:00
Milo Yip
d2269f65f6 Update CHANGELOG.md 2015-04-25 16:01:10 +08:00
Milo Yip
a592e199e7 Update CHANGELOG.md 2015-04-25 15:53:51 +08:00
Milo Yip
b55fe077b6 Merge pull request #318 from miloyip/release1.0.1
Release1.0.1
2015-04-25 15:50:26 +08:00
Milo Yip
2e913bfea6 Update readme badge to version 1.0.1 also 2015-04-25 10:18:30 +08:00
Milo Yip
316292d518 Change version to 1.0.1 2015-04-25 09:52:59 +08:00
Milo Yip
4f20541339 Add change log 2015-04-25 09:49:31 +08:00
Milo Yip
d38558ffd7 Merge pull request #314 from miloyip/issue313_exponentoverflow
Fix #313 Assertion In `Pow10.h` is triggered in Document::Parse
2015-04-25 08:54:45 +08:00
Milo Yip
1a2d99df50 Merge pull request #317 from mitza-oci/patch-1
Fixed to build on older versions of 32-bit MSVC
2015-04-25 08:54:38 +08:00
Adam Mitz
a9250d170d Fixed to build on older versions of 32-bit MSVC 2015-04-24 13:32:00 -05:00
Milo Yip
7708215b60 Try to fix #313 again 2015-04-25 00:13:09 +08:00
Milo Yip
735354efd3 Separate handling for pos/neg exp and improve pos exp overflow 2015-04-24 22:50:42 +08:00
Milo Yip
93d13ad2ac Fix #313 Assertion In Pow10.h is triggered in Document::Parse 2015-04-24 21:44:42 +08:00
Milo Yip
7f43373a12 Merge pull request #311 from miloyip/issue310_versionmacro
RapidJSON v1.0.0
2015-04-22 10:26:03 +08:00
miloyip
b2e53523bf Change version in appveyor 2015-04-22 09:24:56 +08:00
miloyip
5ab3f69910 Simplify RAPIDJSON_VERSION_STRING 2015-04-22 09:19:18 +08:00
Milo Yip
de137a2567 Merge pull request #312 from jollyroger/find_gtest
Introduce option to select default gtest installation
2015-04-21 18:37:43 +08:00
Andrii Senkovych
04b673686a Introduce option to select default gtest installation. Refs #309
This will introduce RAPIDJSON_BUILD_THIRDPARTY_GTEST option. If it is set to
TRUE, cmake will look for GTest installation in `thirdparty/gtest` before
looking in other places.

Current default value (OFF) for RAPIDJSON_BUILD_THIRDPARTY_GTEST represents
previous behaviour when system-wide gtest installation is used whenever
possible.

This commit will as well eliminate problem described in #309 when source
directory found is `thirdparty/gtest` while include files are found
system-wide. This however won't give the user possibility to select gtest
installation to use.
2015-04-21 13:33:44 +03:00
miloyip
95c6ec97c4 Add release badge to readmes 2015-04-21 17:28:31 +08:00
miloyip
5ab1e9361d Add version macros for RapidJSON 2015-04-21 16:38:49 +08:00
miloyip
8d39282af5 Update license headers for tests 2015-04-18 21:41:38 +08:00
miloyip
aa61b08d11 Fix warnings for misctest 2015-04-18 21:31:56 +08:00
miloyip
f7a64c5eae Add RAPIDJSON_LIKELY/UNLIKELY and apply them in stack 2015-04-18 21:31:25 +08:00
miloyip
adb7d17eff Fix warnings for misctest 2015-04-18 20:30:40 +08:00
Milo Yip
0e8bbe5e3e Standardize behavior of CrtAllocator::Malloc() 2015-04-17 13:01:14 +08:00
Milo Yip
4cd14b7c0e Merge pull request #305 from pah/fix/strict-memcpy
Avoid calling memcpy with NULL pointers
2015-04-17 12:28:37 +08:00
Philipp A. Hartmann
0c5c1538dc Avoid calling memcpy with NULL pointers
According to the C/C++ standards, calling `memcpy(NULL, NULL, 0)` is
undefined behaviour. Recent GCC versions may rely on this by optimizing
NULL pointer checks more aggressively, see [1].

This patch tries to avoid calling std::memcpy with zero elements.
As a side effect, explicitly return NULL when requesting an empty block
from MemoryPoolAllocator::Malloc.

This may be related to #301.

[1] https://gcc.gnu.org/gcc-4.9/porting_to.html
2015-04-16 21:05:08 +02:00
miloyip
30ace6fa95 Fix mistake in perftest 2015-04-16 10:55:42 +08:00
miloyip
556d154bed Search sample data in more folders for perftest 2015-04-16 10:34:45 +08:00
miloyip
22021d6622 Converts tabs to spaces 2015-04-16 10:15:23 +08:00
miloyip
a7763cbeca Fix allocator test 2015-04-16 09:42:22 +08:00
miloyip
67a3ee39b5 Fix coveralls 2015-04-16 00:29:28 +08:00
Milo Yip
b1fd2f18e1 Update readme.zh-cn.md
Add build status
2015-04-16 00:16:34 +08:00
Milo Yip
e857b082fb Update readme.md
Add coverall badges
2015-04-16 00:11:41 +08:00
Milo Yip
75ee552f49 Merge pull request #304 from miloyip/issue298_coverage
100% line of code coverage
2015-04-15 23:58:59 +08:00
miloyip
0edf27fa0c Only do coverage on gcc/debug 2015-04-15 22:55:35 +08:00
Milo Yip
0571a211bd Cover SkipWhiteSpace for InsituStringStream 2015-04-15 22:36:00 +08:00
Milo Yip
8f2add7527 Not enforce force inline for debug configuration 2015-04-15 22:23:00 +08:00
Milo Yip
4d3c64acee Improves SkipWhitespace test 2015-04-15 21:07:30 +08:00
Milo Yip
a81585b5e2 Further improve SkipWhitespace coverage 2015-04-15 20:51:36 +08:00
Milo Yip
998e76fecc Improves SkipWhitespace coverage 2015-04-15 20:38:46 +08:00
miloyip
ee505261c1 Try to use another namespace for SIMD version 2015-04-15 18:34:18 +08:00
miloyip
a32d8b7650 Add SIMD SkipWhitespace() unit test which don't run in Valgrind 2015-04-15 18:18:57 +08:00
Milo Yip
fa32ec8991 Merge pull request #302 from thebusytypist/issue298_coverage
Improve code coverage for iterative parsing
2015-04-15 16:32:22 +08:00
thebusytypist
6ef29ff431 Fix warning about unused argument. 2015-04-15 16:09:29 +08:00
thebusytypist
0d28bb13c7 Add a missing error handling check(a single number as JSON root). 2015-04-15 15:46:31 +08:00
thebusytypist
5ae48a0380 Assert on impossible state transition in Transit(); Put the last case and all non-enumerated cases(also supply assertion for them) in for code coverage. 2015-04-15 15:21:42 +08:00
miloyip
3f562e118f Fix "SSE 4.1 -> SSE 4.2" typo and add some comments about SIMD in internals and FAQ 2015-04-15 14:57:29 +08:00
thebusytypist
399333226b Use assertion for impossible case(The Predict() can ensure the token is ColonToken, otherwise it would be marked as Error state. So there is no need to check ColonToken again). 2015-04-15 14:54:44 +08:00
thebusytypist
8576747373 Add unittest for state transition to IterativeParsingMemberKeyState. 2015-04-15 14:51:48 +08:00
thebusytypist
7cb031cc03 Add unittests for parsing root JSON value other than array and object. 2015-04-15 14:45:07 +08:00
miloyip
631302e68e Reduce random test iterations to speedup travis 2015-04-15 14:41:33 +08:00
miloyip
c69ff41fc2 Add tests for parsing number with exhaustive exponents and random signifcant 2015-04-15 14:23:00 +08:00
miloyip
76d67b7eae Improves coverage of Value::Accept() 2015-04-15 12:16:16 +08:00
miloyip
2689cc4974 Remove more unused code paths in double conversions 2015-04-15 11:52:24 +08:00
miloyip
402d75a801 Fix gcc warning 2015-04-15 11:07:13 +08:00
miloyip
37d820a13e Remove unused code paths in double conversions 2015-04-15 10:58:49 +08:00
miloyip
5b89f331c5 Add more test numbers for writer 2015-04-15 00:18:22 +08:00
miloyip
5f5758bc22 Try coverage on gcc/release also 2015-04-14 23:26:00 +08:00
Milo Yip
f8909e875b Improve coverage of encoded streams 2015-04-14 21:50:13 +08:00
Milo Yip
afe2fbdc3f Fix the warnings again 2015-04-14 21:30:57 +08:00
Milo Yip
84e5741204 Fix gcc warning 2015-04-14 21:23:44 +08:00
Milo Yip
872aba660c Improve coverage of encoded streams 2015-04-14 21:08:33 +08:00
miloyip
4be4857a19 Remove ununused BigInteger::FullAdd() 2015-04-14 14:58:48 +08:00
miloyip
3621235cd0 Improve dtoa coverage 2015-04-14 14:52:42 +08:00
miloyip
4824f12efb Fixed a bug in trimming long number sequence 2015-04-14 13:59:05 +08:00
miloyip
4cc62876ae Add some parsing number tests 2015-04-14 13:22:39 +08:00
miloyip
3a92374011 Try turning on slow test on number parsing 2015-04-14 12:01:41 +08:00
miloyip
5dc52afd1e Ignore files for coverage 2015-04-14 11:40:09 +08:00
miloyip
81c539e739 Merge remote-tracking branch 'origin/master' into issue298_coverage 2015-04-14 11:29:58 +08:00
Milo Yip
94c0082e38 Merge pull request #300 from miloyip/RemoveFileStream
Remove deprecated FileStream
2015-04-14 11:29:34 +08:00
miloyip
9dcc1f44f5 Remove deprecated test 2015-04-14 11:09:45 +08:00
miloyip
67be9ed2cb Remove depreciated FileStream 2015-04-14 11:08:47 +08:00
miloyip
f89c4b52b6 Use PrettyWriter to cover FileWriteStream::PutN() 2015-04-14 10:50:39 +08:00
miloyip
3675b33a2a Search more paths for different build situations 2015-04-14 10:35:45 +08:00
miloyip
3f7a3bcc04 Add separate allocators test 2015-04-14 10:19:05 +08:00
miloyip
c0ba5cffcd Add comment 2015-04-14 10:01:22 +08:00
miloyip
056125db82 Improve coverage of Stack 2015-04-14 10:00:53 +08:00
miloyip
bff588e665 Typo 2015-04-14 09:50:22 +08:00
miloyip
5dde9ae45e Cover MemoryPoolAllocator::Capacity() 2015-04-14 09:49:55 +08:00
miloyip
f51c0141c5 Improve coverage of encodings 2015-04-14 00:39:54 +08:00
miloyip
933c4a6cb1 Improve Value deep-clone coverage 2015-04-13 23:12:57 +08:00
miloyip
4bcedab513 Try to improve coverage of encodings 2015-04-13 23:03:00 +08:00
miloyip
04011cdae2 Adjust spaces 2015-04-13 22:46:27 +08:00
miloyip
985971a563 Fix gcc/clang compilation 2015-04-13 22:46:09 +08:00
Milo Yip
3bc95ecd7c Add coverage for Document::ParseXXX() 2015-04-13 22:04:00 +08:00
miloyip
65bffef4b1 Merge remote-tracking branch 'origin/master' into issue298_coverage 2015-04-13 18:39:06 +08:00
miloyip
59ffb9e5f0 Try to fix a gcc/clang error 2015-04-13 18:32:11 +08:00
miloyip
2d07198863 Fix compilation 2015-04-13 18:24:10 +08:00
miloyip
e7f1c6dd08 Remove an invalid Document::ParseInsitu() API 2015-04-13 18:21:15 +08:00
miloyip
d439f989bf Add valuetest coverage 2015-04-13 18:10:07 +08:00
miloyip
074554965d Improve Reading kParseErrorTermination coverage 2015-04-13 17:07:15 +08:00
miloyip
331009a321 Fix gcc warning 2015-04-13 16:49:10 +08:00
miloyip
7e1a6a1bb2 Add Reader kParseErrorTermination coverage 2015-04-13 16:45:00 +08:00
miloyip
23809ddef6 Revert "Enable SIMD macros in unit tests"
This reverts commit bcd879653fd0044931db5387dca2ac22005e0101.
2015-04-13 16:27:49 +08:00
miloyip
bcd879653f Enable SIMD macros in unit tests 2015-04-13 16:13:39 +08:00
miloyip
affd2736c3 Fix gcc warning for itoatest 2015-04-13 15:22:26 +08:00
miloyip
0b793ea58a Add test for covering PutN() generic version 2015-04-13 15:18:26 +08:00
miloyip
e9b92256a2 Add itoatest 2015-04-13 15:11:32 +08:00
miloyip
18a8891f0d Improve coverage for Writer and PrettyWriter 2015-04-13 14:50:08 +08:00
miloyip
3c028685df Add tests for Writer API for RAPIDJSON_HAS_STDSTRING 2015-04-13 14:25:05 +08:00
miloyip
3d82781a75 Improve PrettyWriter coverage 2015-04-13 14:17:21 +08:00
miloyip
127ce7175a Add a missing error handling for Writer, and add tests for invalid encoding. 2015-04-13 14:05:43 +08:00
miloyip
79433827e8 Add Tests for WriteUInt64(), WriteInt64() of generic stream 2015-04-13 13:41:56 +08:00
miloyip
fddffbe82b Revert "Try disabling inline for coverage"
This reverts commit 6a622aa0d095998bf6619b613643cb240c5336e3.
2015-04-13 13:21:45 +08:00
miloyip
6a622aa0d0 Try disabling inline for coverage 2015-04-13 13:08:29 +08:00
miloyip
a0a6d737fc Fix gcc compilation 2015-04-13 11:13:03 +08:00
miloyip
752afa7b79 Add prettywritertest 2015-04-13 10:58:05 +08:00
miloyip
35d0577e80 Try to fix doxygen problem 2015-04-13 00:44:52 +08:00
miloyip
d05801901a Activate coveralls/gcov for code coverage analysis 2015-04-13 00:32:24 +08:00
miloyip
6ee691550f Move GenericPointer::kInvalidIndex to rapidjson::kPointerInvalidIndex
It is needed to prevent linking error for gcc/clang
2015-04-11 14:48:33 +08:00
Milo Yip
519a899fa1 Merge pull request #296 from miloyip/issue294_WriteIntSegFault
Try to fix a potential seg fault on some compiler
2015-04-11 12:25:45 +08:00
miloyip
e346b93325 Try to fix a potential set fault on some compiler
Merge the fix from https://github.com/miloyip/itoa-benchmark/issues/8
2015-04-11 12:10:44 +08:00
Milo Yip
6f4337c555 Merge pull request #295 from miloyip/issue287_WarningFloatEqual
Fix several -Wfloat-equal related comments in #293
2015-04-11 11:52:45 +08:00
miloyip
cb59a5a9a2 Correct the Value::operator==() for double. 2015-04-11 11:34:44 +08:00
miloyip
55f8339a0a Compare exact binary representation for full precision test
Conflicts:
	doc/diagram/simpledom.png
2015-04-11 11:26:47 +08:00
Milo Yip
7e24024f51 Merge pull request #293 from miloyip/issue287_WarningFloatEqual
Add -Wfloat-equal and fix all derived warnings
2015-04-11 01:06:47 +08:00
Milo Yip
a0a361d2b5 Merge pull request #292 from shindo/pull-FindPackageHandleStandardArgs
fixed 'Unknown CMake command "find_package_handle_standard_args"'
2015-04-11 01:05:26 +08:00
Milo Yip
5ae85e67f6 Yet two more warnings 2015-04-11 00:41:09 +08:00
Danil Osherov
2e0a2f61f4 CMake: fixed 'Unknown CMake command "find_package_handle_standard_args"'.
Added INCLUDE(FindPackageHandleStandardArgs) before using find_package_handle_standard_args().
2015-04-10 19:34:55 +03:00
Milo Yip
d7ad55f49e Another two warnings 2015-04-11 00:20:10 +08:00
Milo Yip
09448e980b Another warning in valuetest 2015-04-11 00:12:15 +08:00
Milo Yip
2452afbf3c Fix -Wfloat-equal warnings in Value::operator== and valuetest 2015-04-11 00:02:17 +08:00
Milo Yip
e04d66bdd8 Try to use EXPECT_NEAR 2015-04-10 23:47:53 +08:00
Milo Yip
c18812a36a Fix yet another -Wfloat-equal warning 2015-04-10 23:37:20 +08:00
Milo Yip
bd435f76ab Another trial to fix the kInvalidIndex problem 2015-04-10 23:32:28 +08:00
Milo Yip
2524693cfd Suppress float-equal in readertest.cpp 2015-04-10 23:24:33 +08:00
Milo Yip
fb4f321d82 Fix another -Wfloat-equal warning 2015-04-10 23:10:08 +08:00
Milo Yip
c7bcdb9c0c Fix a clang/gcc linker error
static const member integer not working
2015-04-10 23:06:17 +08:00
Milo Yip
dfba62e143 Fixed two -Wfloat-equal warnings 2015-04-10 22:57:41 +08:00
Milo Yip
53ed550a5e Merge remote-tracking branch 'origin/master' into issue287_WarningFloatEqual 2015-04-10 22:50:24 +08:00
Milo Yip
e0743b2fb0 Fix a clang/gcc warning 2015-04-10 22:43:46 +08:00
Milo Yip
26be3be5c7 Fix several clang/gcc warnings 2015-04-10 22:12:59 +08:00
Milo Yip
dfc864b1d3 Fix a bug in Pointer::Create() which makes it very slow 2015-04-10 22:06:56 +08:00
Milo Yip
02aa12a29e Merge pull request #291 from miloyip/issue289_NegativeZeroRoundtrip
Fix #289 negative zero roundtrip (double only)
2015-04-10 21:53:58 +08:00
Milo Yip
1b9cab7f12 Try to fix more gcc/clang compilation errors 2015-04-10 21:40:18 +08:00
Milo Yip
f73ec57241 Add -Wfloat-equal to reproduce warnings 2015-04-10 21:30:42 +08:00
Milo Yip
928d3421b4 Merge pull request #290 from miloyip/issue288_QuoteInUnicodeEscape
Fix #288 double quote in unicode escape
2015-04-10 21:25:04 +08:00
Milo Yip
e5cf3b85f3 Fix #289 negative zero roundtrip (double only) 2015-04-10 21:24:29 +08:00
Milo Yip
601a62e5b3 Try to fix a gcc/clang issue after removing Document::ValueType 2015-04-10 20:59:39 +08:00
Milo Yip
b7e34100ed Fix #288 double quote in unicode escape 2015-04-10 20:36:27 +08:00
Milo Yip
b2d72ef751 Add XXXByPointer() helper functions 2015-04-10 19:28:12 +08:00
Milo Yip
cf0ff19cac Add Pointer default/copy constructor, assignment operator. Test constructor with tokens 2015-04-10 18:25:02 +08:00
Milo Yip
c11547ebfa Implement Pointer::Create(). Get(). GetWithDefault(). Set(). Swap() 2015-04-10 17:43:11 +08:00
Milo Yip
852c25123c Implement parser/generator for JSON Pointer 2015-04-10 14:54:13 +08:00
247 changed files with 48313 additions and 14303 deletions

22
.gitattributes vendored Normal file
View 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

7
.gitignore vendored
View File

@ -2,6 +2,8 @@
!/bin/data
!/bin/encodings
!/bin/jsonchecker
!/bin/types
!/bin/unittestschema
/build
/doc/html
/doc/doxygen_*.db
@ -19,4 +21,9 @@ Testing
/googletest
install_manifest.txt
Doxyfile
Doxyfile.zh-cn
DartConfiguration.tcl
*.nupkg
# Files created by OS
*.DS_Store

2
.gitmodules vendored
View File

@ -1,3 +1,3 @@
[submodule "thirdparty/gtest"]
path = thirdparty/gtest
url = https://chromium.googlesource.com/external/googletest.git
url = https://github.com/google/googletest.git

View File

@ -1,44 +1,167 @@
sudo: required
dist: xenial
language: cpp
cache:
- ccache
compiler:
- clang
- gcc
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- cmake
- valgrind
- clang-8
env:
matrix:
- CONF=debug ARCH=x86_64
- CONF=release ARCH=x86_64
- CONF=debug ARCH=x86
- CONF=release ARCH=x86
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
- GITHUB_REPO='miloyip/rapidjson'
- ARCH_FLAGS_aarch64='-march=armv8-a'
- GITHUB_REPO='Tencent/rapidjson'
- secure: "HrsaCb+N66EG1HR+LWH1u51SjaJyRwJEDzqJGYMB7LJ/bfqb9mWKF1fLvZGk46W5t7TVaXRDD5KHFx9DPWvKn4gRUVkwTHEy262ah5ORh8M6n/6VVVajeV/AYt2C0sswdkDBDO4Xq+xy5gdw3G8s1A4Inbm73pUh+6vx+7ltBbk="
before_install:
- sudo apt-get update -qq
- sudo apt-get install -qq cmake doxygen valgrind
- if [ "$ARCH" = "x86" ]; then sudo apt-get install -qq g++-multilib libc6-dbg:i386; fi
matrix:
include:
# gcc
- env: CONF=release ARCH=x86 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=OFF
compiler: gcc
arch: amd64
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=OFF
compiler: gcc
arch: amd64
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=ON
compiler: gcc
arch: amd64
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=OFF CXX20=OFF MEMBERSMAP=OFF
compiler: gcc
arch: amd64
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=OFF CXX20=OFF MEMBERSMAP=OFF
compiler: gcc
arch: amd64
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=ON CXX20=OFF MEMBERSMAP=ON CXX_FLAGS='-D_GLIBCXX_DEBUG'
compiler: gcc
arch: amd64
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=ON CXX20=OFF MEMBERSMAP=ON CXX_FLAGS='-D_GLIBCXX_DEBUG'
compiler: gcc
arch: amd64
- env: CONF=release ARCH=aarch64 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=OFF
compiler: gcc
arch: arm64
- env: CONF=release ARCH=aarch64 CXX11=OFF CXX17=OFF CXX20=OFF MEMBERSMAP=OFF
compiler: gcc
arch: arm64
- env: CONF=release ARCH=aarch64 CXX11=OFF CXX17=ON CXX20=OFF MEMBERSMAP=ON
compiler: gcc
arch: arm64
# clang
- env: CONF=release ARCH=x86 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
compiler: clang
arch: amd64
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
compiler: clang
arch: amd64
- env: CONF=release ARCH=x86_64 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=OFF CCACHE_CPP2=yes
compiler: clang
arch: amd64
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=OFF CXX20=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
compiler: clang
arch: amd64
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=OFF CXX20=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
compiler: clang
arch: amd64
- env: CONF=debug ARCH=x86 CXX11=OFF CXX17=ON CXX20=OFF MEMBERSMAP=OFF CCACHE_CPP2=yes
compiler: clang
arch: amd64
- env: CONF=debug ARCH=x86_64 CXX11=OFF CXX17=ON CXX20=OFF MEMBERSMAP=OFF CCACHE_CPP2=yes
compiler: clang
arch: amd64
- env: CONF=debug ARCH=aarch64 CXX11=ON CXX17=OFF CXX20=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
compiler: clang
arch: arm64
- env: CONF=debug ARCH=aarch64 CXX11=OFF CXX17=OFF CXX20=OFF MEMBERSMAP=ON CCACHE_CPP2=yes
compiler: clang
arch: arm64
- env: CONF=debug ARCH=aarch64 CXX11=OFF CXX17=ON CXX20=OFF 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 CXX20=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 CXX20=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 CXX20=OFF
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
install: true
before_install:
- if [ "x86_64" = "$(arch)" ]; then sudo apt-get install -y g++-multilib libc6-dbg:i386 --allow-unauthenticated; fi
before_script:
# hack to avoid Valgrind bug (https://bugs.kde.org/show_bug.cgi?id=326469),
# exposed by merging PR#163 (using -march=native)
- sed -i "s/-march=native//" CMakeLists.txt
- mkdir build
- >
eval "ARCH_FLAGS=\${ARCH_FLAGS_${ARCH}}" ;
(cd build && cmake
-DRAPIDJSON_HAS_STDSTRING=ON
-DCMAKE_VERBOSE_MAKEFILE=ON
-DCMAKE_BUILD_TYPE=$CONF
-DCMAKE_CXX_FLAGS="$ARCH_FLAGS" ..)
# 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
-DRAPIDJSON_BUILD_CXX20=$CXX20
-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
- make examples
- ctest -V `[ "$CONF" = "release" ] || echo "-E perftest"`
- make travis_doc
- make tests -j 2
- make examples -j 2
- ctest -j 2 -V `[ "$CONF" = "release" ] || echo "-E perftest"`

158
CHANGELOG.md Normal file
View 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

View File

@ -1,15 +1,18 @@
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules)
CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
PROJECT(RapidJSON CXX)
SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules)
set(LIB_MAJOR_VERSION "0")
set(LIB_MINOR_VERSION "12")
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}")
PROJECT(RapidJSON VERSION "${LIB_VERSION_STRING}" LANGUAGES CXX)
# compile in release with debug info mode by default
SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Build Type")
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)
@ -17,18 +20,127 @@ 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)
option(RAPIDJSON_BUILD_CXX20 "Build rapidjson with C++20" 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()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wall -Wextra")
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)
find_program(VALGRIND_FOUND valgrind)
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 "ppc" 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")
elseif (RAPIDJSON_BUILD_CXX20 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.0")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20")
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")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wall -Wextra")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
if(NOT CMAKE_CROSSCOMPILING)
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "powerpc" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc" 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")
elseif (RAPIDJSON_BUILD_CXX20 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "10.0")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20")
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)
add_definitions(-DNOMINMAX)
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")
elseif (RAPIDJSON_BUILD_CXX20 AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.29")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++20")
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
@ -41,9 +153,9 @@ IF(UNIX OR CYGWIN)
ELSEIF(WIN32)
SET(_CMAKE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/cmake")
ENDIF()
SET(CMAKE_INSTALL_DIR "${_CMAKE_INSTALL_DIR}" CACHE PATH "The directory cmake fiels are installed in")
SET(CMAKE_INSTALL_DIR "${_CMAKE_INSTALL_DIR}" CACHE PATH "The directory cmake files are installed in")
include_directories(${CMAKE_SOURCE_DIR}/include)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
if(RAPIDJSON_BUILD_DOC)
add_subdirectory(doc)
@ -80,6 +192,11 @@ install(FILES readme.md
DESTINATION "${DOC_INSTALL_DIR}"
COMPONENT doc)
# Add an interface target to export it
add_library(RapidJSON INTERFACE)
target_include_directories(RapidJSON INTERFACE $<INSTALL_INTERFACE:include>)
install(DIRECTORY include/rapidjson
DESTINATION "${INCLUDE_INSTALL_DIR}"
COMPONENT dev)
@ -96,17 +213,45 @@ install(DIRECTORY example/
# Provide config and version files to be used by other applications
# ===============================
export(PACKAGE ${PROJECT_NAME})
################################################################################
# Export package for use from the build tree
EXPORT( PACKAGE ${PROJECT_NAME} )
# cmake-modules
CONFIGURE_FILE(${PROJECT_NAME}Config.cmake.in
${PROJECT_NAME}Config.cmake
@ONLY)
CONFIGURE_FILE(${PROJECT_NAME}ConfigVersion.cmake.in
${PROJECT_NAME}ConfigVersion.cmake
@ONLY)
INSTALL(FILES
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION "${CMAKE_INSTALL_DIR}"
COMPONENT dev)
# 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" )
INCLUDE(CMakePackageConfigHelpers)
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
IF(CMAKE_INSTALL_DIR)
INSTALL(FILES
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION "${CMAKE_INSTALL_DIR}"
COMPONENT dev)
INSTALL(TARGETS RapidJSON EXPORT RapidJSON-targets)
INSTALL(EXPORT RapidJSON-targets DESTINATION ${CMAKE_INSTALL_DIR})
ENDIF()

View File

@ -1,22 +1,30 @@
SET(GTEST_SEARCH_PATH
SET(GTEST_SEARCH_PATH
"${GTEST_SOURCE_DIR}"
"${CMAKE_SOURCE_DIR}/thirdparty/gtest")
"${CMAKE_CURRENT_LIST_DIR}/../thirdparty/gtest/googletest")
IF(UNIX)
LIST(INSERT GTEST_SEARCH_PATH 1 "/usr/src/gtest")
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)

View File

@ -3,5 +3,5 @@ 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/miloyip/rapidjson
URL: https://github.com/Tencent/rapidjson
Cflags: -I${includedir}

View File

@ -1,3 +1,23 @@
get_filename_component(RAPIDJSON_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
set(RAPIDJSON_INCLUDE_DIRS "@INCLUDE_INSTALL_DIR@")
message(STATUS "RapidJSON found. Headers: ${RAPIDJSON_INCLUDE_DIRS}")
@PACKAGE_INIT@
include ("${CMAKE_CURRENT_LIST_DIR}/RapidJSON-targets.cmake")
################################################################################
# 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)
get_target_property(RapidJSON_INCLUDE_DIR RapidJSON INTERFACE_INCLUDE_DIRECTORIES)
set( RapidJSON_INCLUDE_DIRS ${RapidJSON_INCLUDE_DIR} )
if(NOT TARGET rapidjson)
add_library(rapidjson ALIAS RapidJSON)
endif()

View File

@ -1,4 +1,4 @@
version: 0.12.{build}
version: 1.1.0.{build}
configuration:
- Debug
@ -6,18 +6,105 @@ configuration:
environment:
matrix:
- VS_VERSION: 11
# - 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
- VS_VERSION: 11
CXX11: OFF
CXX17: OFF
CXX20: OFF
MEMBERSMAP: OFF
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
VS_VERSION: 10 2010
VS_PLATFORM: x64
- VS_VERSION: 12
CXX11: OFF
CXX17: OFF
CXX20: OFF
MEMBERSMAP: ON
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
VS_VERSION: 11 2012
VS_PLATFORM: win32
- VS_VERSION: 12
CXX11: OFF
CXX17: OFF
CXX20: OFF
MEMBERSMAP: ON
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
VS_VERSION: 11 2012
VS_PLATFORM: x64
CXX11: OFF
CXX17: OFF
CXX20: OFF
MEMBERSMAP: OFF
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
VS_VERSION: 12 2013
VS_PLATFORM: win32
CXX11: OFF
CXX17: OFF
CXX20: OFF
MEMBERSMAP: OFF
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
VS_VERSION: 12 2013
VS_PLATFORM: x64
CXX11: OFF
CXX17: OFF
CXX20: OFF
MEMBERSMAP: ON
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
VS_VERSION: 14 2015
VS_PLATFORM: win32
CXX11: OFF
CXX17: OFF
CXX20: OFF
MEMBERSMAP: ON
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
VS_VERSION: 14 2015
VS_PLATFORM: x64
CXX11: OFF
CXX17: OFF
CXX20: OFF
MEMBERSMAP: OFF
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
VS_VERSION: 15 2017
VS_PLATFORM: win32
CXX11: OFF
CXX17: OFF
CXX20: OFF
MEMBERSMAP: OFF
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
VS_VERSION: 15 2017
VS_PLATFORM: x64
CXX11: OFF
CXX17: OFF
CXX20: OFF
MEMBERSMAP: ON
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
VS_VERSION: 15 2017
VS_PLATFORM: x64
CXX11: ON
CXX17: OFF
CXX20: OFF
MEMBERSMAP: OFF
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
VS_VERSION: 15 2017
VS_PLATFORM: x64
CXX11: OFF
CXX17: ON
CXX20: OFF
MEMBERSMAP: OFF
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
VS_VERSION: 16 2019
VS_PLATFORM: x64
CXX11: OFF
CXX17: ON
CXX20: OFF
MEMBERSMAP: ON
before_build:
- git submodule update --init --recursive
- cmake -H. -BBuild/VS -G "Visual Studio %VS_VERSION%" -DCMAKE_GENERATOR_PLATFORM=%VS_PLATFORM% -DBUILD_SHARED_LIBS=true -Wno-dev
- 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_BUILD_CXX20=%CXX20% -DRAPIDJSON_USE_MEMBERSMAP=%MEMBERSMAP% -Wno-dev
build:
project: Build\VS\RapidJSON.sln

1
bin/data/abcde.txt Normal file
View File

@ -0,0 +1 @@
abcde

View File

@ -1 +1 @@
sample.json is obtained from http://code.google.com/p/json-test-suite/downloads/detail?name=sample.zip
sample.json is obtained from http://code.google.com/p/json-test-suite/downloads/detail?name=sample.zip

150
bin/draft-04/schema Normal file
View 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": {}
}

1
bin/jsonschema/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
TODO

View File

@ -0,0 +1,4 @@
language: python
python: "2.7"
install: pip install jsonschema
script: bin/jsonschema_suite check

19
bin/jsonschema/LICENSE Normal file
View 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
bin/jsonschema/README.md Normal file
View 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.

View 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())

View File

@ -0,0 +1,3 @@
{
"type": "integer"
}

View File

@ -0,0 +1,3 @@
{
"type": "integer"
}

View File

@ -0,0 +1,8 @@
{
"integer": {
"type": "integer"
},
"refToInteger": {
"$ref": "#/integer"
}
}

View File

@ -0,0 +1,82 @@
[
{
"description": "additionalItems as schema",
"schema": {
"items": [],
"additionalItems": {"type": "integer"}
},
"tests": [
{
"description": "additional items match schema",
"data": [ 1, 2, 3, 4 ],
"valid": true
},
{
"description": "additional items do not match schema",
"data": [ 1, 2, 3, "foo" ],
"valid": false
}
]
},
{
"description": "items is schema, no additionalItems",
"schema": {
"items": {},
"additionalItems": false
},
"tests": [
{
"description": "all items match schema",
"data": [ 1, 2, 3, 4, 5 ],
"valid": true
}
]
},
{
"description": "array of items with no additionalItems",
"schema": {
"items": [{}, {}, {}],
"additionalItems": false
},
"tests": [
{
"description": "no additional items present",
"data": [ 1, 2, 3 ],
"valid": true
},
{
"description": "additional items are not permitted",
"data": [ 1, 2, 3, 4 ],
"valid": false
}
]
},
{
"description": "additionalItems as false without items",
"schema": {"additionalItems": false},
"tests": [
{
"description":
"items defaults to empty schema so everything is valid",
"data": [ 1, 2, 3, 4, 5 ],
"valid": true
},
{
"description": "ignores non-arrays",
"data": {"foo" : "bar"},
"valid": true
}
]
},
{
"description": "additionalItems are allowed by default",
"schema": {"items": []},
"tests": [
{
"description": "only the first items are validated",
"data": [1, "foo", false],
"valid": true
}
]
}
]

View File

@ -0,0 +1,88 @@
[
{
"description":
"additionalProperties being false does not allow other properties",
"schema": {
"properties": {"foo": {}, "bar": {}},
"patternProperties": { "^v": {} },
"additionalProperties": false
},
"tests": [
{
"description": "no additional properties is valid",
"data": {"foo": 1},
"valid": true
},
{
"description": "an additional property is invalid",
"data": {"foo" : 1, "bar" : 2, "quux" : "boom"},
"valid": false
},
{
"description": "ignores non-objects",
"data": [1, 2, 3],
"valid": true
},
{
"description": "patternProperties are not additional properties",
"data": {"foo":1, "vroom": 2},
"valid": true
}
]
},
{
"description":
"additionalProperties allows a schema which should validate",
"schema": {
"properties": {"foo": {}, "bar": {}},
"additionalProperties": {"type": "boolean"}
},
"tests": [
{
"description": "no additional properties is valid",
"data": {"foo": 1},
"valid": true
},
{
"description": "an additional valid property is valid",
"data": {"foo" : 1, "bar" : 2, "quux" : true},
"valid": true
},
{
"description": "an additional invalid property is invalid",
"data": {"foo" : 1, "bar" : 2, "quux" : 12},
"valid": false
}
]
},
{
"description":
"additionalProperties can exist by itself",
"schema": {
"additionalProperties": {"type": "boolean"}
},
"tests": [
{
"description": "an additional valid property is valid",
"data": {"foo" : true},
"valid": true
},
{
"description": "an additional invalid property is invalid",
"data": {"foo" : 1},
"valid": false
}
]
},
{
"description": "additionalProperties are allowed by default",
"schema": {"properties": {"foo": {}, "bar": {}}},
"tests": [
{
"description": "additional properties are allowed",
"data": {"foo": 1, "bar": 2, "quux": true},
"valid": true
}
]
}
]

View File

@ -0,0 +1,49 @@
[
{
"description": "invalid type for default",
"schema": {
"properties": {
"foo": {
"type": "integer",
"default": []
}
}
},
"tests": [
{
"description": "valid when property is specified",
"data": {"foo": 13},
"valid": true
},
{
"description": "still valid when the invalid default is used",
"data": {},
"valid": true
}
]
},
{
"description": "invalid string value for default",
"schema": {
"properties": {
"bar": {
"type": "string",
"minLength": 4,
"default": "bad"
}
}
},
"tests": [
{
"description": "valid when property is specified",
"data": {"bar": "good"},
"valid": true
},
{
"description": "still valid when the invalid default is used",
"data": {},
"valid": true
}
]
}
]

View File

@ -0,0 +1,108 @@
[
{
"description": "dependencies",
"schema": {
"dependencies": {"bar": "foo"}
},
"tests": [
{
"description": "neither",
"data": {},
"valid": true
},
{
"description": "nondependant",
"data": {"foo": 1},
"valid": true
},
{
"description": "with dependency",
"data": {"foo": 1, "bar": 2},
"valid": true
},
{
"description": "missing dependency",
"data": {"bar": 2},
"valid": false
},
{
"description": "ignores non-objects",
"data": "foo",
"valid": true
}
]
},
{
"description": "multiple dependencies",
"schema": {
"dependencies": {"quux": ["foo", "bar"]}
},
"tests": [
{
"description": "neither",
"data": {},
"valid": true
},
{
"description": "nondependants",
"data": {"foo": 1, "bar": 2},
"valid": true
},
{
"description": "with dependencies",
"data": {"foo": 1, "bar": 2, "quux": 3},
"valid": true
},
{
"description": "missing dependency",
"data": {"foo": 1, "quux": 2},
"valid": false
},
{
"description": "missing other dependency",
"data": {"bar": 1, "quux": 2},
"valid": false
},
{
"description": "missing both dependencies",
"data": {"quux": 1},
"valid": false
}
]
},
{
"description": "multiple dependencies subschema",
"schema": {
"dependencies": {
"bar": {
"properties": {
"foo": {"type": "integer"},
"bar": {"type": "integer"}
}
}
}
},
"tests": [
{
"description": "valid",
"data": {"foo": 1, "bar": 2},
"valid": true
},
{
"description": "wrong type",
"data": {"foo": "quux", "bar": 2},
"valid": false
},
{
"description": "wrong type other",
"data": {"foo": 2, "bar": "quux"},
"valid": false
},
{
"description": "wrong type both",
"data": {"foo": "quux", "bar": "quux"},
"valid": false
}
]
}
]

View File

@ -0,0 +1,80 @@
[
{
"description": "disallow",
"schema": {
"disallow": "integer"
},
"tests": [
{
"description": "allowed",
"data": "foo",
"valid": true
},
{
"description": "disallowed",
"data": 1,
"valid": false
}
]
},
{
"description": "multiple disallow",
"schema": {
"disallow": ["integer", "boolean"]
},
"tests": [
{
"description": "valid",
"data": "foo",
"valid": true
},
{
"description": "mismatch",
"data": 1,
"valid": false
},
{
"description": "other mismatch",
"data": true,
"valid": false
}
]
},
{
"description": "multiple disallow subschema",
"schema": {
"disallow":
["string",
{
"type": "object",
"properties": {
"foo": {
"type": "string"
}
}
}]
},
"tests": [
{
"description": "match",
"data": 1,
"valid": true
},
{
"description": "other match",
"data": {"foo": 1},
"valid": true
},
{
"description": "mismatch",
"data": "foo",
"valid": false
},
{
"description": "other mismatch",
"data": {"foo": "bar"},
"valid": false
}
]
}
]

View File

@ -0,0 +1,60 @@
[
{
"description": "by int",
"schema": {"divisibleBy": 2},
"tests": [
{
"description": "int by int",
"data": 10,
"valid": true
},
{
"description": "int by int fail",
"data": 7,
"valid": false
},
{
"description": "ignores non-numbers",
"data": "foo",
"valid": true
}
]
},
{
"description": "by number",
"schema": {"divisibleBy": 1.5},
"tests": [
{
"description": "zero is divisible by anything (except 0)",
"data": 0,
"valid": true
},
{
"description": "4.5 is divisible by 1.5",
"data": 4.5,
"valid": true
},
{
"description": "35 is not divisible by 1.5",
"data": 35,
"valid": false
}
]
},
{
"description": "by small number",
"schema": {"divisibleBy": 0.0001},
"tests": [
{
"description": "0.0075 is divisible by 0.0001",
"data": 0.0075,
"valid": true
},
{
"description": "0.00751 is not divisible by 0.0001",
"data": 0.00751,
"valid": false
}
]
}
]

View File

@ -0,0 +1,71 @@
[
{
"description": "simple enum validation",
"schema": {"enum": [1, 2, 3]},
"tests": [
{
"description": "one of the enum is valid",
"data": 1,
"valid": true
},
{
"description": "something else is invalid",
"data": 4,
"valid": false
}
]
},
{
"description": "heterogeneous enum validation",
"schema": {"enum": [6, "foo", [], true, {"foo": 12}]},
"tests": [
{
"description": "one of the enum is valid",
"data": [],
"valid": true
},
{
"description": "something else is invalid",
"data": null,
"valid": false
},
{
"description": "objects are deep compared",
"data": {"foo": false},
"valid": false
}
]
},
{
"description": "enums in properties",
"schema": {
"type":"object",
"properties": {
"foo": {"enum":["foo"]},
"bar": {"enum":["bar"], "required":true}
}
},
"tests": [
{
"description": "both properties are valid",
"data": {"foo":"foo", "bar":"bar"},
"valid": true
},
{
"description": "missing optional property is valid",
"data": {"bar":"bar"},
"valid": true
},
{
"description": "missing required property is invalid",
"data": {"foo":"foo"},
"valid": false
},
{
"description": "missing all properties is invalid",
"data": {},
"valid": false
}
]
}
]

View File

@ -0,0 +1,94 @@
[
{
"description": "extends",
"schema": {
"properties": {"bar": {"type": "integer", "required": true}},
"extends": {
"properties": {
"foo": {"type": "string", "required": true}
}
}
},
"tests": [
{
"description": "extends",
"data": {"foo": "baz", "bar": 2},
"valid": true
},
{
"description": "mismatch extends",
"data": {"foo": "baz"},
"valid": false
},
{
"description": "mismatch extended",
"data": {"bar": 2},
"valid": false
},
{
"description": "wrong type",
"data": {"foo": "baz", "bar": "quux"},
"valid": false
}
]
},
{
"description": "multiple extends",
"schema": {
"properties": {"bar": {"type": "integer", "required": true}},
"extends" : [
{
"properties": {
"foo": {"type": "string", "required": true}
}
},
{
"properties": {
"baz": {"type": "null", "required": true}
}
}
]
},
"tests": [
{
"description": "valid",
"data": {"foo": "quux", "bar": 2, "baz": null},
"valid": true
},
{
"description": "mismatch first extends",
"data": {"bar": 2, "baz": null},
"valid": false
},
{
"description": "mismatch second extends",
"data": {"foo": "quux", "bar": 2},
"valid": false
},
{
"description": "mismatch both",
"data": {"bar": 2},
"valid": false
}
]
},
{
"description": "extends simple types",
"schema": {
"minimum": 20,
"extends": {"maximum": 30}
},
"tests": [
{
"description": "valid",
"data": 25,
"valid": true
},
{
"description": "mismatch extends",
"data": 35,
"valid": false
}
]
}
]

View File

@ -0,0 +1,46 @@
[
{
"description": "a schema given for items",
"schema": {
"items": {"type": "integer"}
},
"tests": [
{
"description": "valid items",
"data": [ 1, 2, 3 ],
"valid": true
},
{
"description": "wrong type of items",
"data": [1, "x"],
"valid": false
},
{
"description": "ignores non-arrays",
"data": {"foo" : "bar"},
"valid": true
}
]
},
{
"description": "an array of schemas for items",
"schema": {
"items": [
{"type": "integer"},
{"type": "string"}
]
},
"tests": [
{
"description": "correct types",
"data": [ 1, "foo" ],
"valid": true
},
{
"description": "wrong types",
"data": [ "foo", 1 ],
"valid": false
}
]
}
]

View File

@ -0,0 +1,28 @@
[
{
"description": "maxItems validation",
"schema": {"maxItems": 2},
"tests": [
{
"description": "shorter is valid",
"data": [1],
"valid": true
},
{
"description": "exact length is valid",
"data": [1, 2],
"valid": true
},
{
"description": "too long is invalid",
"data": [1, 2, 3],
"valid": false
},
{
"description": "ignores non-arrays",
"data": "foobar",
"valid": true
}
]
}
]

View File

@ -0,0 +1,33 @@
[
{
"description": "maxLength validation",
"schema": {"maxLength": 2},
"tests": [
{
"description": "shorter is valid",
"data": "f",
"valid": true
},
{
"description": "exact length is valid",
"data": "fo",
"valid": true
},
{
"description": "too long is invalid",
"data": "foo",
"valid": false
},
{
"description": "ignores non-strings",
"data": 10,
"valid": true
},
{
"description": "two supplementary Unicode code points is long enough",
"data": "\uD83D\uDCA9\uD83D\uDCA9",
"valid": true
}
]
}
]

View File

@ -0,0 +1,42 @@
[
{
"description": "maximum validation",
"schema": {"maximum": 3.0},
"tests": [
{
"description": "below the maximum is valid",
"data": 2.6,
"valid": true
},
{
"description": "above the maximum is invalid",
"data": 3.5,
"valid": false
},
{
"description": "ignores non-numbers",
"data": "x",
"valid": true
}
]
},
{
"description": "exclusiveMaximum validation",
"schema": {
"maximum": 3.0,
"exclusiveMaximum": true
},
"tests": [
{
"description": "below the maximum is still valid",
"data": 2.2,
"valid": true
},
{
"description": "boundary point is invalid",
"data": 3.0,
"valid": false
}
]
}
]

View File

@ -0,0 +1,28 @@
[
{
"description": "minItems validation",
"schema": {"minItems": 1},
"tests": [
{
"description": "longer is valid",
"data": [1, 2],
"valid": true
},
{
"description": "exact length is valid",
"data": [1],
"valid": true
},
{
"description": "too short is invalid",
"data": [],
"valid": false
},
{
"description": "ignores non-arrays",
"data": "",
"valid": true
}
]
}
]

View File

@ -0,0 +1,33 @@
[
{
"description": "minLength validation",
"schema": {"minLength": 2},
"tests": [
{
"description": "longer is valid",
"data": "foo",
"valid": true
},
{
"description": "exact length is valid",
"data": "fo",
"valid": true
},
{
"description": "too short is invalid",
"data": "f",
"valid": false
},
{
"description": "ignores non-strings",
"data": 1,
"valid": true
},
{
"description": "one supplementary Unicode code point is not long enough",
"data": "\uD83D\uDCA9",
"valid": false
}
]
}
]

View File

@ -0,0 +1,42 @@
[
{
"description": "minimum validation",
"schema": {"minimum": 1.1},
"tests": [
{
"description": "above the minimum is valid",
"data": 2.6,
"valid": true
},
{
"description": "below the minimum is invalid",
"data": 0.6,
"valid": false
},
{
"description": "ignores non-numbers",
"data": "x",
"valid": true
}
]
},
{
"description": "exclusiveMinimum validation",
"schema": {
"minimum": 1.1,
"exclusiveMinimum": true
},
"tests": [
{
"description": "above the minimum is still valid",
"data": 1.2,
"valid": true
},
{
"description": "boundary point is invalid",
"data": 1.1,
"valid": false
}
]
}
]

View File

@ -0,0 +1,107 @@
[
{
"description": "integer",
"schema": {"type": "integer"},
"tests": [
{
"description": "a bignum is an integer",
"data": 12345678910111213141516171819202122232425262728293031,
"valid": true
}
]
},
{
"description": "number",
"schema": {"type": "number"},
"tests": [
{
"description": "a bignum is a number",
"data": 98249283749234923498293171823948729348710298301928331,
"valid": true
}
]
},
{
"description": "integer",
"schema": {"type": "integer"},
"tests": [
{
"description": "a negative bignum is an integer",
"data": -12345678910111213141516171819202122232425262728293031,
"valid": true
}
]
},
{
"description": "number",
"schema": {"type": "number"},
"tests": [
{
"description": "a negative bignum is a number",
"data": -98249283749234923498293171823948729348710298301928331,
"valid": true
}
]
},
{
"description": "string",
"schema": {"type": "string"},
"tests": [
{
"description": "a bignum is not a string",
"data": 98249283749234923498293171823948729348710298301928331,
"valid": false
}
]
},
{
"description": "integer comparison",
"schema": {"maximum": 18446744073709551615},
"tests": [
{
"description": "comparison works for high numbers",
"data": 18446744073709551600,
"valid": true
}
]
},
{
"description": "float comparison with high precision",
"schema": {
"maximum": 972783798187987123879878123.18878137,
"exclusiveMaximum": true
},
"tests": [
{
"description": "comparison works for high numbers",
"data": 972783798187987123879878123.188781371,
"valid": false
}
]
},
{
"description": "integer comparison",
"schema": {"minimum": -18446744073709551615},
"tests": [
{
"description": "comparison works for very negative numbers",
"data": -18446744073709551600,
"valid": true
}
]
},
{
"description": "float comparison with high precision on negative numbers",
"schema": {
"minimum": -972783798187987123879878123.18878137,
"exclusiveMinimum": true
},
"tests": [
{
"description": "comparison works for very negative numbers",
"data": -972783798187987123879878123.188781371,
"valid": false
}
]
}
]

View File

@ -0,0 +1,222 @@
[
{
"description": "validation of regular expressions",
"schema": {"format": "regex"},
"tests": [
{
"description": "a valid regular expression",
"data": "([abc])+\\s+$",
"valid": true
},
{
"description": "a regular expression with unclosed parens is invalid",
"data": "^(abc]",
"valid": false
}
]
},
{
"description": "validation of date-time strings",
"schema": {"format": "date-time"},
"tests": [
{
"description": "a valid date-time string",
"data": "1963-06-19T08:30:06.283185Z",
"valid": true
},
{
"description": "an invalid date-time string",
"data": "06/19/1963 08:30:06 PST",
"valid": false
},
{
"description": "only RFC3339 not all of ISO 8601 are valid",
"data": "2013-350T01:01:01",
"valid": false
}
]
},
{
"description": "validation of date strings",
"schema": {"format": "date"},
"tests": [
{
"description": "a valid date string",
"data": "1963-06-19",
"valid": true
},
{
"description": "an invalid date string",
"data": "06/19/1963",
"valid": false
}
]
},
{
"description": "validation of time strings",
"schema": {"format": "time"},
"tests": [
{
"description": "a valid time string",
"data": "08:30:06",
"valid": true
},
{
"description": "an invalid time string",
"data": "8:30 AM",
"valid": false
}
]
},
{
"description": "validation of URIs",
"schema": {"format": "uri"},
"tests": [
{
"description": "a valid URI",
"data": "http://foo.bar/?baz=qux#quux",
"valid": true
},
{
"description": "a valid protocol-relative URI",
"data": "//foo.bar/?baz=qux#quux",
"valid": true
},
{
"description": "an invalid URI",
"data": "\\\\WINDOWS\\fileshare",
"valid": false
},
{
"description": "an invalid URI though valid URI reference",
"data": "abc",
"valid": false
}
]
},
{
"description": "validation of e-mail addresses",
"schema": {"format": "email"},
"tests": [
{
"description": "a valid e-mail address",
"data": "joe.bloggs@example.com",
"valid": true
},
{
"description": "an invalid e-mail address",
"data": "2962",
"valid": false
}
]
},
{
"description": "validation of IP addresses",
"schema": {"format": "ip-address"},
"tests": [
{
"description": "a valid IP address",
"data": "192.168.0.1",
"valid": true
},
{
"description": "an IP address with too many components",
"data": "127.0.0.0.1",
"valid": false
},
{
"description": "an IP address with out-of-range values",
"data": "256.256.256.256",
"valid": false
}
]
},
{
"description": "validation of IPv6 addresses",
"schema": {"format": "ipv6"},
"tests": [
{
"description": "a valid IPv6 address",
"data": "::1",
"valid": true
},
{
"description": "an IPv6 address with out-of-range values",
"data": "12345::",
"valid": false
},
{
"description": "an IPv6 address with too many components",
"data": "1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1",
"valid": false
},
{
"description": "an IPv6 address containing illegal characters",
"data": "::laptop",
"valid": false
}
]
},
{
"description": "validation of host names",
"schema": {"format": "host-name"},
"tests": [
{
"description": "a valid host name",
"data": "www.example.com",
"valid": true
},
{
"description": "a host name starting with an illegal character",
"data": "-a-host-name-that-starts-with--",
"valid": false
},
{
"description": "a host name containing illegal characters",
"data": "not_a_valid_host_name",
"valid": false
},
{
"description": "a host name with a component too long",
"data": "a-vvvvvvvvvvvvvvvveeeeeeeeeeeeeeeerrrrrrrrrrrrrrrryyyyyyyyyyyyyyyy-long-host-name-component",
"valid": false
}
]
},
{
"description": "validation of CSS colors",
"schema": {"format": "color"},
"tests": [
{
"description": "a valid CSS color name",
"data": "fuchsia",
"valid": true
},
{
"description": "a valid six-digit CSS color code",
"data": "#CC8899",
"valid": true
},
{
"description": "a valid three-digit CSS color code",
"data": "#C89",
"valid": true
},
{
"description": "an invalid CSS color code",
"data": "#00332520",
"valid": false
},
{
"description": "an invalid CSS color name",
"data": "puce",
"valid": false
},
{
"description": "a CSS color name containing invalid characters",
"data": "light_grayish_red-violet",
"valid": false
}
]
}
]

View File

@ -0,0 +1,18 @@
[
{
"description": "ECMA 262 regex dialect recognition",
"schema": { "format": "regex" },
"tests": [
{
"description": "[^] is a valid regex",
"data": "[^]",
"valid": true
},
{
"description": "ECMA 262 has no support for lookbehind",
"data": "(?<=foo)bar",
"valid": false
}
]
}
]

View File

@ -0,0 +1,15 @@
[
{
"description": "some languages do not distinguish between different types of numeric value",
"schema": {
"type": "integer"
},
"tests": [
{
"description": "a float is not an integer even without fractional part",
"data": 1.0,
"valid": false
}
]
}
]

View File

@ -0,0 +1,34 @@
[
{
"description": "pattern validation",
"schema": {"pattern": "^a*$"},
"tests": [
{
"description": "a matching pattern is valid",
"data": "aaa",
"valid": true
},
{
"description": "a non-matching pattern is invalid",
"data": "abc",
"valid": false
},
{
"description": "ignores non-strings",
"data": true,
"valid": true
}
]
},
{
"description": "pattern is not anchored",
"schema": {"pattern": "a+"},
"tests": [
{
"description": "matches a substring",
"data": "xxaayy",
"valid": true
}
]
}
]

View File

@ -0,0 +1,110 @@
[
{
"description":
"patternProperties validates properties matching a regex",
"schema": {
"patternProperties": {
"f.*o": {"type": "integer"}
}
},
"tests": [
{
"description": "a single valid match is valid",
"data": {"foo": 1},
"valid": true
},
{
"description": "multiple valid matches is valid",
"data": {"foo": 1, "foooooo" : 2},
"valid": true
},
{
"description": "a single invalid match is invalid",
"data": {"foo": "bar", "fooooo": 2},
"valid": false
},
{
"description": "multiple invalid matches is invalid",
"data": {"foo": "bar", "foooooo" : "baz"},
"valid": false
},
{
"description": "ignores non-objects",
"data": 12,
"valid": true
}
]
},
{
"description": "multiple simultaneous patternProperties are validated",
"schema": {
"patternProperties": {
"a*": {"type": "integer"},
"aaa*": {"maximum": 20}
}
},
"tests": [
{
"description": "a single valid match is valid",
"data": {"a": 21},
"valid": true
},
{
"description": "a simultaneous match is valid",
"data": {"aaaa": 18},
"valid": true
},
{
"description": "multiple matches is valid",
"data": {"a": 21, "aaaa": 18},
"valid": true
},
{
"description": "an invalid due to one is invalid",
"data": {"a": "bar"},
"valid": false
},
{
"description": "an invalid due to the other is invalid",
"data": {"aaaa": 31},
"valid": false
},
{
"description": "an invalid due to both is invalid",
"data": {"aaa": "foo", "aaaa": 31},
"valid": false
}
]
},
{
"description": "regexes are not anchored by default and are case sensitive",
"schema": {
"patternProperties": {
"[0-9]{2,}": { "type": "boolean" },
"X_": { "type": "string" }
}
},
"tests": [
{
"description": "non recognized members are ignored",
"data": { "answer 1": "42" },
"valid": true
},
{
"description": "recognized members are accounted for",
"data": { "a31b": null },
"valid": false
},
{
"description": "regexes are case sensitive",
"data": { "a_x_3": 3 },
"valid": true
},
{
"description": "regexes are case sensitive, 2",
"data": { "a_X_3": 3 },
"valid": false
}
]
}
]

View File

@ -0,0 +1,92 @@
[
{
"description": "object properties validation",
"schema": {
"properties": {
"foo": {"type": "integer"},
"bar": {"type": "string"}
}
},
"tests": [
{
"description": "both properties present and valid is valid",
"data": {"foo": 1, "bar": "baz"},
"valid": true
},
{
"description": "one property invalid is invalid",
"data": {"foo": 1, "bar": {}},
"valid": false
},
{
"description": "both properties invalid is invalid",
"data": {"foo": [], "bar": {}},
"valid": false
},
{
"description": "doesn't invalidate other properties",
"data": {"quux": []},
"valid": true
},
{
"description": "ignores non-objects",
"data": [],
"valid": true
}
]
},
{
"description":
"properties, patternProperties, additionalProperties interaction",
"schema": {
"properties": {
"foo": {"type": "array", "maxItems": 3},
"bar": {"type": "array"}
},
"patternProperties": {"f.o": {"minItems": 2}},
"additionalProperties": {"type": "integer"}
},
"tests": [
{
"description": "property validates property",
"data": {"foo": [1, 2]},
"valid": true
},
{
"description": "property invalidates property",
"data": {"foo": [1, 2, 3, 4]},
"valid": false
},
{
"description": "patternProperty invalidates property",
"data": {"foo": []},
"valid": false
},
{
"description": "patternProperty validates nonproperty",
"data": {"fxo": [1, 2]},
"valid": true
},
{
"description": "patternProperty invalidates nonproperty",
"data": {"fxo": []},
"valid": false
},
{
"description": "additionalProperty ignores property",
"data": {"bar": []},
"valid": true
},
{
"description": "additionalProperty validates others",
"data": {"quux": 3},
"valid": true
},
{
"description": "additionalProperty invalidates others",
"data": {"quux": "foo"},
"valid": false
}
]
}
]

View File

@ -0,0 +1,159 @@
[
{
"description": "root pointer ref",
"schema": {
"properties": {
"foo": {"$ref": "#"}
},
"additionalProperties": false
},
"tests": [
{
"description": "match",
"data": {"foo": false},
"valid": true
},
{
"description": "recursive match",
"data": {"foo": {"foo": false}},
"valid": true
},
{
"description": "mismatch",
"data": {"bar": false},
"valid": false
},
{
"description": "recursive mismatch",
"data": {"foo": {"bar": false}},
"valid": false
}
]
},
{
"description": "relative pointer ref to object",
"schema": {
"properties": {
"foo": {"type": "integer"},
"bar": {"$ref": "#/properties/foo"}
}
},
"tests": [
{
"description": "match",
"data": {"bar": 3},
"valid": true
},
{
"description": "mismatch",
"data": {"bar": true},
"valid": false
}
]
},
{
"description": "relative pointer ref to array",
"schema": {
"items": [
{"type": "integer"},
{"$ref": "#/items/0"}
]
},
"tests": [
{
"description": "match array",
"data": [1, 2],
"valid": true
},
{
"description": "mismatch array",
"data": [1, "foo"],
"valid": false
}
]
},
{
"description": "escaped pointer ref",
"schema": {
"tilda~field": {"type": "integer"},
"slash/field": {"type": "integer"},
"percent%field": {"type": "integer"},
"properties": {
"tilda": {"$ref": "#/tilda~0field"},
"slash": {"$ref": "#/slash~1field"},
"percent": {"$ref": "#/percent%25field"}
}
},
"tests": [
{
"description": "slash invalid",
"data": {"slash": "aoeu"},
"valid": false
},
{
"description": "tilda invalid",
"data": {"tilda": "aoeu"},
"valid": false
},
{
"description": "percent invalid",
"data": {"percent": "aoeu"},
"valid": false
},
{
"description": "slash valid",
"data": {"slash": 123},
"valid": true
},
{
"description": "tilda valid",
"data": {"tilda": 123},
"valid": true
},
{
"description": "percent valid",
"data": {"percent": 123},
"valid": true
}
]
},
{
"description": "nested refs",
"schema": {
"definitions": {
"a": {"type": "integer"},
"b": {"$ref": "#/definitions/a"},
"c": {"$ref": "#/definitions/b"}
},
"$ref": "#/definitions/c"
},
"tests": [
{
"description": "nested ref valid",
"data": 5,
"valid": true
},
{
"description": "nested ref invalid",
"data": "a",
"valid": false
}
]
},
{
"description": "remote ref, containing refs itself",
"schema": {"$ref": "http://json-schema.org/draft-03/schema#"},
"tests": [
{
"description": "remote ref valid",
"data": {"items": {"type": "integer"}},
"valid": true
},
{
"description": "remote ref invalid",
"data": {"items": {"type": 1}},
"valid": false
}
]
}
]

View File

@ -0,0 +1,74 @@
[
{
"description": "remote ref",
"schema": {"$ref": "http://localhost:1234/integer.json"},
"tests": [
{
"description": "remote ref valid",
"data": 1,
"valid": true
},
{
"description": "remote ref invalid",
"data": "a",
"valid": false
}
]
},
{
"description": "fragment within remote ref",
"schema": {"$ref": "http://localhost:1234/subSchemas.json#/integer"},
"tests": [
{
"description": "remote fragment valid",
"data": 1,
"valid": true
},
{
"description": "remote fragment invalid",
"data": "a",
"valid": false
}
]
},
{
"description": "ref within remote ref",
"schema": {
"$ref": "http://localhost:1234/subSchemas.json#/refToInteger"
},
"tests": [
{
"description": "ref within ref valid",
"data": 1,
"valid": true
},
{
"description": "ref within ref invalid",
"data": "a",
"valid": false
}
]
},
{
"description": "change resolution scope",
"schema": {
"id": "http://localhost:1234/",
"items": {
"id": "folder/",
"items": {"$ref": "folderInteger.json"}
}
},
"tests": [
{
"description": "changed scope ref valid",
"data": [[1]],
"valid": true
},
{
"description": "changed scope ref invalid",
"data": [["a"]],
"valid": false
}
]
}
]

View File

@ -0,0 +1,53 @@
[
{
"description": "required validation",
"schema": {
"properties": {
"foo": {"required" : true},
"bar": {}
}
},
"tests": [
{
"description": "present required property is valid",
"data": {"foo": 1},
"valid": true
},
{
"description": "non-present required property is invalid",
"data": {"bar": 1},
"valid": false
}
]
},
{
"description": "required default validation",
"schema": {
"properties": {
"foo": {}
}
},
"tests": [
{
"description": "not required by default",
"data": {},
"valid": true
}
]
},
{
"description": "required explicitly false validation",
"schema": {
"properties": {
"foo": {"required": false}
}
},
"tests": [
{
"description": "not required if required is false",
"data": {},
"valid": true
}
]
}
]

View File

@ -0,0 +1,474 @@
[
{
"description": "integer type matches integers",
"schema": {"type": "integer"},
"tests": [
{
"description": "an integer is an integer",
"data": 1,
"valid": true
},
{
"description": "a float is not an integer",
"data": 1.1,
"valid": false
},
{
"description": "a string is not an integer",
"data": "foo",
"valid": false
},
{
"description": "an object is not an integer",
"data": {},
"valid": false
},
{
"description": "an array is not an integer",
"data": [],
"valid": false
},
{
"description": "a boolean is not an integer",
"data": true,
"valid": false
},
{
"description": "null is not an integer",
"data": null,
"valid": false
}
]
},
{
"description": "number type matches numbers",
"schema": {"type": "number"},
"tests": [
{
"description": "an integer is a number",
"data": 1,
"valid": true
},
{
"description": "a float is a number",
"data": 1.1,
"valid": true
},
{
"description": "a string is not a number",
"data": "foo",
"valid": false
},
{
"description": "an object is not a number",
"data": {},
"valid": false
},
{
"description": "an array is not a number",
"data": [],
"valid": false
},
{
"description": "a boolean is not a number",
"data": true,
"valid": false
},
{
"description": "null is not a number",
"data": null,
"valid": false
}
]
},
{
"description": "string type matches strings",
"schema": {"type": "string"},
"tests": [
{
"description": "1 is not a string",
"data": 1,
"valid": false
},
{
"description": "a float is not a string",
"data": 1.1,
"valid": false
},
{
"description": "a string is a string",
"data": "foo",
"valid": true
},
{
"description": "an object is not a string",
"data": {},
"valid": false
},
{
"description": "an array is not a string",
"data": [],
"valid": false
},
{
"description": "a boolean is not a string",
"data": true,
"valid": false
},
{
"description": "null is not a string",
"data": null,
"valid": false
}
]
},
{
"description": "object type matches objects",
"schema": {"type": "object"},
"tests": [
{
"description": "an integer is not an object",
"data": 1,
"valid": false
},
{
"description": "a float is not an object",
"data": 1.1,
"valid": false
},
{
"description": "a string is not an object",
"data": "foo",
"valid": false
},
{
"description": "an object is an object",
"data": {},
"valid": true
},
{
"description": "an array is not an object",
"data": [],
"valid": false
},
{
"description": "a boolean is not an object",
"data": true,
"valid": false
},
{
"description": "null is not an object",
"data": null,
"valid": false
}
]
},
{
"description": "array type matches arrays",
"schema": {"type": "array"},
"tests": [
{
"description": "an integer is not an array",
"data": 1,
"valid": false
},
{
"description": "a float is not an array",
"data": 1.1,
"valid": false
},
{
"description": "a string is not an array",
"data": "foo",
"valid": false
},
{
"description": "an object is not an array",
"data": {},
"valid": false
},
{
"description": "an array is an array",
"data": [],
"valid": true
},
{
"description": "a boolean is not an array",
"data": true,
"valid": false
},
{
"description": "null is not an array",
"data": null,
"valid": false
}
]
},
{
"description": "boolean type matches booleans",
"schema": {"type": "boolean"},
"tests": [
{
"description": "an integer is not a boolean",
"data": 1,
"valid": false
},
{
"description": "a float is not a boolean",
"data": 1.1,
"valid": false
},
{
"description": "a string is not a boolean",
"data": "foo",
"valid": false
},
{
"description": "an object is not a boolean",
"data": {},
"valid": false
},
{
"description": "an array is not a boolean",
"data": [],
"valid": false
},
{
"description": "a boolean is a boolean",
"data": true,
"valid": true
},
{
"description": "null is not a boolean",
"data": null,
"valid": false
}
]
},
{
"description": "null type matches only the null object",
"schema": {"type": "null"},
"tests": [
{
"description": "an integer is not null",
"data": 1,
"valid": false
},
{
"description": "a float is not null",
"data": 1.1,
"valid": false
},
{
"description": "a string is not null",
"data": "foo",
"valid": false
},
{
"description": "an object is not null",
"data": {},
"valid": false
},
{
"description": "an array is not null",
"data": [],
"valid": false
},
{
"description": "a boolean is not null",
"data": true,
"valid": false
},
{
"description": "null is null",
"data": null,
"valid": true
}
]
},
{
"description": "any type matches any type",
"schema": {"type": "any"},
"tests": [
{
"description": "any type includes integers",
"data": 1,
"valid": true
},
{
"description": "any type includes float",
"data": 1.1,
"valid": true
},
{
"description": "any type includes string",
"data": "foo",
"valid": true
},
{
"description": "any type includes object",
"data": {},
"valid": true
},
{
"description": "any type includes array",
"data": [],
"valid": true
},
{
"description": "any type includes boolean",
"data": true,
"valid": true
},
{
"description": "any type includes null",
"data": null,
"valid": true
}
]
},
{
"description": "multiple types can be specified in an array",
"schema": {"type": ["integer", "string"]},
"tests": [
{
"description": "an integer is valid",
"data": 1,
"valid": true
},
{
"description": "a string is valid",
"data": "foo",
"valid": true
},
{
"description": "a float is invalid",
"data": 1.1,
"valid": false
},
{
"description": "an object is invalid",
"data": {},
"valid": false
},
{
"description": "an array is invalid",
"data": [],
"valid": false
},
{
"description": "a boolean is invalid",
"data": true,
"valid": false
},
{
"description": "null is invalid",
"data": null,
"valid": false
}
]
},
{
"description": "types can include schemas",
"schema": {
"type": [
"array",
{"type": "object"}
]
},
"tests": [
{
"description": "an integer is invalid",
"data": 1,
"valid": false
},
{
"description": "a string is invalid",
"data": "foo",
"valid": false
},
{
"description": "a float is invalid",
"data": 1.1,
"valid": false
},
{
"description": "an object is valid",
"data": {},
"valid": true
},
{
"description": "an array is valid",
"data": [],
"valid": true
},
{
"description": "a boolean is invalid",
"data": true,
"valid": false
},
{
"description": "null is invalid",
"data": null,
"valid": false
}
]
},
{
"description":
"when types includes a schema it should fully validate the schema",
"schema": {
"type": [
"integer",
{
"properties": {
"foo": {"type": "null"}
}
}
]
},
"tests": [
{
"description": "an integer is valid",
"data": 1,
"valid": true
},
{
"description": "an object is valid only if it is fully valid",
"data": {"foo": null},
"valid": true
},
{
"description": "an object is invalid otherwise",
"data": {"foo": "bar"},
"valid": false
}
]
},
{
"description": "types from separate schemas are merged",
"schema": {
"type": [
{"type": ["string"]},
{"type": ["array", "null"]}
]
},
"tests": [
{
"description": "an integer is invalid",
"data": 1,
"valid": false
},
{
"description": "a string is valid",
"data": "foo",
"valid": true
},
{
"description": "an array is valid",
"data": [1, 2, 3],
"valid": true
}
]
}
]

View File

@ -0,0 +1,79 @@
[
{
"description": "uniqueItems validation",
"schema": {"uniqueItems": true},
"tests": [
{
"description": "unique array of integers is valid",
"data": [1, 2],
"valid": true
},
{
"description": "non-unique array of integers is invalid",
"data": [1, 1],
"valid": false
},
{
"description": "numbers are unique if mathematically unequal",
"data": [1.0, 1.00, 1],
"valid": false
},
{
"description": "unique array of objects is valid",
"data": [{"foo": "bar"}, {"foo": "baz"}],
"valid": true
},
{
"description": "non-unique array of objects is invalid",
"data": [{"foo": "bar"}, {"foo": "bar"}],
"valid": false
},
{
"description": "unique array of nested objects is valid",
"data": [
{"foo": {"bar" : {"baz" : true}}},
{"foo": {"bar" : {"baz" : false}}}
],
"valid": true
},
{
"description": "non-unique array of nested objects is invalid",
"data": [
{"foo": {"bar" : {"baz" : true}}},
{"foo": {"bar" : {"baz" : true}}}
],
"valid": false
},
{
"description": "unique array of arrays is valid",
"data": [["foo"], ["bar"]],
"valid": true
},
{
"description": "non-unique array of arrays is invalid",
"data": [["foo"], ["foo"]],
"valid": false
},
{
"description": "1 and true are unique",
"data": [1, true],
"valid": true
},
{
"description": "0 and false are unique",
"data": [0, false],
"valid": true
},
{
"description": "unique heterogeneous types are valid",
"data": [{}, [1], true, null, 1],
"valid": true
},
{
"description": "non-unique heterogeneous types are invalid",
"data": [{}, [1], true, null, {}, 1],
"valid": false
}
]
}
]

View File

@ -0,0 +1,82 @@
[
{
"description": "additionalItems as schema",
"schema": {
"items": [{}],
"additionalItems": {"type": "integer"}
},
"tests": [
{
"description": "additional items match schema",
"data": [ null, 2, 3, 4 ],
"valid": true
},
{
"description": "additional items do not match schema",
"data": [ null, 2, 3, "foo" ],
"valid": false
}
]
},
{
"description": "items is schema, no additionalItems",
"schema": {
"items": {},
"additionalItems": false
},
"tests": [
{
"description": "all items match schema",
"data": [ 1, 2, 3, 4, 5 ],
"valid": true
}
]
},
{
"description": "array of items with no additionalItems",
"schema": {
"items": [{}, {}, {}],
"additionalItems": false
},
"tests": [
{
"description": "no additional items present",
"data": [ 1, 2, 3 ],
"valid": true
},
{
"description": "additional items are not permitted",
"data": [ 1, 2, 3, 4 ],
"valid": false
}
]
},
{
"description": "additionalItems as false without items",
"schema": {"additionalItems": false},
"tests": [
{
"description":
"items defaults to empty schema so everything is valid",
"data": [ 1, 2, 3, 4, 5 ],
"valid": true
},
{
"description": "ignores non-arrays",
"data": {"foo" : "bar"},
"valid": true
}
]
},
{
"description": "additionalItems are allowed by default",
"schema": {"items": [{"type": "integer"}]},
"tests": [
{
"description": "only the first item is validated",
"data": [1, "foo", false],
"valid": true
}
]
}
]

View File

@ -0,0 +1,88 @@
[
{
"description":
"additionalProperties being false does not allow other properties",
"schema": {
"properties": {"foo": {}, "bar": {}},
"patternProperties": { "^v": {} },
"additionalProperties": false
},
"tests": [
{
"description": "no additional properties is valid",
"data": {"foo": 1},
"valid": true
},
{
"description": "an additional property is invalid",
"data": {"foo" : 1, "bar" : 2, "quux" : "boom"},
"valid": false
},
{
"description": "ignores non-objects",
"data": [1, 2, 3],
"valid": true
},
{
"description": "patternProperties are not additional properties",
"data": {"foo":1, "vroom": 2},
"valid": true
}
]
},
{
"description":
"additionalProperties allows a schema which should validate",
"schema": {
"properties": {"foo": {}, "bar": {}},
"additionalProperties": {"type": "boolean"}
},
"tests": [
{
"description": "no additional properties is valid",
"data": {"foo": 1},
"valid": true
},
{
"description": "an additional valid property is valid",
"data": {"foo" : 1, "bar" : 2, "quux" : true},
"valid": true
},
{
"description": "an additional invalid property is invalid",
"data": {"foo" : 1, "bar" : 2, "quux" : 12},
"valid": false
}
]
},
{
"description":
"additionalProperties can exist by itself",
"schema": {
"additionalProperties": {"type": "boolean"}
},
"tests": [
{
"description": "an additional valid property is valid",
"data": {"foo" : true},
"valid": true
},
{
"description": "an additional invalid property is invalid",
"data": {"foo" : 1},
"valid": false
}
]
},
{
"description": "additionalProperties are allowed by default",
"schema": {"properties": {"foo": {}, "bar": {}}},
"tests": [
{
"description": "additional properties are allowed",
"data": {"foo": 1, "bar": 2, "quux": true},
"valid": true
}
]
}
]

View File

@ -0,0 +1,112 @@
[
{
"description": "allOf",
"schema": {
"allOf": [
{
"properties": {
"bar": {"type": "integer"}
},
"required": ["bar"]
},
{
"properties": {
"foo": {"type": "string"}
},
"required": ["foo"]
}
]
},
"tests": [
{
"description": "allOf",
"data": {"foo": "baz", "bar": 2},
"valid": true
},
{
"description": "mismatch second",
"data": {"foo": "baz"},
"valid": false
},
{
"description": "mismatch first",
"data": {"bar": 2},
"valid": false
},
{
"description": "wrong type",
"data": {"foo": "baz", "bar": "quux"},
"valid": false
}
]
},
{
"description": "allOf with base schema",
"schema": {
"properties": {"bar": {"type": "integer"}},
"required": ["bar"],
"allOf" : [
{
"properties": {
"foo": {"type": "string"}
},
"required": ["foo"]
},
{
"properties": {
"baz": {"type": "null"}
},
"required": ["baz"]
}
]
},
"tests": [
{
"description": "valid",
"data": {"foo": "quux", "bar": 2, "baz": null},
"valid": true
},
{
"description": "mismatch base schema",
"data": {"foo": "quux", "baz": null},
"valid": false
},
{
"description": "mismatch first allOf",
"data": {"bar": 2, "baz": null},
"valid": false
},
{
"description": "mismatch second allOf",
"data": {"foo": "quux", "bar": 2},
"valid": false
},
{
"description": "mismatch both",
"data": {"bar": 2},
"valid": false
}
]
},
{
"description": "allOf simple types",
"schema": {
"allOf": [
{"maximum": 30},
{"minimum": 20}
]
},
"tests": [
{
"description": "valid",
"data": 25,
"valid": true
},
{
"description": "mismatch one",
"data": 35,
"valid": false
}
]
}
]

View File

@ -0,0 +1,68 @@
[
{
"description": "anyOf",
"schema": {
"anyOf": [
{
"type": "integer"
},
{
"minimum": 2
}
]
},
"tests": [
{
"description": "first anyOf valid",
"data": 1,
"valid": true
},
{
"description": "second anyOf valid",
"data": 2.5,
"valid": true
},
{
"description": "both anyOf valid",
"data": 3,
"valid": true
},
{
"description": "neither anyOf valid",
"data": 1.5,
"valid": false
}
]
},
{
"description": "anyOf with base schema",
"schema": {
"type": "string",
"anyOf" : [
{
"maxLength": 2
},
{
"minLength": 4
}
]
},
"tests": [
{
"description": "mismatch base schema",
"data": 3,
"valid": false
},
{
"description": "one anyOf valid",
"data": "foobar",
"valid": true
},
{
"description": "both anyOf invalid",
"data": "foo",
"valid": false
}
]
}
]

View File

@ -0,0 +1,49 @@
[
{
"description": "invalid type for default",
"schema": {
"properties": {
"foo": {
"type": "integer",
"default": []
}
}
},
"tests": [
{
"description": "valid when property is specified",
"data": {"foo": 13},
"valid": true
},
{
"description": "still valid when the invalid default is used",
"data": {},
"valid": true
}
]
},
{
"description": "invalid string value for default",
"schema": {
"properties": {
"bar": {
"type": "string",
"minLength": 4,
"default": "bad"
}
}
},
"tests": [
{
"description": "valid when property is specified",
"data": {"bar": "good"},
"valid": true
},
{
"description": "still valid when the invalid default is used",
"data": {},
"valid": true
}
]
}
]

View File

@ -0,0 +1,32 @@
[
{
"description": "valid definition",
"schema": {"$ref": "http://json-schema.org/draft-04/schema#"},
"tests": [
{
"description": "valid definition schema",
"data": {
"definitions": {
"foo": {"type": "integer"}
}
},
"valid": true
}
]
},
{
"description": "invalid definition",
"schema": {"$ref": "http://json-schema.org/draft-04/schema#"},
"tests": [
{
"description": "invalid definition schema",
"data": {
"definitions": {
"foo": {"type": 1}
}
},
"valid": false
}
]
}
]

View File

@ -0,0 +1,113 @@
[
{
"description": "dependencies",
"schema": {
"dependencies": {"bar": ["foo"]}
},
"tests": [
{
"description": "neither",
"data": {},
"valid": true
},
{
"description": "nondependant",
"data": {"foo": 1},
"valid": true
},
{
"description": "with dependency",
"data": {"foo": 1, "bar": 2},
"valid": true
},
{
"description": "missing dependency",
"data": {"bar": 2},
"valid": false
},
{
"description": "ignores non-objects",
"data": "foo",
"valid": true
}
]
},
{
"description": "multiple dependencies",
"schema": {
"dependencies": {"quux": ["foo", "bar"]}
},
"tests": [
{
"description": "neither",
"data": {},
"valid": true
},
{
"description": "nondependants",
"data": {"foo": 1, "bar": 2},
"valid": true
},
{
"description": "with dependencies",
"data": {"foo": 1, "bar": 2, "quux": 3},
"valid": true
},
{
"description": "missing dependency",
"data": {"foo": 1, "quux": 2},
"valid": false
},
{
"description": "missing other dependency",
"data": {"bar": 1, "quux": 2},
"valid": false
},
{
"description": "missing both dependencies",
"data": {"quux": 1},
"valid": false
}
]
},
{
"description": "multiple dependencies subschema",
"schema": {
"dependencies": {
"bar": {
"properties": {
"foo": {"type": "integer"},
"bar": {"type": "integer"}
}
}
}
},
"tests": [
{
"description": "valid",
"data": {"foo": 1, "bar": 2},
"valid": true
},
{
"description": "no dependency",
"data": {"foo": "quux"},
"valid": true
},
{
"description": "wrong type",
"data": {"foo": "quux", "bar": 2},
"valid": false
},
{
"description": "wrong type other",
"data": {"foo": 2, "bar": "quux"},
"valid": false
},
{
"description": "wrong type both",
"data": {"foo": "quux", "bar": "quux"},
"valid": false
}
]
}
]

View File

@ -0,0 +1,72 @@
[
{
"description": "simple enum validation",
"schema": {"enum": [1, 2, 3]},
"tests": [
{
"description": "one of the enum is valid",
"data": 1,
"valid": true
},
{
"description": "something else is invalid",
"data": 4,
"valid": false
}
]
},
{
"description": "heterogeneous enum validation",
"schema": {"enum": [6, "foo", [], true, {"foo": 12}]},
"tests": [
{
"description": "one of the enum is valid",
"data": [],
"valid": true
},
{
"description": "something else is invalid",
"data": null,
"valid": false
},
{
"description": "objects are deep compared",
"data": {"foo": false},
"valid": false
}
]
},
{
"description": "enums in properties",
"schema": {
"type":"object",
"properties": {
"foo": {"enum":["foo"]},
"bar": {"enum":["bar"]}
},
"required": ["bar"]
},
"tests": [
{
"description": "both properties are valid",
"data": {"foo":"foo", "bar":"bar"},
"valid": true
},
{
"description": "missing optional property is valid",
"data": {"bar":"bar"},
"valid": true
},
{
"description": "missing required property is invalid",
"data": {"foo":"foo"},
"valid": false
},
{
"description": "missing all properties is invalid",
"data": {},
"valid": false
}
]
}
]

View File

@ -0,0 +1,46 @@
[
{
"description": "a schema given for items",
"schema": {
"items": {"type": "integer"}
},
"tests": [
{
"description": "valid items",
"data": [ 1, 2, 3 ],
"valid": true
},
{
"description": "wrong type of items",
"data": [1, "x"],
"valid": false
},
{
"description": "ignores non-arrays",
"data": {"foo" : "bar"},
"valid": true
}
]
},
{
"description": "an array of schemas for items",
"schema": {
"items": [
{"type": "integer"},
{"type": "string"}
]
},
"tests": [
{
"description": "correct types",
"data": [ 1, "foo" ],
"valid": true
},
{
"description": "wrong types",
"data": [ "foo", 1 ],
"valid": false
}
]
}
]

View File

@ -0,0 +1,28 @@
[
{
"description": "maxItems validation",
"schema": {"maxItems": 2},
"tests": [
{
"description": "shorter is valid",
"data": [1],
"valid": true
},
{
"description": "exact length is valid",
"data": [1, 2],
"valid": true
},
{
"description": "too long is invalid",
"data": [1, 2, 3],
"valid": false
},
{
"description": "ignores non-arrays",
"data": "foobar",
"valid": true
}
]
}
]

View File

@ -0,0 +1,33 @@
[
{
"description": "maxLength validation",
"schema": {"maxLength": 2},
"tests": [
{
"description": "shorter is valid",
"data": "f",
"valid": true
},
{
"description": "exact length is valid",
"data": "fo",
"valid": true
},
{
"description": "too long is invalid",
"data": "foo",
"valid": false
},
{
"description": "ignores non-strings",
"data": 100,
"valid": true
},
{
"description": "two supplementary Unicode code points is long enough",
"data": "\uD83D\uDCA9\uD83D\uDCA9",
"valid": true
}
]
}
]

View File

@ -0,0 +1,28 @@
[
{
"description": "maxProperties validation",
"schema": {"maxProperties": 2},
"tests": [
{
"description": "shorter is valid",
"data": {"foo": 1},
"valid": true
},
{
"description": "exact length is valid",
"data": {"foo": 1, "bar": 2},
"valid": true
},
{
"description": "too long is invalid",
"data": {"foo": 1, "bar": 2, "baz": 3},
"valid": false
},
{
"description": "ignores non-objects",
"data": "foobar",
"valid": true
}
]
}
]

View File

@ -0,0 +1,42 @@
[
{
"description": "maximum validation",
"schema": {"maximum": 3.0},
"tests": [
{
"description": "below the maximum is valid",
"data": 2.6,
"valid": true
},
{
"description": "above the maximum is invalid",
"data": 3.5,
"valid": false
},
{
"description": "ignores non-numbers",
"data": "x",
"valid": true
}
]
},
{
"description": "exclusiveMaximum validation",
"schema": {
"maximum": 3.0,
"exclusiveMaximum": true
},
"tests": [
{
"description": "below the maximum is still valid",
"data": 2.2,
"valid": true
},
{
"description": "boundary point is invalid",
"data": 3.0,
"valid": false
}
]
}
]

View File

@ -0,0 +1,28 @@
[
{
"description": "minItems validation",
"schema": {"minItems": 1},
"tests": [
{
"description": "longer is valid",
"data": [1, 2],
"valid": true
},
{
"description": "exact length is valid",
"data": [1],
"valid": true
},
{
"description": "too short is invalid",
"data": [],
"valid": false
},
{
"description": "ignores non-arrays",
"data": "",
"valid": true
}
]
}
]

View File

@ -0,0 +1,33 @@
[
{
"description": "minLength validation",
"schema": {"minLength": 2},
"tests": [
{
"description": "longer is valid",
"data": "foo",
"valid": true
},
{
"description": "exact length is valid",
"data": "fo",
"valid": true
},
{
"description": "too short is invalid",
"data": "f",
"valid": false
},
{
"description": "ignores non-strings",
"data": 1,
"valid": true
},
{
"description": "one supplementary Unicode code point is not long enough",
"data": "\uD83D\uDCA9",
"valid": false
}
]
}
]

View File

@ -0,0 +1,28 @@
[
{
"description": "minProperties validation",
"schema": {"minProperties": 1},
"tests": [
{
"description": "longer is valid",
"data": {"foo": 1, "bar": 2},
"valid": true
},
{
"description": "exact length is valid",
"data": {"foo": 1},
"valid": true
},
{
"description": "too short is invalid",
"data": {},
"valid": false
},
{
"description": "ignores non-objects",
"data": "",
"valid": true
}
]
}
]

View File

@ -0,0 +1,42 @@
[
{
"description": "minimum validation",
"schema": {"minimum": 1.1},
"tests": [
{
"description": "above the minimum is valid",
"data": 2.6,
"valid": true
},
{
"description": "below the minimum is invalid",
"data": 0.6,
"valid": false
},
{
"description": "ignores non-numbers",
"data": "x",
"valid": true
}
]
},
{
"description": "exclusiveMinimum validation",
"schema": {
"minimum": 1.1,
"exclusiveMinimum": true
},
"tests": [
{
"description": "above the minimum is still valid",
"data": 1.2,
"valid": true
},
{
"description": "boundary point is invalid",
"data": 1.1,
"valid": false
}
]
}
]

View File

@ -0,0 +1,60 @@
[
{
"description": "by int",
"schema": {"multipleOf": 2},
"tests": [
{
"description": "int by int",
"data": 10,
"valid": true
},
{
"description": "int by int fail",
"data": 7,
"valid": false
},
{
"description": "ignores non-numbers",
"data": "foo",
"valid": true
}
]
},
{
"description": "by number",
"schema": {"multipleOf": 1.5},
"tests": [
{
"description": "zero is multiple of anything",
"data": 0,
"valid": true
},
{
"description": "4.5 is multiple of 1.5",
"data": 4.5,
"valid": true
},
{
"description": "35 is not multiple of 1.5",
"data": 35,
"valid": false
}
]
},
{
"description": "by small number",
"schema": {"multipleOf": 0.0001},
"tests": [
{
"description": "0.0075 is multiple of 0.0001",
"data": 0.0075,
"valid": true
},
{
"description": "0.00751 is not multiple of 0.0001",
"data": 0.00751,
"valid": false
}
]
}
]

View File

@ -0,0 +1,96 @@
[
{
"description": "not",
"schema": {
"not": {"type": "integer"}
},
"tests": [
{
"description": "allowed",
"data": "foo",
"valid": true
},
{
"description": "disallowed",
"data": 1,
"valid": false
}
]
},
{
"description": "not multiple types",
"schema": {
"not": {"type": ["integer", "boolean"]}
},
"tests": [
{
"description": "valid",
"data": "foo",
"valid": true
},
{
"description": "mismatch",
"data": 1,
"valid": false
},
{
"description": "other mismatch",
"data": true,
"valid": false
}
]
},
{
"description": "not more complex schema",
"schema": {
"not": {
"type": "object",
"properties": {
"foo": {
"type": "string"
}
}
}
},
"tests": [
{
"description": "match",
"data": 1,
"valid": true
},
{
"description": "other match",
"data": {"foo": 1},
"valid": true
},
{
"description": "mismatch",
"data": {"foo": "bar"},
"valid": false
}
]
},
{
"description": "forbidden property",
"schema": {
"properties": {
"foo": {
"not": {}
}
}
},
"tests": [
{
"description": "property present",
"data": {"foo": 1, "bar": 2},
"valid": false
},
{
"description": "property absent",
"data": {"bar": 1, "baz": 2},
"valid": true
}
]
}
]

View File

@ -0,0 +1,68 @@
[
{
"description": "oneOf",
"schema": {
"oneOf": [
{
"type": "integer"
},
{
"minimum": 2
}
]
},
"tests": [
{
"description": "first oneOf valid",
"data": 1,
"valid": true
},
{
"description": "second oneOf valid",
"data": 2.5,
"valid": true
},
{
"description": "both oneOf valid",
"data": 3,
"valid": false
},
{
"description": "neither oneOf valid",
"data": 1.5,
"valid": false
}
]
},
{
"description": "oneOf with base schema",
"schema": {
"type": "string",
"oneOf" : [
{
"minLength": 2
},
{
"maxLength": 4
}
]
},
"tests": [
{
"description": "mismatch base schema",
"data": 3,
"valid": false
},
{
"description": "one oneOf valid",
"data": "foobar",
"valid": true
},
{
"description": "both oneOf valid",
"data": "foo",
"valid": false
}
]
}
]

View File

@ -0,0 +1,107 @@
[
{
"description": "integer",
"schema": {"type": "integer"},
"tests": [
{
"description": "a bignum is an integer",
"data": 12345678910111213141516171819202122232425262728293031,
"valid": true
}
]
},
{
"description": "number",
"schema": {"type": "number"},
"tests": [
{
"description": "a bignum is a number",
"data": 98249283749234923498293171823948729348710298301928331,
"valid": true
}
]
},
{
"description": "integer",
"schema": {"type": "integer"},
"tests": [
{
"description": "a negative bignum is an integer",
"data": -12345678910111213141516171819202122232425262728293031,
"valid": true
}
]
},
{
"description": "number",
"schema": {"type": "number"},
"tests": [
{
"description": "a negative bignum is a number",
"data": -98249283749234923498293171823948729348710298301928331,
"valid": true
}
]
},
{
"description": "string",
"schema": {"type": "string"},
"tests": [
{
"description": "a bignum is not a string",
"data": 98249283749234923498293171823948729348710298301928331,
"valid": false
}
]
},
{
"description": "integer comparison",
"schema": {"maximum": 18446744073709551615},
"tests": [
{
"description": "comparison works for high numbers",
"data": 18446744073709551600,
"valid": true
}
]
},
{
"description": "float comparison with high precision",
"schema": {
"maximum": 972783798187987123879878123.18878137,
"exclusiveMaximum": true
},
"tests": [
{
"description": "comparison works for high numbers",
"data": 972783798187987123879878123.188781371,
"valid": false
}
]
},
{
"description": "integer comparison",
"schema": {"minimum": -18446744073709551615},
"tests": [
{
"description": "comparison works for very negative numbers",
"data": -18446744073709551600,
"valid": true
}
]
},
{
"description": "float comparison with high precision on negative numbers",
"schema": {
"minimum": -972783798187987123879878123.18878137,
"exclusiveMinimum": true
},
"tests": [
{
"description": "comparison works for very negative numbers",
"data": -972783798187987123879878123.188781371,
"valid": false
}
]
}
]

View File

@ -0,0 +1,148 @@
[
{
"description": "validation of date-time strings",
"schema": {"format": "date-time"},
"tests": [
{
"description": "a valid date-time string",
"data": "1963-06-19T08:30:06.283185Z",
"valid": true
},
{
"description": "an invalid date-time string",
"data": "06/19/1963 08:30:06 PST",
"valid": false
},
{
"description": "only RFC3339 not all of ISO 8601 are valid",
"data": "2013-350T01:01:01",
"valid": false
}
]
},
{
"description": "validation of URIs",
"schema": {"format": "uri"},
"tests": [
{
"description": "a valid URI",
"data": "http://foo.bar/?baz=qux#quux",
"valid": true
},
{
"description": "a valid protocol-relative URI",
"data": "//foo.bar/?baz=qux#quux",
"valid": true
},
{
"description": "an invalid URI",
"data": "\\\\WINDOWS\\fileshare",
"valid": false
},
{
"description": "an invalid URI though valid URI reference",
"data": "abc",
"valid": false
}
]
},
{
"description": "validation of e-mail addresses",
"schema": {"format": "email"},
"tests": [
{
"description": "a valid e-mail address",
"data": "joe.bloggs@example.com",
"valid": true
},
{
"description": "an invalid e-mail address",
"data": "2962",
"valid": false
}
]
},
{
"description": "validation of IP addresses",
"schema": {"format": "ipv4"},
"tests": [
{
"description": "a valid IP address",
"data": "192.168.0.1",
"valid": true
},
{
"description": "an IP address with too many components",
"data": "127.0.0.0.1",
"valid": false
},
{
"description": "an IP address with out-of-range values",
"data": "256.256.256.256",
"valid": false
},
{
"description": "an IP address without 4 components",
"data": "127.0",
"valid": false
},
{
"description": "an IP address as an integer",
"data": "0x7f000001",
"valid": false
}
]
},
{
"description": "validation of IPv6 addresses",
"schema": {"format": "ipv6"},
"tests": [
{
"description": "a valid IPv6 address",
"data": "::1",
"valid": true
},
{
"description": "an IPv6 address with out-of-range values",
"data": "12345::",
"valid": false
},
{
"description": "an IPv6 address with too many components",
"data": "1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1",
"valid": false
},
{
"description": "an IPv6 address containing illegal characters",
"data": "::laptop",
"valid": false
}
]
},
{
"description": "validation of host names",
"schema": {"format": "hostname"},
"tests": [
{
"description": "a valid host name",
"data": "www.example.com",
"valid": true
},
{
"description": "a host name starting with an illegal character",
"data": "-a-host-name-that-starts-with--",
"valid": false
},
{
"description": "a host name containing illegal characters",
"data": "not_a_valid_host_name",
"valid": false
},
{
"description": "a host name with a component too long",
"data": "a-vvvvvvvvvvvvvvvveeeeeeeeeeeeeeeerrrrrrrrrrrrrrrryyyyyyyyyyyyyyyy-long-host-name-component",
"valid": false
}
]
}
]

View File

@ -0,0 +1,15 @@
[
{
"description": "some languages do not distinguish between different types of numeric value",
"schema": {
"type": "integer"
},
"tests": [
{
"description": "a float is not an integer even without fractional part",
"data": 1.0,
"valid": false
}
]
}
]

View File

@ -0,0 +1,34 @@
[
{
"description": "pattern validation",
"schema": {"pattern": "^a*$"},
"tests": [
{
"description": "a matching pattern is valid",
"data": "aaa",
"valid": true
},
{
"description": "a non-matching pattern is invalid",
"data": "abc",
"valid": false
},
{
"description": "ignores non-strings",
"data": true,
"valid": true
}
]
},
{
"description": "pattern is not anchored",
"schema": {"pattern": "a+"},
"tests": [
{
"description": "matches a substring",
"data": "xxaayy",
"valid": true
}
]
}
]

View File

@ -0,0 +1,110 @@
[
{
"description":
"patternProperties validates properties matching a regex",
"schema": {
"patternProperties": {
"f.*o": {"type": "integer"}
}
},
"tests": [
{
"description": "a single valid match is valid",
"data": {"foo": 1},
"valid": true
},
{
"description": "multiple valid matches is valid",
"data": {"foo": 1, "foooooo" : 2},
"valid": true
},
{
"description": "a single invalid match is invalid",
"data": {"foo": "bar", "fooooo": 2},
"valid": false
},
{
"description": "multiple invalid matches is invalid",
"data": {"foo": "bar", "foooooo" : "baz"},
"valid": false
},
{
"description": "ignores non-objects",
"data": 12,
"valid": true
}
]
},
{
"description": "multiple simultaneous patternProperties are validated",
"schema": {
"patternProperties": {
"a*": {"type": "integer"},
"aaa*": {"maximum": 20}
}
},
"tests": [
{
"description": "a single valid match is valid",
"data": {"a": 21},
"valid": true
},
{
"description": "a simultaneous match is valid",
"data": {"aaaa": 18},
"valid": true
},
{
"description": "multiple matches is valid",
"data": {"a": 21, "aaaa": 18},
"valid": true
},
{
"description": "an invalid due to one is invalid",
"data": {"a": "bar"},
"valid": false
},
{
"description": "an invalid due to the other is invalid",
"data": {"aaaa": 31},
"valid": false
},
{
"description": "an invalid due to both is invalid",
"data": {"aaa": "foo", "aaaa": 31},
"valid": false
}
]
},
{
"description": "regexes are not anchored by default and are case sensitive",
"schema": {
"patternProperties": {
"[0-9]{2,}": { "type": "boolean" },
"X_": { "type": "string" }
}
},
"tests": [
{
"description": "non recognized members are ignored",
"data": { "answer 1": "42" },
"valid": true
},
{
"description": "recognized members are accounted for",
"data": { "a31b": null },
"valid": false
},
{
"description": "regexes are case sensitive",
"data": { "a_x_3": 3 },
"valid": true
},
{
"description": "regexes are case sensitive, 2",
"data": { "a_X_3": 3 },
"valid": false
}
]
}
]

View File

@ -0,0 +1,92 @@
[
{
"description": "object properties validation",
"schema": {
"properties": {
"foo": {"type": "integer"},
"bar": {"type": "string"}
}
},
"tests": [
{
"description": "both properties present and valid is valid",
"data": {"foo": 1, "bar": "baz"},
"valid": true
},
{
"description": "one property invalid is invalid",
"data": {"foo": 1, "bar": {}},
"valid": false
},
{
"description": "both properties invalid is invalid",
"data": {"foo": [], "bar": {}},
"valid": false
},
{
"description": "doesn't invalidate other properties",
"data": {"quux": []},
"valid": true
},
{
"description": "ignores non-objects",
"data": [],
"valid": true
}
]
},
{
"description":
"properties, patternProperties, additionalProperties interaction",
"schema": {
"properties": {
"foo": {"type": "array", "maxItems": 3},
"bar": {"type": "array"}
},
"patternProperties": {"f.o": {"minItems": 2}},
"additionalProperties": {"type": "integer"}
},
"tests": [
{
"description": "property validates property",
"data": {"foo": [1, 2]},
"valid": true
},
{
"description": "property invalidates property",
"data": {"foo": [1, 2, 3, 4]},
"valid": false
},
{
"description": "patternProperty invalidates property",
"data": {"foo": []},
"valid": false
},
{
"description": "patternProperty validates nonproperty",
"data": {"fxo": [1, 2]},
"valid": true
},
{
"description": "patternProperty invalidates nonproperty",
"data": {"fxo": []},
"valid": false
},
{
"description": "additionalProperty ignores property",
"data": {"bar": []},
"valid": true
},
{
"description": "additionalProperty validates others",
"data": {"quux": 3},
"valid": true
},
{
"description": "additionalProperty invalidates others",
"data": {"quux": "foo"},
"valid": false
}
]
}
]

View File

@ -0,0 +1,159 @@
[
{
"description": "root pointer ref",
"schema": {
"properties": {
"foo": {"$ref": "#"}
},
"additionalProperties": false
},
"tests": [
{
"description": "match",
"data": {"foo": false},
"valid": true
},
{
"description": "recursive match",
"data": {"foo": {"foo": false}},
"valid": true
},
{
"description": "mismatch",
"data": {"bar": false},
"valid": false
},
{
"description": "recursive mismatch",
"data": {"foo": {"bar": false}},
"valid": false
}
]
},
{
"description": "relative pointer ref to object",
"schema": {
"properties": {
"foo": {"type": "integer"},
"bar": {"$ref": "#/properties/foo"}
}
},
"tests": [
{
"description": "match",
"data": {"bar": 3},
"valid": true
},
{
"description": "mismatch",
"data": {"bar": true},
"valid": false
}
]
},
{
"description": "relative pointer ref to array",
"schema": {
"items": [
{"type": "integer"},
{"$ref": "#/items/0"}
]
},
"tests": [
{
"description": "match array",
"data": [1, 2],
"valid": true
},
{
"description": "mismatch array",
"data": [1, "foo"],
"valid": false
}
]
},
{
"description": "escaped pointer ref",
"schema": {
"tilda~field": {"type": "integer"},
"slash/field": {"type": "integer"},
"percent%field": {"type": "integer"},
"properties": {
"tilda": {"$ref": "#/tilda~0field"},
"slash": {"$ref": "#/slash~1field"},
"percent": {"$ref": "#/percent%25field"}
}
},
"tests": [
{
"description": "slash invalid",
"data": {"slash": "aoeu"},
"valid": false
},
{
"description": "tilda invalid",
"data": {"tilda": "aoeu"},
"valid": false
},
{
"description": "percent invalid",
"data": {"percent": "aoeu"},
"valid": false
},
{
"description": "slash valid",
"data": {"slash": 123},
"valid": true
},
{
"description": "tilda valid",
"data": {"tilda": 123},
"valid": true
},
{
"description": "percent valid",
"data": {"percent": 123},
"valid": true
}
]
},
{
"description": "nested refs",
"schema": {
"definitions": {
"a": {"type": "integer"},
"b": {"$ref": "#/definitions/a"},
"c": {"$ref": "#/definitions/b"}
},
"$ref": "#/definitions/c"
},
"tests": [
{
"description": "nested ref valid",
"data": 5,
"valid": true
},
{
"description": "nested ref invalid",
"data": "a",
"valid": false
}
]
},
{
"description": "remote ref, containing refs itself",
"schema": {"$ref": "http://json-schema.org/draft-04/schema#"},
"tests": [
{
"description": "remote ref valid",
"data": {"minLength": 1},
"valid": true
},
{
"description": "remote ref invalid",
"data": {"minLength": -1},
"valid": false
}
]
}
]

View File

@ -0,0 +1,74 @@
[
{
"description": "remote ref",
"schema": {"$ref": "http://localhost:1234/integer.json"},
"tests": [
{
"description": "remote ref valid",
"data": 1,
"valid": true
},
{
"description": "remote ref invalid",
"data": "a",
"valid": false
}
]
},
{
"description": "fragment within remote ref",
"schema": {"$ref": "http://localhost:1234/subSchemas.json#/integer"},
"tests": [
{
"description": "remote fragment valid",
"data": 1,
"valid": true
},
{
"description": "remote fragment invalid",
"data": "a",
"valid": false
}
]
},
{
"description": "ref within remote ref",
"schema": {
"$ref": "http://localhost:1234/subSchemas.json#/refToInteger"
},
"tests": [
{
"description": "ref within ref valid",
"data": 1,
"valid": true
},
{
"description": "ref within ref invalid",
"data": "a",
"valid": false
}
]
},
{
"description": "change resolution scope",
"schema": {
"id": "http://localhost:1234/",
"items": {
"id": "folder/",
"items": {"$ref": "folderInteger.json"}
}
},
"tests": [
{
"description": "changed scope ref valid",
"data": [[1]],
"valid": true
},
{
"description": "changed scope ref invalid",
"data": [["a"]],
"valid": false
}
]
}
]

View File

@ -0,0 +1,39 @@
[
{
"description": "required validation",
"schema": {
"properties": {
"foo": {},
"bar": {}
},
"required": ["foo"]
},
"tests": [
{
"description": "present required property is valid",
"data": {"foo": 1},
"valid": true
},
{
"description": "non-present required property is invalid",
"data": {"bar": 1},
"valid": false
}
]
},
{
"description": "required default validation",
"schema": {
"properties": {
"foo": {}
}
},
"tests": [
{
"description": "not required by default",
"data": {},
"valid": true
}
]
}
]

View File

@ -0,0 +1,330 @@
[
{
"description": "integer type matches integers",
"schema": {"type": "integer"},
"tests": [
{
"description": "an integer is an integer",
"data": 1,
"valid": true
},
{
"description": "a float is not an integer",
"data": 1.1,
"valid": false
},
{
"description": "a string is not an integer",
"data": "foo",
"valid": false
},
{
"description": "an object is not an integer",
"data": {},
"valid": false
},
{
"description": "an array is not an integer",
"data": [],
"valid": false
},
{
"description": "a boolean is not an integer",
"data": true,
"valid": false
},
{
"description": "null is not an integer",
"data": null,
"valid": false
}
]
},
{
"description": "number type matches numbers",
"schema": {"type": "number"},
"tests": [
{
"description": "an integer is a number",
"data": 1,
"valid": true
},
{
"description": "a float is a number",
"data": 1.1,
"valid": true
},
{
"description": "a string is not a number",
"data": "foo",
"valid": false
},
{
"description": "an object is not a number",
"data": {},
"valid": false
},
{
"description": "an array is not a number",
"data": [],
"valid": false
},
{
"description": "a boolean is not a number",
"data": true,
"valid": false
},
{
"description": "null is not a number",
"data": null,
"valid": false
}
]
},
{
"description": "string type matches strings",
"schema": {"type": "string"},
"tests": [
{
"description": "1 is not a string",
"data": 1,
"valid": false
},
{
"description": "a float is not a string",
"data": 1.1,
"valid": false
},
{
"description": "a string is a string",
"data": "foo",
"valid": true
},
{
"description": "an object is not a string",
"data": {},
"valid": false
},
{
"description": "an array is not a string",
"data": [],
"valid": false
},
{
"description": "a boolean is not a string",
"data": true,
"valid": false
},
{
"description": "null is not a string",
"data": null,
"valid": false
}
]
},
{
"description": "object type matches objects",
"schema": {"type": "object"},
"tests": [
{
"description": "an integer is not an object",
"data": 1,
"valid": false
},
{
"description": "a float is not an object",
"data": 1.1,
"valid": false
},
{
"description": "a string is not an object",
"data": "foo",
"valid": false
},
{
"description": "an object is an object",
"data": {},
"valid": true
},
{
"description": "an array is not an object",
"data": [],
"valid": false
},
{
"description": "a boolean is not an object",
"data": true,
"valid": false
},
{
"description": "null is not an object",
"data": null,
"valid": false
}
]
},
{
"description": "array type matches arrays",
"schema": {"type": "array"},
"tests": [
{
"description": "an integer is not an array",
"data": 1,
"valid": false
},
{
"description": "a float is not an array",
"data": 1.1,
"valid": false
},
{
"description": "a string is not an array",
"data": "foo",
"valid": false
},
{
"description": "an object is not an array",
"data": {},
"valid": false
},
{
"description": "an array is an array",
"data": [],
"valid": true
},
{
"description": "a boolean is not an array",
"data": true,
"valid": false
},
{
"description": "null is not an array",
"data": null,
"valid": false
}
]
},
{
"description": "boolean type matches booleans",
"schema": {"type": "boolean"},
"tests": [
{
"description": "an integer is not a boolean",
"data": 1,
"valid": false
},
{
"description": "a float is not a boolean",
"data": 1.1,
"valid": false
},
{
"description": "a string is not a boolean",
"data": "foo",
"valid": false
},
{
"description": "an object is not a boolean",
"data": {},
"valid": false
},
{
"description": "an array is not a boolean",
"data": [],
"valid": false
},
{
"description": "a boolean is a boolean",
"data": true,
"valid": true
},
{
"description": "null is not a boolean",
"data": null,
"valid": false
}
]
},
{
"description": "null type matches only the null object",
"schema": {"type": "null"},
"tests": [
{
"description": "an integer is not null",
"data": 1,
"valid": false
},
{
"description": "a float is not null",
"data": 1.1,
"valid": false
},
{
"description": "a string is not null",
"data": "foo",
"valid": false
},
{
"description": "an object is not null",
"data": {},
"valid": false
},
{
"description": "an array is not null",
"data": [],
"valid": false
},
{
"description": "a boolean is not null",
"data": true,
"valid": false
},
{
"description": "null is null",
"data": null,
"valid": true
}
]
},
{
"description": "multiple types can be specified in an array",
"schema": {"type": ["integer", "string"]},
"tests": [
{
"description": "an integer is valid",
"data": 1,
"valid": true
},
{
"description": "a string is valid",
"data": "foo",
"valid": true
},
{
"description": "a float is invalid",
"data": 1.1,
"valid": false
},
{
"description": "an object is invalid",
"data": {},
"valid": false
},
{
"description": "an array is invalid",
"data": [],
"valid": false
},
{
"description": "a boolean is invalid",
"data": true,
"valid": false
},
{
"description": "null is invalid",
"data": null,
"valid": false
}
]
}
]

View File

@ -0,0 +1,79 @@
[
{
"description": "uniqueItems validation",
"schema": {"uniqueItems": true},
"tests": [
{
"description": "unique array of integers is valid",
"data": [1, 2],
"valid": true
},
{
"description": "non-unique array of integers is invalid",
"data": [1, 1],
"valid": false
},
{
"description": "numbers are unique if mathematically unequal",
"data": [1.0, 1.00, 1],
"valid": false
},
{
"description": "unique array of objects is valid",
"data": [{"foo": "bar"}, {"foo": "baz"}],
"valid": true
},
{
"description": "non-unique array of objects is invalid",
"data": [{"foo": "bar"}, {"foo": "bar"}],
"valid": false
},
{
"description": "unique array of nested objects is valid",
"data": [
{"foo": {"bar" : {"baz" : true}}},
{"foo": {"bar" : {"baz" : false}}}
],
"valid": true
},
{
"description": "non-unique array of nested objects is invalid",
"data": [
{"foo": {"bar" : {"baz" : true}}},
{"foo": {"bar" : {"baz" : true}}}
],
"valid": false
},
{
"description": "unique array of arrays is valid",
"data": [["foo"], ["bar"]],
"valid": true
},
{
"description": "non-unique array of arrays is invalid",
"data": [["foo"], ["foo"]],
"valid": false
},
{
"description": "1 and true are unique",
"data": [1, true],
"valid": true
},
{
"description": "0 and false are unique",
"data": [0, false],
"valid": true
},
{
"description": "unique heterogeneous types are valid",
"data": [{}, [1], true, null, 1],
"valid": true
},
{
"description": "non-unique heterogeneous types are invalid",
"data": [{}, [1], true, null, {}, 1],
"valid": false
}
]
}
]

8
bin/jsonschema/tox.ini Normal file
View File

@ -0,0 +1,8 @@
[tox]
minversion = 1.6
envlist = py27
skipsdist = True
[testenv]
deps = jsonschema
commands = {envpython} bin/jsonschema_suite check

502
bin/types/alotofkeys.json Normal file
View File

@ -0,0 +1,502 @@
{
"4BABQZ5SZJSO3KFKBOG36EIXXTOF34HVFCELHA2DWOMIL44K": null,
"RSZNOTRIJFCHRKG4IKNOW4ZEBMVXPDBYBXBGDGNWTSVLMJ2U": null,
"AOGQPY32FQ7T7WZWQPON3X6GU74GOYI6HHVNPATDTBXRUQ4G": null,
"3PMTZEGLZNHSOWWJ23BE6PWOXD2VZRDN7MMLUMQ4EIRERVCG": null,
"PD2FMQGI5HTGK6MT76OYS2ER2LXFBON44WOMELDY5MRKQI6I": null,
"6L6QMMVSE4UQLB4OGX3LVDRNGAL6MOJ6S3RBBUSQ3F5PPHYR": null,
"LYVVXT7U7WN7PGGUHCLFXVOBJBSSR6ES2P7AY7XGBXEBLTDD": null,
"G5RWOLHDDZOXYEFGGSVWG3C2UHYDW6UOFVBQQLQJVZNCF4TB": null,
"3QPIK2M3ZPICZQFQTX22A7VDCAFIGAX2PXIXKDOZX7XUM32R": null,
"JR75L2BXOA5LVLNKT4EEZO2P45OHWRPMMWMFENTFFIY7A2V3": null,
"TESL546MN7IR7AT3C5HRSESIFHZ5NW6TNRWZXZ43OSRYOZKP": null,
"62EJKIAFWGFGPUS6YP2X6E26AV2TZCTCAJMZNWBBNFRPCCRN": null,
"5ZDD3KPTPGE2CAWR3MTFUSBMGQAS4ZP5WZKXJTXUNFSYABD6": null,
"XQ7TMN5YMQLAND54B4VIVWJAHU3TNZKT2S4SVRW6WKHNJBX2": null,
"O456GV3HBAWFDQRCECX6HY3PBTP6WNQIDSKVP2MZIPV3TCBL": null,
"WXCN25EBQH5WWN2JBHWNFNDUTYSFDLIAOWO5AE6D5HDO7VNE": null,
"THO3I3KDRIMTD6DKNIETIOWDY7FXQ5GJ3P2KUQJWYAEL3LXV": null,
"7OMI7VIOKFRZATMNLGIWH7ZBDARZ6ARXIAH5S3GPG5KV52IC": null,
"ESUPY3ELKCEGFRSYFGPGFBJOAUGXMYZ6XCWXDFOKHBJHNGVR": null,
"TNXSJIEFJLUFUDTR2S5LV73PD6ACFYNHOCRZPUSDPXDD3B7M": null,
"T6TISG6P4W66F37634QU4BNJY4RZ77QXXNPGTYH5LCCRDSX6": null,
"QTVAA56JKNDYTMV7DXAIL4QVLZPW3UHGLTKDI2BED6S3MGDQ": null,
"DTJREAQBCS6I2AJ6MOGTPIXK3ADB4BPNDIHI2YSQP6Y2BMH7": null,
"XDGH2OYCTAJ75IEMZ32O644YLT73PRYDORFKBLYEMCHOQ7Q6": null,
"4KDDQZRBLNS33DRHZHDMENCWGMNFEJGBZJXSGIQW7VBWOTHT": null,
"5KSH3GKWFNXV55KI2FPUDSD57O25N52UTZAAYDFVMFUSEE6O": null,
"7AGEUBM5FQZ2JCMUSKTEI6COA3Q5CE5WYB7TP2F5OX3ETMTK": null,
"HFHZ5ZE5TC45W4WIF6H7ONTHXKAVWRY2LXN2GN2TXZPIP6PQ": null,
"S3U2JJBPKZHZNOM3SWVFQ7OMS7F5M2KDJHHHZKXHZXQRNUSE": null,
"YHJBGJ6T6A7PMK5AYXDITDV37BJJIM4TP7I2XHSVYN76724O": null,
"TH42A7M3645OUKC54JQMDB5BTGS3URFUCYJ2VOEM6IAGZ5QQ": null,
"OYBKULFLWL2MER745QTDL2X2HJNR77QGH2M2P6TSCHVGUJLV": null,
"JDU37GHQUOCYA5I5LFS3WAEKKR6C55XJCCLJCCCQJEGUJEP6": null,
"CB5HEJZNJ2SWZM426TWIWLHTWAPWPT2AVVHBILEVGFD6NPHI": null,
"D4A5SJA2VRB4JGJFC7PHT35S7XAMHPZZ2PZC5YYVV7RLKSUQ": null,
"BBVT6NRRU55KNRK5G745FNMZVIFHVZJICEMODF4ZBJFQ3EGL": null,
"XBV57OEMT4GYPTTH56A6XKF2ZPMXSMHY7L3LUIS5ZZWRP2OB": null,
"GTFJ3NP4VJR6HG2DRNTDKVIWTMIALYUQIQTBJMKVM2I3QKGE": null,
"77BMBFMRGASXE5XXT6BRH2DRBNJMIAUDDMEXIJT3RMHTUPI4": null,
"FWZZMG7I2JWAHX4LBYAK2G4L4TZYLHXMJWIDGT6JC5TEBCPJ": null,
"J3324OXU2BG2NGFMSOYMVKXE6OEJNGENI7EESHDSEWSUVDVV": null,
"C636AVNC5C5EKILXT2AQPXYLSNH7LCAJKVDHP67MVHULFSQN": null,
"OXTDOQG2VIEVYFC23SKOBSSPGE55AVZZADK6PIHP3APVPHND": null,
"JLQVKV4Q2BQHK355NQXZVX4WJBPFOWSD7WIJX2P433KYO4SO": null,
"E4XHPOPWH3PRCV5MGQHR3BCTKZMOK46OH4Q6STZDPF2FG6SD": null,
"J5IP4A3DV3BHGGU3J72JVVTWNIQOLNC6GQES22MVATK5H7BZ": null,
"HHCCDMLNGOU2ABP57ION5TC33UF3NUHL2L3WUYCGZDWLDNTL": null,
"54Q67RURG4THOANPT3RAVF72TGKJE425GC5GD3EOKPY6MKVW": null,
"TG3BH3HBKFEXAUM5O67VVDTXZA6MHWSVNNLXLXIL2SE2ZEDO": null,
"Q5KJ25G2A4CWNGPPYXBZM6QVYA466MQX3HCUMUO5Z24D5JX3": null,
"QQZET7VFHGJROUQZSWSRDI5ADXVH26KEPDVL6PZ36ISHOKMQ": null,
"KWNJME4V365ZIC7SA7BYCVQUAG6URC2T6MHSO3OVDBJAUPFB": null,
"XHQYKGYVLE2PFNXQPD4OUWBASZO5OFVZISCVEFTU6K6KDKHS": null,
"Z4SPXMJIAMYD2H4U4F23FALBDZP6NRLUBDFU4PRGZ4SXGTI2": null,
"HSCK3PEXH3I3XMMEMIHTM7SDJD3GOKXUMCGOL6UXJXLCSCGN": null,
"BIUYMIDY4EVGRLZ6OLJK2CE2FS5TTELIWSEA6UHKUDUYX5LM": null,
"IJJDLN5ANXTMX54P6GW2J2EJGGWG257YEAOZMXUSWK7D76LH": null,
"CLMTO3VSAOBAOBSA5IGOO4W7KEMLOFUOIR564IBKMJA7RWEY": null,
"JU5DNSHLUW34DT3IQ36JBV6M7EPILLMBALURDAB2KJXF6HQB": null,
"VXZXWLNQZFJPNQVPTOFWUPLORZD2XRAFXRVRNLUYTPBO22U5": null,
"HNACM55ZSGJ2FGRMOTXLVVLA32BC333QGC4HFCDSZ335YA4N": null,
"6J5GIOVKU4PKHHU35DWL3D7GTJFF75FF4FKSP2HPGJ7SQ2DP": null,
"O3NJM537IQSKKWM3K7EOQSNQDTR6XKUA7ZR7CWYHYYLHKH63": null,
"B4QMXK2EAR5E7KGHLODCP56DX5HW7IQVXWHFFCZ4SPSSNGJK": null,
"A5AUZBXKF67OXO34ZSEGVXI5PAIG6W2VG3U5C2Q72SNWYNEI": null,
"ZGDQ2AA2IFBSU3APKAFL5AO4C4DXY2YBEHXE5UPPVCTFZ36K": null,
"N3XZ5FYZEO3ZX37OMUJX3PIWEEV7TVEXX64KKEZEJICKXMTB": null,
"3EVOEEWTD7OABLQJIJYLOSVHBS4SB6QGX7GPDFGWI2DGAWKR": null,
"HNAEL3D7E2S7IYLKLIK4CGI56DRGAXA5S6KG3RX75PMJ6BVI": null,
"VGVW32CIRX3M45J2CPCUPPHNRGNG55MKAU7YF3CDNMGONW2T": null,
"QV5MW2W6WQSHNC6OYMWJAWEQM7LHXRMGWCJ7RI5WQ3JGHARW": null,
"IND2PUTLFWXTEUY4MMEXCFJA7JN7DODE5HVWC5CL5ED5IEUB": null,
"W2IA75XHJRBRKXLHGB7LXD7ECYEZI4V5N5I37UFXJMFWQMYR": null,
"AWTZO6OG6TCOUVYYJCWVP2JYEXRXZ7S7F7QKUKZS7JLPKN3H": null,
"TCARJATK42Y66SPMGOZ2LHLT2ZPZW7MHGXL5IVTS272FJV4U": null,
"XVHBOY5WQDOTWXVFZYQKZ6GNRWMITJDDLXSJ2T3UWF6PFOHL": null,
"CY5FGDYLB4UFR4AJRGLGPQT3W3OERGCXC4JHYKJ4HKSFTGK6": null,
"B3SJGD67GKIEAOZISX7HWENPDBYJHNJ47JCREGXQ6G2RXPUZ": null,
"LWVJYH7M5KXMLPFAHTMF6FKT3PSIW2GRC37AHF65PQY7OUE4": null,
"UUFKWC2DOV4ZQHPDPQPRCBEYNAX6OFZ7ZVJNYGW5YZCMSQIS": null,
"K5EC26CUN365DZ3LE2NHOINGZHXQ752A3VTPN5IMSRYSTOMT": null,
"22RV6RSSZIAFXOZIRAWJAIMMVHYWGL2TY42U3TG2SPFN3I6P": null,
"Q7VEOUC52OLXL53CR4XQSGGR5QZ2QXZTRCBACHQFP2HKN4SZ": null,
"OZ2ZBCTBC32VOHHBDABY2U462OHUEUS724RUS7Z6TW5K5ZFQ": null,
"EYXYWTX2UYI6MUK5L65WSTX2FDOJASIMG6ER22NLABNGAEMI": null,
"U4FJU7RQMXXDMHG7B5WFLXCZBNE5PMV43CE5X4RJSJUABT3U": null,
"K3T56AL7IXTAGTVIWZHYRKVPHLLD7UVHV4UNU76F764VGY75": null,
"U2BRKWY2RBYV5S3XVZTUZXT55CXMB45KDMNFMVY6LENW2DH5": null,
"YKLPZ7SDAG2O6NSJFLVGFVCYMY4WZKXQGHH7OO2BKGGVLQNP": null,
"WSC2BHA7H6Q62HJIIGQFX2OU64QX4AEU2RZQVIC7LSIO2JSJ": null,
"QIFNFKPJJCYPITMAYDAOEXBVEDAKBBR3DV5ZB7DAVBIAWI5K": null,
"NMBGIDIK3BMS5ZPZS6ATTID5BOAXZAH2VUED52JSC5XGI42P": null,
"LTSG7BGZVBLLXM5U2QDW5LNNPM3B5EQZPHES7JXU2EAQG266": null,
"5MZMVLLM7YHR4PTQCGDGWFQQLNN532WMTFGX5CFTDURBYEOH": null,
"UOMT2ERDBVXC3LRYKCVVUNROBWPGFHFWKFCW65HAPXN2H4FD": null,
"RFYZPAIVYHTITTR5AKOBAMYKOA3VSKRTK4P4ZOS7JFSVEY53": null,
"QQJGQV6BSW6PL4DZGQDWWVTF7U5MEVPQABOA4IRP7NOD4V4V": null,
"EFOSJBHVPSGTB3O374JFJW6MVW47ODOZQNKYSWHR5W6UZECP": null,
"YTL42MLIGIUD6Q3AMVMJ6ZMWNSXSUWCKV4ZUQWSGTEOATQC4": null,
"F5IL5OV3Y6E4QEE7JMQTKV6ULJ5AQQKQPZ23VXK72AV2P7XG": null,
"AZEV37T65EWVWQJSISCHTYHLWRXWCR6XD4LJ4KFLJ6RAOPF5": null,
"T5TAAFPNZLVDYHSNNHIJW4KBZWNFT5CMIPIWW3EFKPU4REYG": null,
"W326OLSKXRLU6MEIVUTKFFHFGXEH3VM43F353L3NHQP6HE2Q": null,
"MIIUZQ4KGTLA66VIE7WPN4T43SR6Q42YUKWEP6467AYWKU62": null,
"AXSJHLTL4FXCMLLJTQS4HIBRGUY6ATR3GZPV4MGXLWNFHDYU": null,
"MC2CMWSKD2HMTVIWCMSPZWHEGW73RWEZKU3IFZJM33IW3VI6": null,
"ZGOZHC22WZN6LSY3KK4HK6RF6F73VWSB7U47KZSLTYOQZAVH": null,
"HU26VJYM5YNEXCOCWCVEQNNZ2WAPFEVYK67JZOHMSZIOUWJN": null,
"6ZA46O27SWCAX5MQUHZYFV5UNQUDLZG4LDA6VILK6YRQMMZ5": null,
"LMGGW3CAN4T6DSVJZB46LOBI6KTZN7CKHNZ6BMWRBL5PVYXX": null,
"RZKIP3F5SY2P4NWANAQZJHPH34CU3GMQ4VCN4QXMP7ZBSQ43": null,
"CMUAX53FME5Y62VC7T7ZOUZMOPHBDFVLMVVMHYDDBZEHMOOA": null,
"ORTA47K5MLIHEUXQTFFTQNW2RMYQSTVDJXUNIF334SAJJYMC": null,
"XEGLAWIOOPE25FDXHN65P4FYJVB46M4NGGXFAWZ5VDWBBMU4": null,
"WZGXOCCN6GENKYYAYCH6UQD45BIPSYMQOZYAYRU3S2JNJLU3": null,
"MXDDSZA6VTTYU56ONDE4QZMB3L2D7A5SCRCIVBYYVIKFDFLU": null,
"JJMW475CTRXRR4R3GEZ77STHMKHTQZYFZHFUFXEB77SV2W3H": null,
"J3TNJVNF7QSTIJDEEZMLTQECNOES4PXQALSR5ZPYDTIVVKUB": null,
"Q5EHPI6GHPPZBATKHYYEXNDSYMW6QVAVKKHC2XO7RU7XXKQ3": null,
"B6WGKJEZH7XBZ4VFFRCBFYKC2Z2ZQXMY2HJQUH4LVI3EDMMU": null,
"NZ737IT3LUIMH56R66WFETEHFDOZSNVPTHMQTW3JHVTN562C": null,
"B52PWLRNPFN73AA63O6JFLEYSPFQEIHQ6AI6YC7KWOYFE5OW": null,
"7UTTRFE2I5WB2XZA37L6F7RWCII6S6HLXZRTLSJYFOENAYPI": null,
"TJJDGG7R4RNVAOXWRZRZB5K7W2Y6XB7LUYBDOY6H5IDRM3ML": null,
"TOG35JU7ULNRY3DE2XYDZ25WZETRSO5WSFFYSZT5IIALO3ZP": null,
"2QZKK4CMZNIKUWZZB22ASDR2BYNRAMTNS7MVLBA7Z7RDKZDV": null,
"US4C6FXHKR4GCRU6IJQHSAJXLNQGUDCDEPEQDU5C5D76I6XX": null,
"QOPUXM3ZKXTPVGMVVDMUZZ75KH2S7DKYXSFCQ3R5RYO5WP2J": null,
"GZ2T37SKRE3ZX7FARFWWF3WG443LVP5X6ENDLDHO7GBWYHHM": null,
"VSOOUSBMGIPEVAPYAGWZOLDUW5HSTRMTBRTUYLQNHKVUBLJ7": null,
"45HJFJQ3YKDBFDZPNDO46YT7DLG754XZWMGJQ7YPJXQ4G4N4": null,
"4KY77KV2OWWFEVIBSUZRGZF2V47BEFFHIHNMAQVK65E34ZF3": null,
"NB334WI2DNPLWHGXBNHSU4436ZYDQ4D2S3JMLDOM35QINZTR": null,
"7K23M4FJGIQFWUMPRDZIK32MF7HZULYYSS5Z7N7QTEJGET3D": null,
"ZBMNFKSEG2PXKJZIXIK2MHJQ2ONRJUJVCDBOCHNERPGMN2NQ": null,
"YMCOX2NMBDL4J6Z7JBEWHFSCWON4ZSBSBU2WONEYYOYRA75K": null,
"GDOVKPAWZFHLAPQ5YHCFWL4NAMC5G2DDXFWUTR27XQ7LEOOQ": null,
"CYBYK7ESXTUUHYQVPMDI7VWAZO5TVGLIB3GB7NYRYVDLMYKG": null,
"4IYLX3IDNUJ2DWT4RM3QJ3IMVE22X67EW5KWSMZHIU4W2W5B": null,
"EBWXJZ3PX7LE4JNB2XWJJNXL5QBVSJQSXAUJMJ34YJKR3JJU": null,
"LEKOXMXHU57JTRZUKMCW4WDCAKEOXPHJ34ULXN5P6DIEOYLL": null,
"BESPMR4LBE3G4MTWR22CVBYH6NW43HO4ILTSV3P543JZUBD7": null,
"5SYIBXIHGJGE4WHL2HYUNK3X4JUGOJOUMKVJMMXSQDKJZHFJ": null,
"XN42HP3QOV34GMJA5VINVW3O7KWW2GV7VDKAZDFBCC6SSHNQ": null,
"326BDEDWGYW3IMEHP63I6LVGSRMS6DUUNMPY3YVWXCH3YA67": null,
"FYNTVFBPC37FYGOXFIXJP57FNX5MYDGUWIMUYMFOJSOXRRDS": null,
"7DRCBIQP4EXAVNEMWOZHAEZ2W2EIMKD77PH6JJWP2BDN6NFN": null,
"7Z7LWVFB2Z26EVYZPLQAOQ7LXLADTHUA7QGKDRFLXRQ3ZJUX": null,
"EOZ2S4T75U62LD4QUZNTOHP7SNVJUNNSE7WWGHCMC75O4XPW": null,
"TVG4ZY3YVNQV7WPZ2CEW26QTGWUBVJV7FTRF4TE54446J5SI": null,
"MQ62OHPXMGGASRXKOH5MEVGLYHKNWBT3DC7XSXPXFHFXFO5C": null,
"MBRTEJLOZ6U43EOO2IS3AHNDCT7WUEK4XN5ZRMTPBKUFXUWU": null,
"24WJGDPNT4E7SQT2IBSTHJGYBMEBKS7VPGJYBRRAT5YXNBC4": null,
"3KD7I6FOTRB4U2JBT7CIJOPD5XHFWHESYJJQTQVUQ3IGIPVZ": null,
"25XHQ7A3DWKVDBX2ZFNIHKOGJCXY73N4Q6PUBEWGH2I55XVP": null,
"GE3YTUBPOT5CFJU2LQVMZVC67NFNLXVWNTV4ERN6BHVGCGYL": null,
"VXE2WHW6UWRE4WYTAVFAQ75IBYUPNZVMHJC44DGDPIAEOVVE": null,
"5JRWFOAEX5TNCAMYGF44C72EWF5NTXIRSVST5J3N6N5SLGFF": null,
"TYNIMWTDY2D565BJUNMFXTJHBUMWOTD4YSAFILKXPKX6FKRO": null,
"RDUDIY6N4RRUA6YEBBBFPBNYFZQUWRVURNYGJPEU6EHJA64H": null,
"MMRLX63PFJLWBJUTXCSLALIGK5YOHTLAY64WFQIYQJCX4QID": null,
"P4T7UPQNUAFMAJ3G4KBRHOQP5GCJP46XXYKPTTENUI36YQEP": null,
"VNAKVK3A4TN7WEZAJBJVMUVIKIUWCNH7B373DP7WAM7ZXYDD": null,
"VAPNA5BJL7OF7VRVSUEFAG6RZWENO5VOGMFVN6AB4A7H4VU3": null,
"TLVHDKN7326OHNXMBBJIVQW5FFFGPXSUR2IVTMPLOLPPJQW2": null,
"LD4OK3CY7MQGHUMQOMPAJY2NZUASJLSLWVSIIKIYYYAFYHIK": null,
"DXHC3XJCJJG2SMU4O2HDPMJHO4PNNYGIMLB5KSCQPNLBAJER": null,
"SANGKO55HOXMBC627JYHVBE3FH6KJL74ITOVF5GYODRRMEMP": null,
"TOQW7HYYWSFH3NKL7SITPX5H4HLAH7BKL35ECCAILLJ5B4TA": null,
"WUKAWAQHSBKAUAYEQ4UA5PKFB4676VQNQFLXUIX6UCDFZ472": null,
"BDU5VYNLNHR6HOLMZI4XSDERPTMVJ4LBUX5XP6W2BQWH3NLR": null,
"R6BT3RGKODHZN2AEX26XHNSLCHGPGMQ7IS2ONRTZEPJECW7A": null,
"E7Z4FLW3UW2ALRLPSMHQWJWBK7VWS63H3AUZZL6LHCIG3Q5B": null,
"FUZAITDO5EH4BU3ZAN55R2RQZ75LRAYI4X3MEJKJD44VHOT7": null,
"7SZ7VZ5O2OFPJL3K5JJKH3C2ZYAJCWW5GYXSLVFHRRATZDFA": null,
"6H7VKVPSP4MHB6P7H5KLQQN3Q6ZSS65OMK6GJ3JIUMHQINMC": null,
"QNCN75MNVAVH2OQR3JE53SGCKLXPSB2XBTZ55J3AX37AV5HT": null,
"JCSYRKMHDGVUVZO65VQVAV5SGQS5IRS4UGFNFKMYP6CXMHXN": null,
"JXX5VCQU2Q73TK5ICSFX3QIGA6E4IFRTGKPZZY32UTB2RY2Z": null,
"BMUAPYFGRJO7ZQAMMSSEADU2RC3LPAAXTORXLSIUCXCSSC2P": null,
"3SPFCAR2V2PQA3RWOY5ZZXI2V6UEUCZWL6SNCGEAGNR2JQZV": null,
"KUW7Z4ZHRUX6DI6Y3ME7A33SXUAQPXFAHRG4IEU32ETMGTLC": null,
"64F67UZGQHZUXLN6HCATAAX2FUQNK2WVOEJGBQ27H5DVZFC3": null,
"GHMJSW2TE6E3JLFDD7T6FI67HBDHNDVLGEKATAO5G33TID57": null,
"6BZEOJR372ZLNXUMEQQUKHHDCAOE5W4YDT3VWGI3YYPYDC5R": null,
"62JOKD5O25I7DBDFMM2BRQP4HI2VJTUHMEF3G3C7JFJF2VNL": null,
"NEF5ANHSBNEXLOP7FFH7ZVHPDOCHQQ6EYOG64JDZNIHBT44L": null,
"ZKLJACJIQT6M7KUY3VWTMQ4WD7RETAWN7LDUB7UQA3NZHZLC": null,
"VBZVHDFHE464JTYWCLYNAA65RDMVURJHVZHWRL3IKTNT6AH6": null,
"FHBYZO5SUBQ56J72DWYOUZSDKXE3SKDRWBEGLQPHWUGVSW5B": null,
"HHWRIAY52UXIOIKQOL3PBERZFDCQXAAUIDT4RTZF2VETEY3Q": null,
"JALKMRCQEIXX3JPLOACUZ2DKA5I2RWSSSIYDVSURW475XHR7": null,
"IMQUFG6JBGWA7R3D3NRMJNOF5MKE2NU4H2LAI6UPIHUEY2ZD": null,
"GWSUUFLKG23Z4BXTLB2HJHYVRWAWHKV5MA5RVOEE77Z65ILK": null,
"ILKEEWZSHVZSQ5M5VAZH6MJPBVQVV63SCQSX73YGTOQZBFKB": null,
"TBU3SS7AG7QISWIK2KKNE77ISJUEVH3ZV7QZJAEHLMAOUCEZ": null,
"EPN2PRVPXZGZ6WRX5ZMG6UPIM2V2NEA4BBC7ZDAIVCEKMHR5": null,
"Z7GJAUSWDAH2JUMVX6IZB2PRSIUHYUKXGKJDM7FXVFDJNDUU": null,
"APOEQP3DLJGKFU7424CJJBFDTWODGF45H7HSXT3GO2UC3VCI": null,
"LCYBWI4HYCSVGBSWWDJYDCWQZGJP2KVSXUUJBO3XFUWOS4SA": null,
"KOTWM653HSOQ2JHNAZGZZA5FGBBJCCBYPDVDE7WDXXIHTULF": null,
"TIPJO4GHBUJQKWKVHK5RF2NI5Z6FAIEBGFPR5L4SSCLS6IE6": null,
"QJZMGE4B6UPJ35KTTNIAHWTFV7DFQZ2QMF6DLHB2AHZQ45CD": null,
"SDV2RDMAXCYWHJJRPTEIZVE6SJST7KQJB57AXCWFVO54E2GX": null,
"4NW6WJDWXCXG2TS24H4I7WF2IGROPO4UBN2HJ64M3CWBU2M7": null,
"GJPMFWNBHZ63VB5XWIM52UO22ANEXDYLHTF24LGBC7XXI4SH": null,
"I3TPFLVZ47TOOMM2G35JFQAYHLAIU3OXV4SXZEP67DNGYXN3": null,
"QMPKHHYWWSV32R2LHCWFKBFDXUDUXTZ7FRZK3TCF25CSFNWD": null,
"J3C6XZSMIXH2SQMBUEVWEI6UZVX2GJZCAYSPD74BBUUK45RS": null,
"WHK5HZ42VH6IJ4U4EUKKVLRAID2FH2YISR7IV6FMNHQPPSH7": null,
"C62NUQB2FUJTY5VRNI6ND26FXCUVACSUTTR6NZMNQPYK6357": null,
"2JXXJE7WN7QWO6X3ESQCSDDBTZXOY43L5AODQUIR5P6Y4PZB": null,
"FQVJ4Y4GES3RGRABQCJIDIYEUNTIGETQ5EOXW25SZSYNJENT": null,
"IH2YJNGRU5Y3ODZHMWNV3TIU2MGCNLIPV75QL3JL4I7PH5ZI": null,
"RYUBMVYE4PL6JJOSBM57NE2RFKCY2EB3EQR3QU45MJHEX5IN": null,
"KRVCQJ6VSHM52MLDNS65PKDYHNBJAHCONQCNLXBD76LDCOFY": null,
"W7MB2FYKYWXDXNOKVWJW7TSUANZIGE25NABNIAK7VLPLKQQH": null,
"QUJNQSAHDXMNHKHHIRBEFONX6NRV4NA7NKFRDI72ZKVZXR32": null,
"SRQAJHTEQYVNHCJDTYHA72VSYS4FPTHXGPFYP6CQRTEUIWVN": null,
"GYQMORZKT4JGWGOD4KBEMUB3XZNUM7H4G5IRA6SYDZOGAPVF": null,
"73P37OKSAJ5SWM5NJ2QWCTKPTFNLORRRGBNJWR7BTCRLKNCO": null,
"D7YVGR63MRZ5YS3UTCUZ7REPWGB6EMGNI3LXZUDAYBSZVGHZ": null,
"JNUZON5EE4CF5UIPXIAU5HKQSBN6O2C3OXJ5IT6HPZMUBXRK": null,
"3UMKRHCWRV2WNUWPF4WKESLI6EOHPFC6FOXF2MGP6E7GPKF7": null,
"ZPWCDBHEOCZRBAVIQNGRQ4WNKSE4XCXWH3PQSBJWVTMLP6AD": null,
"RCOP6UXD6CG5XYUXFXT7HDAWQA2LRA52R2NVABFBB574N62D": null,
"6EHQW3VGWSY5MQKBQ4PWU2YD4KKXPBUFJCBEEY6GKOGGGT4P": null,
"V72EUDLMYSS47DCO7XIEYQO4S6KK7ME4C6VN6IWLZALPDIR2": null,
"EX6JHHNN4R7BQVBTVXYRD54J6BLOJTRHM64QBK3DHUWW37KF": null,
"6GGFMOEZN5PBE67AJM6XJKDL7V6X26X3TH2WVOO4X2MEQJKO": null,
"LYM2NDKVFTJ2IJV2G5HTDDXFDAAHVHVMVTNGBAOABW4JLB7V": null,
"5GPR3EHGCAFLKH4CTOZK3JBHCJSEEFD2Y5GS5Y3B5FPXAK6H": null,
"3TVZ6BP47YPHI4HKRIK43AJPRVM5UO736FF7WEXI6FJMTKY7": null,
"XDL7LZWG4CIO574WINYHCXMGRRZV5BMZQH6GPTTVPBWGV4MD": null,
"OHDX42IVKOGGQVXFE7Q3DKX2HNXGIZRAZ5TVVKQ34BO7UKPB": null,
"QHSOVA5SCRL5AK65IALQZWLHPSMLOOHHS6JN3LHDCN7DEHJ7": null,
"EI2J32TUZKPKSWOYH7EPPKHISCJ5SPTUFJXENKZJFAPEFQJL": null,
"3FFPGZBSH57RTBR326VUSL4G3DELAIPWCCHB77LFG5CBS2YU": null,
"VOLJPHGJOQKGKQ3PQGRLYJBZCIF3T355GXCQQKV34USNOXNX": null,
"ZASYP4G3K3DX6MMU2CK2P6GJ2PKRQFQGFVEZGTMIRAZBDMOC": null,
"MSLOXTCY6MPU6XRGIJ7ZGFBB5J4RTGTEC2UW2LO5MIKPXFJO": null,
"DM3ZAC4JV4IDN7ZZ2OLHAUCUEWYTMLZSQQEARJF4JVBUTE2D": null,
"KWIXQOXXGHTUPBDCHXV6ET4YZXIDCYZEQTFIRHD7DTMSGZ3X": null,
"SOF4BRIWEU5XLSXVFE6IHVVDYG73RK5HJACKPUNFRNEDHRWS": null,
"4FECMJE2AGQGN54LFXTIQFZC6ZVJN3LY62YCS4E65PMW2K5J": null,
"VDCWL2B5OEDDB2YGM7Y23WLJPJBFESITFU5AWDPUKDUMFPBO": null,
"W6VC6MV4GBWJ7IDAX4DQHWJSBUJHJN7ADFJ53NBVND3TXUCZ": null,
"Z3TTBMVW3FCTJPLHXITOVK4LPLUFJJY3CIYKJ4QY2DANJ53R": null,
"O6N3PZGXI5B6NBTOFPB5WWIRJ66O4FYLSGHDIJLVPT25YPWK": null,
"RXCNDGG7CDEMAOGCALTPXWLUL7A67D3JSKOZSZEQBLDW2F3S": null,
"XVKBWW7HRXDBW3YXSBMO7WVEUPVQ7LRZ44RVFI27PYZO3NTS": null,
"XUSRB4YQDOYJALL7CK2OYFPL7GKI6XOFYHP7HTW5H3PF333V": null,
"PCCHIGPV6SWW2O4YRPMFMNF5YVW6QY5IF7JPYAULF5WPTYKB": null,
"MHRU7JFEPHHUAULYL34RAEAGBU2ARZG63TGIIS7MHEQUKWPY": null,
"Y6EDYRAB7V6NAP57DRIKQ3SB57XBPN7MAWD7F3DM4DKWIAMA": null,
"JQXEFOTP5HPBTKL4VAXYCMJFZVGSAM3JVLFJPQ6KHVLCRXFI": null,
"U53PDNGH4IKMP4PW6AJV6K5Q43PYB6VUZ3IJVEKZK32IR5WJ": null,
"52CB2E7VQJ3JJ2SXPHQZZMER64TM2JQBSW3JMX7XITCNSWDT": null,
"3JLBHZFBPZQTO3MLCW6S5N3RIR42N6RGDHMP4U6IO6STOOVT": null,
"YTFVKDUY6LHHBY5JBBTT75RYI73Y2Y2DFT5PBMOLEVBJEN4Y": null,
"TAHMINQIUDTCEBCJ4UH2PUXO5TYMIIZTH4BX26S4NRMPFD6Q": null,
"4VJIQ6FLWV6ONBHRWDR34KXCTHL7HIXSQAF3FAKOMZ2C7QV7": null,
"IQWFFVGP6CPSAQWMKA3SWYOXAUL2YCD3EJYRQ56S3VXWAMUF": null,
"J2FABCRQ7HZFV4FKZKY2UOXRUO4FYXANTTWL27ANRYY6XZC2": null,
"G3TOY5CIOYIELRC2S35CGAS2E36TDLTO5XYXHFVKZNDFQC6F": null,
"SDKQB4B47LL6CAFDDYJWDS4X7COKTZOCQ6ELJBL2YF6RHZJC": null,
"L76D3LKKTUAWNPDXKTWE7JCFCRFVI4UX6NKQS3CAA2OWVF4K": null,
"QVYYK2GQF7DHSJACSOZPOQUCWWIYTRGEWMBIR5RRCV2EPQ5X": null,
"UM3PJVMZNDU2GJ6KVY5VQ2HPGMSJKVAQBDRKZKHBPBRCU5SO": null,
"RDIJQSPXHAUB7XSQQPOL3CNUR5AJAJEWAFYFSDO5G4QWZQCV": null,
"3CAVVDQOCSMOPC54JWKI5ITUIHAOV6SKAIIAAPAAJLBDTXEM": null,
"JHLSLTDSRVKDHWRGT55OZ5NC6YHGD35WHW4GPK77VZWPNVKN": null,
"6K266T5MHDGFA2XECSFBMTQDEE2C4S45S53XBODESR4ERZQ2": null,
"VJVWAFFKWR2KSTFIWGAKDUG5VQTO3BPTI7YFYZWZSBMMQOIN": null,
"LBSXWCQNCHYUG5M255T3W72NBPR5MBEPO7DFBCD277HSH4DU": null,
"WHJGXILLMK23VGXI2OY76SYJQOQHQOM6OSLT4BWU2KSD3OAD": null,
"DVNEV7ANOMDRQDHTEMD6CXCTO7NOY2MQQOLI47U4DDOJ2A2M": null,
"TV752NASHG7FG2JOGS5P6QLJ7E4W5NX7F3OYYRPOEFZ2NREE": null,
"S4DHHYVQ4RQ7HBAXW5ZKISZMULMLCFTSBFICXNLI2OD7YNF6": null,
"HSRHOS56TX6EEDHUZX7K4K6Y3R2UNHRINXWVK5WBWHDPE5HF": null,
"I67YQZJ4PXHFWHNHMK5SKUEFIL4EEP5B4BH3TJNHZPQOUXDM": null,
"5AJTMUDFBWW3EGM2TH2YAJYXIR6GKM7RPBYBRV6KEQPDDLM6": null,
"6V3SAQQC44I3CSDERRKA2533GYIWWHUZVR67JAWIBPJJBDBI": null,
"5I6EFWIWLDNJQAZNZN326TUHCUY5YOD4ITIT6NL7LWIK6RP4": null,
"NVT5LE35FIT6LKWBI5XZO2Q7CTQBFJ3IOIAFNXI7PGVHEE5W": null,
"E5I534XUV7GRNCMHBVFI7FMTSPYBGXKOFVXXSEQYYLVGCASL": null,
"3XDVU325YQTEXC7HFJKKKH7CTCCNNJZMV6VRT5GVED7HFKMZ": null,
"3UJYDR6QUVSSCRHJT6WWNEHC5OMYXOPL3EF26PU2A5HESFG5": null,
"UPRVTQXNXYCZG4JZIR7GZCCYTXR5VTUR2OKAJXEWGATCSIOH": null,
"2QLXXZPU57ZXMLJHEYDS6IHFLQHOKANOE5URI2TRNFNSIFUG": null,
"JFL3SN7LZ7M4RUZXRTYFQTUMYWYHO4P3ZKBGFDC2GGWZBPEA": null,
"SBLHOHHAOCNEVQI3UPBY5S4UKTTIH3DEJEDJHWMJ6VEWWTCL": null,
"TIE3GNWA2BE2WGFA7Y3KEHF4IF77M5XHZB3DIQLOE3GG4VQM": null,
"BB7XBWIYV33TZGTKHTBL4PDPH5ZQ6X7ZCMHS3KIQEJOLOXVH": null,
"6WO2JPOCRLCUSXS7BHNKFBDGFSEXCWYUFPK5SDZJTFJAEJRV": null,
"RCJUMHWKL3IBJ4ZVWHK4RCZ4RCVVTMG5ZO2KWZOIVZLJTSMT": null,
"YIXCNMIMZBA7NK2A5QOCLE77QFF6QDS7NGIHKMILIUB37EMH": null,
"ZSI25IY4L2U7CRPBLOYY5TCSAVG22XHHZFC7JZCRAVY46BWH": null,
"HUSGTJENHNIBJ7VSWZPOWFHHKKYH7H2YSP32LLQ2N7CWKRME": null,
"WTIJK6LZPBOCIJFBZEG26BETKTY5PJKQK5D3M5WVPWVSV7LN": null,
"ITSWONDXALFBD4WMGSMRKQXCVTL7JRKVFEHOAOODRQEFFSWC": null,
"IY3RQGYC2ME2TEUBYAQG5WJ7WOAJV5GTO6P3FKXWOLSJWGCD": null,
"MDSHVZ5WHCTCYB34ZABEUJJRXHQDKO5MSC5YVTGPMNJRXQK7": null,
"KHNSXQTOSCRSTX63S7OVO2LGMD7OVR6PZIGEKL5ZDYPCEKK6": null,
"LECVNJKLFT6P2HWX3H7ZC5DKJSSRZ7PWZVBN735K7I45SOX4": null,
"HFEO55KM3XH34UWCRYM5CFNQ6OFRAKM3U6TABNQDP74DT4JQ": null,
"QZOWC3TAAU67PVSBRJOOVZCBSRIOZCMLPB3FH4GS37WOSTEZ": null,
"TSB72AJ4HHOBEYK4CGFX3W4RW3SIECQYJMYISHTPPCGQNLFD": null,
"6AB4YKYVMU2PXRABAUBBBF4BJ3IOFKYWBJ2IMFMRVLCBI4S4": null,
"E3TI3V725PEP7U2CYZUUKJEBPAHOEI5SYCR3YZCMGD5EGYHF": null,
"APKJUBCO5NHY6QBYNA2ADB5TTPLCNZMHG7HGXXOLRBOZD46Y": null,
"QKL26OQG6L54OCKFPLMXI6M3EG2HI4EG34D7BNI5SBZG6OF7": null,
"W4KKIH4RPYXL4JZY24JWLHOATFNENBMSEQQ3DI7WW4PQIJQ3": null,
"4XJPWCDQXS6MSKI4EMFPENOX5FV7KMKKZ77LV6GJ6S7ZBVB2": null,
"LWMCTL5CEAVQDT5PEXFKRK7Q264CNVV6AU657OQ3SSPCDGSQ": null,
"CBMCT6STEYDOVXT6OW34OXGZBN2A77OGBPDRN5AZK4RXNEV5": null,
"OUGRMVL7PTQ3GJNWQ5WP7XXNYBIMVWKSNQ2QZH5RZRDEGUND": null,
"XKVAYVNQL7KW5EHGEWYRPSWDXNUEKP3YC3OXGEHKG7PGNZHL": null,
"ZLO6BOTXUEEW7UOENY2NVIFLSG37YPUETQBYYCQBJM5VXNG4": null,
"QMZJWAJYYE6WZQX3OKY34BPU7ZZN6ECDNIZOIXREE6AP3WJF": null,
"B5FU7VNVUSA3ODDEUDVTKE7GWPU3JQXWHRWYGLT6VFKSFYAA": null,
"HLHSAJUSHU5EY26UTR2UDJAM3BIHYYHF46MNLTQZJWDAUCDO": null,
"N73SLU2EDTPQ54MY5NWT7KPSVTO3TOGPO3DGX4HQYPZMFYJV": null,
"7B47MDGTJA3P2WX3KWLLESWTC7RJUSVUSBI42SATEYZVPL5K": null,
"YYLWTHMS5POBP3WVX5Q4NXQ77STWJTAHE6QK7GYMBIJU3TSX": null,
"JI7Q6GUWUTSJPHKUII5IVOUZ2QQ53EWNWCUM4PKECXWSVSEK": null,
"XR4W6GZYNYIDAFU7MWMIGFGF63OLKU4FWQZ4RAN3HWNXUINB": null,
"3KX2TVZZAQSYQHLDSWMVZVF4UAXYONTXXFWSGI6CJ56DXU6O": null,
"UR6JGWK36D4CU63DYI722UFUKLB2S52ZI4OAVZM7CVGGY3SW": null,
"VGQOGZH3H5IAFESOYWHOQGU5FHP4BJAUUK2B7AKDCJX3PUE5": null,
"Y5GO3VITRDTHWTMUULEA44BVX3GHVLIWFMTNUY2APWRL3JLD": null,
"F7U4AV4VU7YAEDK6SI64JJUNEHG2MEFLKNOI77IVDQS7BGJK": null,
"D77762UIMSS52GNAPWFCEEFPWGYLBPKWMBN75S3HCOI2SYCL": null,
"NNRBK2PM7FI7MVFBSUUCZVFTDOKXLNVK6I4MMUXU4AKDPTCK": null,
"YSGZXEZQRGZ3DSMNCNH6GSWGCRWQSIRD3IOR5E3XEUH5RORJ": null,
"P6KRZXZTESTNZHYLZFTDLZMIGIN5H74H2KYUTNRIC3JWCNJ2": null,
"QK36OWDC6RHQIASJXU2HZVIBARNIESSCWKICTRQ4B3OFUB6D": null,
"JQBWWRLDDMH3HACHKR7EKXFCAAR5E62DX3ALK22Y5AFA4JDZ": null,
"WWOLYDEZIQARIEC65MFSVB5RH3236B3E2YSGNEN2QY6A2G54": null,
"QT5UVU5QUPEY7VCTTW26JTO2FBUUBCRBYZORWGTYQZ2JZSCH": null,
"PJQFD75BGF35X4N33WD423KSDLIAWJNAZUBXQTUGHOW4PTXJ": null,
"A5VRG2DRN3CKKTP2DN5YNILXVCZRTKFXWILKWLZ6PNVKJTM5": null,
"TY4YPLWS4MDSKPG2HHIRSAWK37LFVB357RGGBRFP2P332HJL": null,
"SUC7ZGB6YKDYNAP6NTUZVEVNDL22KBCRZIGAWSOBUAL55LDE": null,
"Z5I7WKVA6754S4G7QWWXYTRZ3SGEG4B3KG5MLHP3GJDI3H7M": null,
"VLGCWOT665AT2R6EMOAVHNKVM2NKPSV4KI4CMNEUZ2YMI3UP": null,
"YJMQW3C2NIIZKTJY34XRL4HQ5A7EUMLMXTJFHHRE3NR3QGZF": null,
"TOEB56GVW7OQ7QLL25ZY3ABP4ZQS2ZZMIJRNTILE5CWA2IZB": null,
"5RGLCKE6D2MM5YH74OJBDHTOZIM7LN3EIYBLXVF4PGNBZON4": null,
"QMQPPFLB6NCEBYCQ5U2YWVYWRKZSFJLCDAAPYSPURDLXAU6G": null,
"UTAFBURT6XHHZV3Y5OZJBJJQT4342SSCOLWT35GZIJUPWTTM": null,
"XCIXTAB5SB5EMQLZW7GCBUS2N3XU44YELMLSYIFAJHHGP3VS": null,
"LWL5AM7Q4JPEDEORTLNDWUF5X4AIUI4QC5S4CWUXKXIWP6FP": null,
"M4RONO5HAPE25Q46SSRBVQLEXPCVQLKOKX2NYQWX2SNNGEVB": null,
"UVSHBLSXOHEF3AGG5PDTTDFVXNQPRHCNUTXYDEXJVXI7JCPL": null,
"C3PB24XOHCI52DU64XQL2V2OKZZYG5B4T6PUU44DZCH4DMSS": null,
"VGACAPDUB2J7KLW5PA474JQZWZ6QCDYYB2I32ZFYGXR64M2Y": null,
"NNDVFWEC2OE56D5PLJWEEVG25TMXCXISOUOYDOUEMUZRMZK4": null,
"57TIZBR3DXRX74YXCSJ2RXLZRXKX3K7H6WPS7DVONX7DOJY3": null,
"RFSCST6ITGG53EAZEBXD2VFQTJ53ATEOORQV6SQG5OSDR3FM": null,
"YLIXTKYNMODZNBM3L2EL435GD2LRJ5XAJBDZSYCU3OPZ4N4V": null,
"FBEPPECF3L4RB6QBQLGL44JDBCQCTQ5MOFYFCUQVNL4DCQYV": null,
"PAJST32KEXY6I2Y57OASSUFLF2BLPQQ7NZMVN6EVR7JS5LY3": null,
"76MHL43MEQWH6R552TULI3TLBOR22YDMJC5ZYQVWCNI4BWF2": null,
"A6KZM4OXBKW2NJ7X545F4LIDSC7LIAFYJ4CJSWW2BWSIRWUY": null,
"VND76C7TCKQT6R4X56OD4UYSOBZGC5BQ3LR6RXOX6LA3I5F6": null,
"CE2NODHXCRS4ML26HTI77Q57R7ZXKZO433LHHA66I5U3Y5GP": null,
"3DGAXWQDLZBPUYZPBGMRZG5DOBPTIHKAXFSCBLMEQHZ2A4W2": null,
"NAOTRV3ZNB2PK6RZJZ4UEQVF5M3YISGJNFZQQWPV2S5RL7XM": null,
"HLCSR65OBO7BJQPOA65Q6BRDVFPOL7FJII2LOANRJNUM2DDU": null,
"YCBI6X4JLTHKGAFR7XYKELWE7JW6VHLMFJIWF2ZC7BPCQFFR": null,
"QEF3LB5GFEMHAUDKPPNYGRKUUV6PAWU5XXYCFIHXI7PLGVGW": null,
"ABBQK5JKJZLMX4KGFODWSEHOPDTRHGDZCBO3ULBVOGUIAAGI": null,
"HZLWUQNBAZJSDZEB6IPXQIUMVWUPYVMVP2N72NJ4MOZFUKGT": null,
"7SQCYMGSMYW47TXUWC2J5674L4CRDIAO34D342D7IJ6OE23F": null,
"YAQCDYBXIOY3KZGFJCPS5VD7YQBPBFFFYEA4DPWFWJCWCJXA": null,
"HCZ7SSO422NW6O3ARCBUGNBCMUVEAHXMVKAJSDBHAQSFXIMV": null,
"DPX2FNJNMFQT34DLAOEIN4KMWJYLOEGV7U4VDH635AG6UA5T": null,
"QUO6FPOFFXUUKAZXYRN7N2MMT7IOJEG6NLFIH7B5JI5V2Y44": null,
"UJ6G5JMOINYVRLVISHWTGQDDDWA6X3QDFICKY4QQIHG3QMF4": null,
"ZR3VRUOZMQE4EMVT2WDB45TJ7KB5AGU5UBBPNL2A2D255MOL": null,
"2AFEUH4R6YAJZEODKJBMLDM4ANLCKRU2C33HFSVU2LLXZW5Y": null,
"3S4PV2VOBFB6GFRPG5SB3EHMZE5M7VAAFRJ3JQYHZEFTEKFX": null,
"6EFK4THSCBEG4LDSVE5N5FXSQJTYB5SQ7LKJRBL6IYIREWTN": null,
"HHYCWLKLIII7MJ4MYU7CJZ4YPOOUVWOKLXHZV5NT6LU7WWGX": null,
"XYRSXFI6XRY3YACAIVIZJAVKFTZPRH5FXD7E4P4LYUGX6I5U": null,
"6W72FMK5AP56TNCZ3LE5OTYZ3WYPARBB5AOXDVHGCBOTWZTO": null,
"7YNUW4DUCHUDJSSAWSYOYM2QXWTVSJWGDPIG2EAABTU4QLU5": null,
"HNVXP5XULHDT666ND2M3X2APGXOBCB7SCQB2D7MFQKKNVOS4": null,
"MLCMV4777C55OEVW3SFO4VHH56O7BSIDLZFYYTY3JXNN4DWG": null,
"MSNRSOCYC3HQCUXRLCBYFYQOMJFBDOSHJ3HYYYOHEPODETEE": null,
"BJB2U3W5ZF7WQVTL6R2F542WSS6FQDSVDMXNYWIC5PHED4HH": null,
"E26RFAVZYOV5WZ6WQDVINCGNG6ZYU2XCV4FPEKR45IASGARQ": null,
"4BK33GLSBFLRZHOHECAVVYT3LJHSQ5RFBSMKLMGTK4Z5RGZO": null,
"5I3526BP3QPLNDBEIPVQL2GOAMRBAYWOMILMQK5IT7RES3EV": null,
"IBHOZ4VNFYMLMUNOZIGK743IVASI3DXHCY2RH6SO4EKNGR4A": null,
"CCZT4EOMTISCMIVGMB2ZRUGFIR3R6WKU3ISSJ3VZVA6SBLFC": null,
"OGJUH7B3WKG3W2UFEBL63KLQGPSPRNIHUUKWTKQMBN5QG42E": null,
"Y6JCIA2AYVA3RDOUQFYWI4EMF64H5FIFNAHSKZ6LXCRXCFGW": null,
"VX3OCLLJZPGXWTLGERIMK5IS4OXKU65SMC4YS5JZND6VEPO7": null,
"UXWF26BRES53JKXYXEG5DWJXCR6USGPBWQBDJEVEBA2PPUAI": null,
"IB5SSNMYSFCNB4ODT5OQ2GAGPIVDWOBEI3P3EBWI7AUGC7BR": null,
"ASIAQKC3VSFJE7ZW472ZOAXX2T7JTCLZBN5BYEOAE7E67F5Z": null,
"BKQ3GY255BDDVZ52IIR5K3NFIEKV6GXBVTX3ROY3IN7XDAHA": null,
"JTV5ULWFJJOSFTX32FA6DJWADX5UL3NV4RZZS3Z64IPXDZNK": null,
"GSZ7MZXCFKAWFBXKRVYUDULPJEH3WSI2K634LAAA36M2FRF3": null,
"HSPTZMNCONTGJGIUWP7ZR277AYWTDIKPAWO4RODOIHQGEUF3": null,
"4ABCWRBBUAO5TVOSOZDF3KMCUCKIUCRJSBGH4WGKDHWH3LLN": null,
"K3BK4XFUTDJLS7KY4WJBS7RTZ65HY4N5NJ6AMKNKGO3K6DXG": null,
"S4VZEKYRNOXUITHJENCBKJN6CC6QV7Y4MIHQ6NLN24OJFMBP": null,
"MRM4HMHS2KAISLXU2XYFQCQH7XRVVC3EXSP6JU7FIM2DJHVV": null,
"QMNCR2JQYOST5MD3HI2I4MCTSJDFCAGUTEE6XKM2THC4WXI3": null,
"ANIF4DT5IA4IY7M5OISD4IW4J2TDVHHFIPEONUU4CV75LOFZ": null,
"TQHJIX3NKO5CMVRNOG4WP3YDSGPLTTCRBA3RDBPECWO6EN5U": null,
"6KI4L4RRXZ6WL3TRMCZLAA2W7AQRXDCC43O6AGYJ75NUEQO6": null,
"VL57QTQMHQOAX5MFQTX7GUWOECHVTLYJHIBRKMWIRF4QMN6M": null,
"JFTGBEP2LSZGDDFGV6IV2JAS3J3HB7BDRB6WEYHSC5EIFNA3": null,
"WLEZIN5PPCJE4W2LGEPW4N6AWQ4RLE2AOGFBTETY5HNRSZCY": null,
"LUJRHNRDNK7YOKST7KRVQGVE2ERU3LUVPZLC5YYLCUAX2EEU": null,
"F2OOXAP3FFVMQMJP5IVDLRVV6IP2NUTGT5MGZCJMR2IFNA55": null,
"SVL525L4TVBTLMH22DTXVCNECAZVUTMMYDTA3UQGV7U6P3YU": null,
"546BD77L33PUPQ7TW3GJJVVJTYKHIIKF7YOO4SSGIIIOIJ2Z": null,
"FCZRNOURTDJI2BE7HJ3P4MMY4WYAPFFBCTVFXVTYSK4UB4JK": null,
"S2U5XQEC7I4HOUUR6HFXUF2PR2CLNF5UEIPJHTNF2JM5BZUJ": null,
"JTQGSOTIPVYKGYJBUQC3Y44RWE372S7MPMFDETMH6OEGUJWA": null,
"W3DTWDN6YOEPVUJVUDNPWCLQMXXCLXQPVYU27675LZM4ONDF": null,
"LJ7P7AJNNHJE24PNWQDK7J4VGGNZKKR3OPVRFV5A4U6LRFRW": null,
"I4QO3SZC4455G5PQIJPUUNI4A2BPJKTH5MBA7LN3HRIW6EFZ": null,
"NNR3EXDDDPBTOKTRBPR5SO4OFPXU376ZIEHA6YHEJK57ZRGH": null,
"4MBIV5HD4ZMXY5NIKZQIFKFO7S642PC7CWVX7ATXAXWQWNGU": null,
"A6S5KTN66UWYBWG5CZXJVCJ2F2EA22BCZDFQMM523DU7VFBG": null,
"AOAPML4IEVJZSZUOONTTDYSEN465IHW7MZXHSQ55E47TJ2NW": null,
"ZIW5DXTPGQLTTRHPRQB7SADQPCSTXQRMKHZIXA6T6YW2BMRS": null,
"OUHF6P7JPB5Z2C2E5MEPNQ5R3NY56KNQFHG3RYGWXBYKRRI7": null,
"M3JXOC3CTIEMVHTQW7HB2WQ7L7Q54AWFY6F2UBTSZMDXHTDI": null,
"WQQA7JW5NTSAI73WVQMMAJ4IO6OKZR32GTQTMUWE2HLC7DRH": null,
"WGDVRLD5YWTXFOFTGBBEFCG455EK3BZCZEE2POAX56O3EOQW": null,
"6KAR3LTBYTJ6WRGOUQ2TEPZKWVVBPGCO4OVAN2ADNDNLTOSM": null,
"VEWL2DORBATRWF5HJ7LG66NYWMXH37JJU6XWVGJNDVL3OSAM": null,
"B4HXCGMG5S3VEOZR5IUYOZAEFL6WPRLXB26SLWZHRY3WL3ZU": null,
"REKI5EIO6TNXBWJIENJDQ5CAYEYZC2GXVPAOIWGVXKN2K3OE": null,
"RBOY2SVFDRIKJZWTWVEGSJLHGIMAZXIF5HNBZAKPVRTEFR3A": null,
"SIOSHIHS52CHIB73RFONJOM2HJBTRLGGDFW6JAWTR6UPJBVB": null,
"ZGHKTW43CXC3CBOLSENIMDQUIR22VNXSE6HFBT6ZUA3TPODL": null,
"XA576OGJNZK3AXE3FJLSSGN5MGRK4FJJ2XX3UHHFI6NO7P25": null,
"22VL7B7ZI53VMYEYHKBI7XYNKRQW634B6RLBRXRJN4CQJA6G": null,
"YVHEMU6OLF3FI2MTMZ25QKT5F2OUO3H6CX4WRNEXVH4BO3WZ": null,
"3VJOBPUJI5DUFHNRM456UWSAHIZYXICY7ZFYMECCUHDTG444": null,
"BXLYOEBYW7R4MWPNTOZ2ZJPDDXBHV7JMH75NCD26VGS2VRH7": null,
"GCZOZTTLMHTAKVUQ4TSDOOPHEGK6PH4JQ3ULKZCUIEDW2HLX": null,
"TE6B4JOPAY2CEQ46KJV7N6MY7OAI4VA3UBBXGPOELN7KY5T7": null,
"62BPAKDHZ7ZRJOMVZ2SX2WAKFQATUQLKDQ7YGACJPL2NP4UR": null,
"6U3MTBST24MIPS3HSZJPTBSZJ54T63GMZGZQPGFBS7JGBUVX": null,
"SXBYC5BKXYT4DFNVSS4OVRYLNA5JY4TXMVTIFSCRT6Q5C265": null,
"TAMMZOCU5GDDOIRG6U53NW3UUEUGI3QWW6YY6GWNE7WIHRNE": null,
"O37BSKPNGDUUN24XFSCR2IQHWFYUZJBPWSNC4L43MH5HV272": null,
"AZFWV3I3DANXV3HJB66QMCFJ3UTVJGS3R3IP7VROF2D5JF6U": null,
"W2BLY5MU4PA7HSENYW4MO6VHHPBXUFCFMSBWTCL5F3BIPBFT": null,
"ILFL3JG2XQGZCFBJHZFQRZMLGHZWVRBX3M5Z3HXW2A4GDMNK": null,
"O7VDC3EDG5I567RK5BKXMKA2R6XPHQQPDXQTCZP7BHKV5BK6": null,
"5ZMIJOTL3NPRKBEPS7542ICCNHHUJ2BNOZ7LSL2ICTCUFGSC": null,
"FCTKLPX7PYRSVVBH4KN46HEYLJEYSRTQ3PCUU5RY3BROUZKU": null,
"7EAMJ4C7NUA3XMDDOF3YRJA7Q2BFXFCI4J24ZXSVE7REBRFU": null,
"NOQ6OL6G7QD4ILQ3FAEMEMROBCK4OK3LX3CRMHMA6GG5YIYK": null,
"N3XXFRDRYPWGZ3LDGLIXGLLJYKEHPW4565BUUL67OLMXP554": null,
"GFHEEY3HHESZDI2YHTDDCBKGE3ZPWPXW2WE5AKNL2Y2TJCNJ": null,
"JTUQIEPPBM2QC6XBY3KP2NSDM6WUCJMORCBXNU6ZPXPOHEIW": null,
"V5VTVJ36JZDDO5FIOEZNAKYWPRQSUSTEZAKARDOHQEIFLACE": null,
"KUTOUNOS2QL4O6HF266ANCBNYUSIT66TANXCGYALCPZXULQH": null,
"CJILUW3VUBZCSO5DXTSE4HSVW5UJAJHHCSHGHADKCQE5OTBU": null,
"HD72YVUCR4IY5MG3E73UM35ARFCUIHEPIMUSQXOKLVTT2V67": null,
"ELVTZXW3ZAKR76K6IV6ZHX7WTMKPKIFRPHIU3LK67WQR6IQG": null,
"NIZTNRLCIS4JDLMOTEAKPA6B2JOE76ZBQDEUUGXENEJBYJFV": null,
"FE743ELPJYDYWTJ374PZVE4TNGZPDZWSNUO5PATNYUYBDTBJ": null,
"FIT3JHSZMFJ7N2E7BL6PHEUUHSBHU55YBIH763TGSZQTIAZY": null,
"AP7SXAQ6HW373QPCHKKA4R7NFFUCD7CFB7EERZBNXRGM2Z7R": null,
"BAW6TALQRWXK2OWS2O2UV72BKZGBZCUPR6AXKFZ7WHZXZXWX": null,
"SM3FE7H4NI76AS5YCH6O34LTROZKJ7FEP4IKL33JUBI7FWZJ": null,
"BNO2EJXVMAPFDVF34NBTPSIYKI3UPFI5G2K6KGVU35TIHOQL": null,
"INHCLRC6WPTE2U7OQRSSRGCN4B5K4BUVSGFHEKG5DWJWICOF": null,
"OEHWM7QZ3H67QC4ZQY2USKQA62NLMESA543KWPBUKV7N65TQ": null,
"BN3U5KDJP3QGOSBX3TH5R2DR6PZA5Z7BEGVG6MYRW5GWUCGT": null,
"ID7S7JEGBCI7ES3ZN7PIW5NEP67WTL5H5IB6WVRYS47EEEJ2": null,
"BG4MHZNCCLZQN563CZ2D72CPT5TASZZ6N6L4JOW2XPR7GIDQ": null,
"IAQKAEEUCCT3ZZY5LCO4AZW6F6ZNGUAF56UCD43OPOKSMBHR": null,
"LFCSYYMAFZ5IAB5O4QIEN5GERYIGTH4JH266LORQ36SB2A26": null,
"J7W62H5B42N3YUEFS5F2MECESYBUVHXSIGRMZL6ZNQMCYQMQ": null,
"J24FG5J3MUQOCDAVVCHM6BJWZW4Y7VCSC73DW32TMKIUOXPB": null,
"DGJE6OPBSV3JW45P5WC3EGUMIETVT7MIZX4EA5SCY2F3JKFL": null,
"KWTJYJJT2LMBHE6WH4LNJEHNMNJVOEQ7SLLXGJKWPGOFDYHQ": null,
"7XZDDO3CCV34UECRKEM344EDKKUFD6YDUJ7EW4OAETABTYWV": null,
"BPS2OSY2SOAFFPRY24IEXGZVBEUNVIWZYTVVZRUWT7XM727T": null,
"6GRVGHI3FMCQ5MQ4JR7ORANBXK6GMSI4XRQVE35LPH44XROO": null,
"MZHRR2BS6HII6JD3H32DPSYTTHCVXE4WSC7NUURU43Z5SD56": null,
"QJBSWHFQKABG4CALELT62JWLMW2JVZP35RDYHWHQPZYTIX5M": null,
"K2Y3YRBFB7F5PJJUFJDH5Z5NL2MYOQWGT5T5VI5SP7TVM5NW": null,
"QLONNH4NMZX5WLEJPQEWJECL5JTLTWDSK234NU5H55GA6PFG": null,
"NSSRUR3GI6B7NBK77ZQIIHOA4TEEA5UXVVMRWVLMRIP6SN3T": null,
"WB2TXRE7EPSBGACXUA4YE23M4WLMG3PVRMD2OOCIHNGQVDRY": null,
"3MDCQC5BPGFGGFDO4C4IY53NPTWZMRK5MWLJG2KX7OWVQNFO": null
}

102
bin/types/booleans.json Normal file
View File

@ -0,0 +1,102 @@
[
true,
true,
false,
false,
true,
true,
true,
false,
false,
true,
false,
false,
true,
false,
false,
false,
true,
false,
false,
true,
true,
false,
true,
true,
true,
false,
false,
false,
true,
false,
true,
false,
false,
true,
true,
true,
true,
true,
true,
false,
false,
true,
false,
false,
false,
true,
true,
false,
true,
true,
false,
true,
false,
true,
true,
true,
false,
false,
false,
true,
false,
false,
false,
true,
true,
false,
true,
true,
true,
true,
true,
true,
true,
true,
false,
false,
false,
false,
false,
true,
true,
true,
true,
true,
true,
true,
false,
false,
false,
true,
false,
false,
false,
true,
true,
true,
false,
false,
true,
false
]

102
bin/types/floats.json Normal file
View File

@ -0,0 +1,102 @@
[
135.747111636,
123.377054008,
140.527504552,
-72.299143906,
-23.851678949,
73.586193519,
-158.299382442,
177.477876032,
32.268518982,
-139.560009969,
115.203105183,
-106.025823607,
167.224138231,
103.378383732,
-97.498486285,
18.184723416,
69.137075711,
33.849002681,
-120.185228215,
-20.841408615,
-172.659492727,
-2.691464061,
22.426164066,
-98.416909437,
-31.603082708,
-85.072296561,
108.620987395,
-43.127078238,
-126.473562057,
-158.595489097,
-57.890678254,
-13.254016573,
-85.024504709,
171.663552644,
-146.495558248,
-10.606748276,
-118.786969354,
153.352057804,
-45.215545083,
37.038725288,
106.344071897,
-64.607402031,
85.148030911,
28.897784566,
39.51082061,
20.450382102,
-113.174943618,
71.60785784,
-168.202648062,
-157.338200017,
10.879588527,
-114.261694831,
-5.622927072,
-173.330830616,
-29.47002003,
-39.829034201,
50.031545162,
82.815735508,
-119.188760828,
-48.455928081,
163.964263034,
46.30378861,
-26.248889762,
-47.354615322,
155.388677633,
-166.710356904,
42.987233558,
144.275297374,
37.394383186,
-122.550388725,
177.469945914,
101.104677413,
109.429869885,
-104.919625624,
147.522756541,
-81.294703727,
122.744731363,
81.803603684,
26.321556167,
147.045441354,
147.256895816,
-174.211095908,
52.518769316,
-78.58250334,
-173.356685435,
-107.728209264,
-69.982325771,
-113.776095893,
-35.785267074,
-105.748545976,
-30.206523864,
-76.185311723,
-126.400112781,
-26.864958639,
56.840053629,
93.781553535,
-116.002949803,
-46.617140948,
176.846840093,
-144.24821335
]

102
bin/types/guids.json Normal file
View File

@ -0,0 +1,102 @@
[
"d35bf0d4-8d8f-4e17-a5c3-ad9bfd675266",
"db402774-eeb6-463b-9986-c458c44d8b5a",
"2a2e4101-b5f2-40b8-8750-e03f01661e60",
"76787cfa-f4eb-4d62-aaad-e1d588d00ad5",
"fd73894b-b500-4a7c-888c-06b5bd9cec65",
"cce1862a-cf31-4ef2-9e23-f1d23b4e6163",
"00a98bb0-2b6e-4368-8512-71c21aa87db7",
"ab9a8d69-cec7-4550-bd35-3ed678e22782",
"f18b48e1-5114-4fbe-9652-579e8d66950e",
"4efe3baa-7ac5-4d6a-a839-6b9cfe825764",
"b4aec119-5b0a-434c-b388-109816c482a5",
"e0ef0cbb-127a-4a28-9831-5741b4295275",
"d50286a5-cb7b-4c9e-be99-f214439bae8c",
"a981094c-f1ac-42ed-a9fa-86404c7210ff",
"2a34ee57-5815-4829-b77b-eeebaa8fe340",
"a0530d44-48f8-4eff-b9ea-8810c4308351",
"c6f91509-83e1-4ea1-9680-e667fbfd56ee",
"cab11402-dcdd-4454-b190-6da124947395",
"283d159c-2b18-4856-b4c7-5059252eaa15",
"146157c6-72a8-4051-9991-cb6ea6743d81",
"aef6f269-7306-4bd2-83f7-6d5605b5dc9a",
"37fe6027-d638-4017-80a9-e7b0567b278e",
"5003d731-33fb-4159-af61-d76348a44079",
"e0e06979-5f80-4713-9fe0-8a4d60dc89f8",
"7e85bdc3-0345-4cb6-9398-ccab06e79976",
"f2ebf5af-6568-4ffe-a46d-403863fd4b66",
"e0b5bb1c-b4dd-4535-9a9e-3c73f1167d46",
"c852d20b-6bcb-4b12-bd57-308296c64c5a",
"7ac3ae82-1818-49cd-a8a4-5ac77dfafd46",
"138004a9-76e2-4ad7-bd42-e74dabdbb803",
"ab25b5be-96be-45b0-b765-947b40ec36a6",
"08404734-fd57-499e-a4cf-71e9ec782ede",
"8dfdeb16-248b-4a21-bf89-2e22b11a4101",
"a0e44ef0-3b09-41e8-ad5d-ed8e6a1a2a67",
"a7981e49-188d-414a-9779-b1ad91e599d1",
"329186c0-bf27-4208-baf7-c0a0a5a2d5b7",
"cb5f3381-d33e-4b30-b1a9-f482623cad33",
"15031262-ca73-4e3c-bd0a-fcf89bdf0caf",
"6d7333d1-2e8c-4d78-bfde-5be47e70eb13",
"acaa160c-670a-4e8f-ac45-49416e77d5f9",
"228f87eb-cde4-4106-808b-2dbf3c7b6d2e",
"2ff830a3-5445-4d8e-b161-bddd30666697",
"f488bedd-ff6e-4108-b9a7-07f6da62f476",
"2e12b846-0a34-478e-adf7-a438493803e6",
"6686b8ef-7446-4d86-bd8c-df24119e3bfe",
"e474a5c5-5793-4d41-b4ab-5423acc56ef1",
"ac046573-e718-44dc-a0dc-9037eeaba6a9",
"6b0e9099-cf53-4d5a-8a71-977528628fcf",
"d51a3f22-0ff9-4087-ba9b-fcee2a2d8ade",
"bdc01286-3511-4d22-bfb8-76d01203d366",
"ca44eb84-17ff-4f27-8f1e-1bd25f4e8725",
"4e9a8c2f-be0b-4913-92d2-c801b9a50d04",
"7685d231-dadd-4041-9165-898397438ab7",
"86f0bf26-d66a-44d8-99f5-d6768addae3b",
"2ca1167c-72ba-45a0-aa42-faf033db0d0b",
"199a1182-ea55-49ff-ba51-71c29cdd0aac",
"be6a4dd2-c821-4aa0-8b83-d64d6644b5b2",
"4c5f4781-7f80-4daa-9c20-76b183000514",
"513b31bd-54fb-4d12-a427-42a7c13ff8e1",
"8e211bcb-d76c-4012-83ad-74dd7d23b687",
"44d5807e-0501-4f66-8779-e244d4fdca0a",
"db8cd555-0563-4b7b-b00c-eada300a7065",
"cb14d0c9-46cc-4797-bd3a-752b05629f07",
"4f68b3ef-ac9b-47a0-b6d7-57f398a5c6a5",
"77221aae-1bcf-471c-be45-7f31f733f9d6",
"42a7cac8-9e80-4c45-8c71-511d863c98ea",
"f9018d22-b82c-468c-bdb5-8864d5964801",
"75f4e9b8-62a2-4f21-ad8a-e19eff0419bc",
"9b7385c8-8653-4184-951c-b0ac1b36b42e",
"571018aa-ffbf-4b42-a16d-07b57a7f5f0e",
"35de4a2f-6bf1-45aa-b820-2a27ea833e44",
"0b8edb20-3bb4-4cb4-b089-31957466dbab",
"97da4778-9a7b-4140-a545-968148c81fb7",
"969f326c-8f2a-47c5-b41c-d9c2f06c9b9d",
"ae211037-8b53-4b17-bfc8-c06fc7774409",
"12c5c3c4-0bd5-45d3-bc1d-d04a3c65d3e6",
"ec02024f-ce43-4dd3-8169-a59f7baee043",
"5b6afe77-ce48-47ca-90a0-25cd10ca5ffd",
"2e3a61d4-6b8f-4d2f-ba86-878b4012efd8",
"19a88a67-a5d3-4647-898f-1cde07bce040",
"6db6f420-b5c8-48b9-bbb2-8864fe6fed65",
"5a45dbde-7b53-4f6b-b864-e3b63be3708a",
"c878321b-8a02-4239-9981-15760c2e7d15",
"4e36687f-8bf6-4b12-b496-3a8e382d067e",
"a59a63cd-43c0-4c6e-b208-6dbca86f8176",
"303308c4-2e4a-45b5-8bf3-3e66e9ad05a1",
"8b58fdf1-43a6-4c98-9547-6361b50791af",
"a3563591-72ed-42b5-8e41-bac1d76d70cf",
"38db8c78-3739-4f6e-8313-de4138082114",
"86615bea-7e73-4daf-95da-ae6b9eee1bbb",
"35d38e3e-076e-40dd-9aa8-05be2603bd59",
"9f84c62d-b454-4ba3-8c19-a01878985cdc",
"6721bbae-d765-4a06-8289-6fe46a1bf943",
"0837796f-d0dd-4e50-9b7c-1983e6cc7c48",
"021eb7d7-e869-49b9-80c3-9dd16ce2d981",
"819c56f8-e040-475d-aad5-c6d5e98b20aa",
"3a61ef02-735e-4229-937d-b3777a3f4e1f",
"79dfab84-12e6-4ec8-bfc8-460ae71e4eca",
"a106fabf-e149-476c-8053-b62388b6eb57",
"9a3900a5-bfb4-4de0-baa5-253a8bd0b634"
]

102
bin/types/integers.json Normal file
View File

@ -0,0 +1,102 @@
[
8125686,
8958709,
5976222,
1889524,
7968493,
1357486,
118415,
7081097,
4635968,
7555332,
2270233,
3428352,
8699968,
2087333,
7861337,
7554440,
2017031,
7981692,
6060687,
1877715,
3297474,
8373177,
6158629,
7853641,
3004441,
9650406,
2695251,
1180761,
4988426,
6043805,
8063373,
6103218,
2848339,
8188690,
9235573,
5949816,
6116081,
6471138,
3354531,
4787414,
9660600,
942529,
7278535,
7967399,
554292,
1436493,
267319,
2606657,
7900601,
4276634,
7996757,
8544466,
7266469,
3301373,
4005350,
6437652,
7717672,
7126292,
8588394,
2127902,
7410190,
1517806,
4583602,
3123440,
7747613,
5029464,
9834390,
3087227,
4913822,
7550487,
4518144,
5862588,
1778599,
9493290,
5588455,
3638706,
7394293,
4294719,
3837830,
6381878,
7175866,
8575492,
1415229,
1453733,
6972404,
9782571,
4234063,
7117418,
7293130,
8057071,
9345285,
7626648,
3358911,
4574537,
9371826,
7627107,
6154093,
5392367,
5398105,
6956377
]

592
bin/types/mixed.json Normal file
View File

@ -0,0 +1,592 @@
[
{
"favoriteFruit": "banana",
"greeting": "Hello, Kim! You have 10 unread messages.",
"friends": [
{
"name": "Higgins Rodriquez",
"id": 0
},
{
"name": "James Floyd",
"id": 1
},
{
"name": "Gay Stewart",
"id": 2
}
],
"range": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"tags": [
"pariatur",
"ad",
"eiusmod",
"sit",
"et",
"velit",
"culpa"
],
"longitude": -57.919246,
"latitude": -36.022812,
"registered": "Friday, March 21, 2014 9:13 PM",
"about": "Laborum nulla aliquip ullamco proident excepteur est officia ipsum. Eiusmod exercitation minim ex do labore reprehenderit aliqua minim qui excepteur reprehenderit cupidatat. Sint enim exercitation duis id consequat nisi enim magna. Commodo aliqua id ipsum sit magna enim. Veniam officia in labore fugiat veniam ea laboris ex veniam duis.\r\n",
"address": "323 Pulaski Street, Ronco, North Carolina, 7701",
"phone": "+1 (919) 438-2678",
"email": "kim.griffith@cipromox.biz",
"company": "CIPROMOX",
"name": {
"last": "Griffith",
"first": "Kim"
},
"eyeColor": "green",
"age": 26,
"picture": "http://placehold.it/32x32",
"balance": "$1,283.55",
"isActive": false,
"guid": "10ab0392-c5e2-48a3-9473-aa725bad892d",
"index": 0,
"_id": "551b91198238a0bcf9a41133"
},
{
"favoriteFruit": "banana",
"greeting": "Hello, Skinner! You have 9 unread messages.",
"friends": [
{
"name": "Rhonda Justice",
"id": 0
},
{
"name": "Audra Castaneda",
"id": 1
},
{
"name": "Vicky Chavez",
"id": 2
}
],
"range": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"tags": [
"dolore",
"enim",
"sit",
"non",
"exercitation",
"fugiat",
"adipisicing"
],
"longitude": -60.291407,
"latitude": -84.619318,
"registered": "Friday, February 7, 2014 3:17 AM",
"about": "Consectetur eiusmod laboris dolore est ullamco nulla in velit quis esse Lorem. Amet aliqua sunt aute occaecat veniam officia in duis proident aliqua cupidatat mollit. Sint eu qui anim duis ut anim duis eu cillum. Cillum nostrud adipisicing tempor Lorem commodo sit in ad qui non et irure qui. Labore eu aliquip id duis eiusmod veniam.\r\n",
"address": "347 Autumn Avenue, Fidelis, Puerto Rico, 543",
"phone": "+1 (889) 457-2319",
"email": "skinner.maddox@moltonic.co.uk",
"company": "MOLTONIC",
"name": {
"last": "Maddox",
"first": "Skinner"
},
"eyeColor": "green",
"age": 22,
"picture": "http://placehold.it/32x32",
"balance": "$3,553.10",
"isActive": false,
"guid": "cfbc2fb6-2641-4388-b06d-ec0212cfac1e",
"index": 1,
"_id": "551b91197e0abe92d6642700"
},
{
"favoriteFruit": "strawberry",
"greeting": "Hello, Reynolds! You have 5 unread messages.",
"friends": [
{
"name": "Brady Valdez",
"id": 0
},
{
"name": "Boyer Golden",
"id": 1
},
{
"name": "Gladys Knapp",
"id": 2
}
],
"range": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"tags": [
"commodo",
"eiusmod",
"cupidatat",
"et",
"occaecat",
"proident",
"Lorem"
],
"longitude": 140.866287,
"latitude": 1.401032,
"registered": "Monday, October 20, 2014 8:01 AM",
"about": "Deserunt elit consequat ea dolor pariatur aute consectetur et nulla ipsum ad. Laboris occaecat ipsum ad duis et esse ea ut voluptate. Ex magna consequat pariatur amet. Quis excepteur non mollit dolore cillum dolor ex esse veniam esse deserunt non occaecat veniam. Sit amet proident proident amet. Nisi est id ut ut adipisicing esse fugiat non dolor aute.\r\n",
"address": "872 Montague Terrace, Haena, Montana, 3106",
"phone": "+1 (974) 410-2655",
"email": "reynolds.sanford@combot.biz",
"company": "COMBOT",
"name": {
"last": "Sanford",
"first": "Reynolds"
},
"eyeColor": "green",
"age": 21,
"picture": "http://placehold.it/32x32",
"balance": "$3,664.47",
"isActive": true,
"guid": "f9933a9c-c41a-412f-a18d-e727c569870b",
"index": 2,
"_id": "551b91197f170b65413a06e3"
},
{
"favoriteFruit": "banana",
"greeting": "Hello, Neva! You have 7 unread messages.",
"friends": [
{
"name": "Clara Cotton",
"id": 0
},
{
"name": "Ray Gates",
"id": 1
},
{
"name": "Jacobs Reese",
"id": 2
}
],
"range": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"tags": [
"magna",
"labore",
"incididunt",
"velit",
"ea",
"et",
"eiusmod"
],
"longitude": -133.058479,
"latitude": 87.803677,
"registered": "Friday, May 9, 2014 5:41 PM",
"about": "Do duis occaecat ut officia occaecat officia nostrud reprehenderit ex excepteur aute anim in reprehenderit. Cupidatat nulla eiusmod nulla non minim veniam aute nulla deserunt adipisicing consectetur veniam. Sit consequat ex laboris aliqua labore consectetur tempor proident consequat est. Fugiat quis esse culpa aliquip. Excepteur laborum aliquip sunt eu cupidatat magna eiusmod amet nisi labore aliquip. Ut consectetur esse aliquip exercitation nulla ex occaecat elit do ex eiusmod deserunt. Ex eu voluptate minim deserunt fugiat minim est occaecat ad Lorem nisi.\r\n",
"address": "480 Eagle Street, Fostoria, Oklahoma, 2614",
"phone": "+1 (983) 439-3000",
"email": "neva.barker@pushcart.us",
"company": "PUSHCART",
"name": {
"last": "Barker",
"first": "Neva"
},
"eyeColor": "brown",
"age": 36,
"picture": "http://placehold.it/32x32",
"balance": "$3,182.24",
"isActive": true,
"guid": "52489849-78e1-4b27-8b86-e3e5ab2b7dc8",
"index": 3,
"_id": "551b9119a13061c083c878d5"
},
{
"favoriteFruit": "banana",
"greeting": "Hello, Rodgers! You have 6 unread messages.",
"friends": [
{
"name": "Marguerite Conway",
"id": 0
},
{
"name": "Margarita Cunningham",
"id": 1
},
{
"name": "Carmela Gallagher",
"id": 2
}
],
"range": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"tags": [
"ipsum",
"magna",
"amet",
"elit",
"sit",
"occaecat",
"elit"
],
"longitude": -125.436981,
"latitude": 19.868524,
"registered": "Tuesday, July 8, 2014 8:09 PM",
"about": "In cillum esse tempor do magna id ad excepteur ex nostrud mollit deserunt aliqua. Minim aliqua commodo commodo consectetur exercitation nulla nisi dolore aliqua in. Incididunt deserunt mollit nostrud excepteur. Ipsum fugiat anim deserunt Lorem aliquip nisi consequat eu minim in ex duis.\r\n",
"address": "989 Varanda Place, Duryea, Palau, 3972",
"phone": "+1 (968) 578-2974",
"email": "rodgers.conner@frenex.net",
"company": "FRENEX",
"name": {
"last": "Conner",
"first": "Rodgers"
},
"eyeColor": "blue",
"age": 23,
"picture": "http://placehold.it/32x32",
"balance": "$1,665.17",
"isActive": true,
"guid": "ed3b2374-5afe-4fca-9325-8a7bbc9f81a0",
"index": 4,
"_id": "551b91197bcedb1b56a241ce"
},
{
"favoriteFruit": "strawberry",
"greeting": "Hello, Mari! You have 10 unread messages.",
"friends": [
{
"name": "Irwin Boyd",
"id": 0
},
{
"name": "Dejesus Flores",
"id": 1
},
{
"name": "Lane Mcmahon",
"id": 2
}
],
"range": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"tags": [
"esse",
"aliquip",
"excepteur",
"dolor",
"ex",
"commodo",
"anim"
],
"longitude": -17.038176,
"latitude": 17.154663,
"registered": "Sunday, April 6, 2014 4:46 AM",
"about": "Excepteur veniam occaecat sint nulla magna in in officia elit. Eiusmod qui dolor fugiat tempor in minim esse officia minim consequat. Lorem ullamco labore proident ipsum id pariatur fugiat consectetur anim cupidatat qui proident non ipsum.\r\n",
"address": "563 Hendrickson Street, Westwood, South Dakota, 4959",
"phone": "+1 (980) 434-3976",
"email": "mari.fleming@beadzza.org",
"company": "BEADZZA",
"name": {
"last": "Fleming",
"first": "Mari"
},
"eyeColor": "blue",
"age": 21,
"picture": "http://placehold.it/32x32",
"balance": "$1,948.04",
"isActive": true,
"guid": "6bd02166-3b1f-4ed8-84c9-ed96cbf12abc",
"index": 5,
"_id": "551b9119b359ff6d24846f77"
},
{
"favoriteFruit": "strawberry",
"greeting": "Hello, Maxine! You have 7 unread messages.",
"friends": [
{
"name": "Sullivan Stark",
"id": 0
},
{
"name": "Underwood Mclaughlin",
"id": 1
},
{
"name": "Kristy Carlson",
"id": 2
}
],
"range": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"tags": [
"commodo",
"ipsum",
"quis",
"non",
"est",
"mollit",
"exercitation"
],
"longitude": -105.40635,
"latitude": 37.197993,
"registered": "Tuesday, January 20, 2015 12:30 AM",
"about": "Proident ullamco Lorem est consequat consectetur non eiusmod esse nostrud pariatur eiusmod enim exercitation eiusmod. Consequat duis elit elit minim ullamco et dolor eu minim do tempor esse consequat excepteur. Mollit dolor do voluptate nostrud quis anim cillum velit tempor eiusmod adipisicing tempor do culpa. Eu magna dolor sit amet nisi do laborum dolore nisi. Deserunt ipsum et deserunt non nisi.\r\n",
"address": "252 Boulevard Court, Brenton, Tennessee, 9444",
"phone": "+1 (950) 466-3377",
"email": "maxine.moreno@zentia.tv",
"company": "ZENTIA",
"name": {
"last": "Moreno",
"first": "Maxine"
},
"eyeColor": "brown",
"age": 24,
"picture": "http://placehold.it/32x32",
"balance": "$1,200.24",
"isActive": false,
"guid": "ce307a37-ca1f-43f5-b637-dca2605712be",
"index": 6,
"_id": "551b91195a6164b2e35f6dc8"
},
{
"favoriteFruit": "strawberry",
"greeting": "Hello, Helga! You have 5 unread messages.",
"friends": [
{
"name": "Alicia Vance",
"id": 0
},
{
"name": "Vinson Phelps",
"id": 1
},
{
"name": "Francisca Kelley",
"id": 2
}
],
"range": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"tags": [
"nostrud",
"eiusmod",
"dolore",
"officia",
"sint",
"non",
"qui"
],
"longitude": -7.275151,
"latitude": 75.54202,
"registered": "Wednesday, October 1, 2014 6:35 PM",
"about": "Quis duis ullamco velit qui. Consectetur non adipisicing id magna anim. Deserunt est officia qui esse. Et do pariatur incididunt anim ad mollit non. Et eiusmod sunt fugiat elit mollit ad excepteur anim nisi laboris eiusmod aliquip aliquip.\r\n",
"address": "981 Bush Street, Beaulieu, Vermont, 3775",
"phone": "+1 (956) 506-3807",
"email": "helga.burch@synkgen.name",
"company": "SYNKGEN",
"name": {
"last": "Burch",
"first": "Helga"
},
"eyeColor": "blue",
"age": 22,
"picture": "http://placehold.it/32x32",
"balance": "$3,827.89",
"isActive": false,
"guid": "ff5dfea0-1052-4ef2-8b66-4dc1aad0a4fb",
"index": 7,
"_id": "551b911946be8358ae40e90e"
},
{
"favoriteFruit": "banana",
"greeting": "Hello, Shaw! You have 5 unread messages.",
"friends": [
{
"name": "Christian Cardenas",
"id": 0
},
{
"name": "Cohen Pennington",
"id": 1
},
{
"name": "Mary Lindsay",
"id": 2
}
],
"range": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"tags": [
"occaecat",
"ut",
"occaecat",
"magna",
"exercitation",
"incididunt",
"irure"
],
"longitude": -89.102972,
"latitude": 89.489596,
"registered": "Thursday, August 21, 2014 5:00 PM",
"about": "Amet cupidatat quis velit aute Lorem consequat pariatur mollit deserunt et sint culpa excepteur duis. Enim proident duis qui ex tempor sunt nostrud occaecat. Officia sit veniam mollit eiusmod minim do aute eiusmod fugiat qui anim adipisicing in laboris. Do tempor reprehenderit sunt laborum esse irure dolor ad consectetur aute sit id ipsum. Commodo et voluptate anim consequat do. Minim laborum ad veniam ad minim incididunt excepteur excepteur aliqua.\r\n",
"address": "237 Pierrepont Street, Herbster, New York, 3490",
"phone": "+1 (976) 455-2880",
"email": "shaw.zamora@shadease.me",
"company": "SHADEASE",
"name": {
"last": "Zamora",
"first": "Shaw"
},
"eyeColor": "blue",
"age": 38,
"picture": "http://placehold.it/32x32",
"balance": "$3,440.82",
"isActive": false,
"guid": "ac5fdb0e-e1fb-427e-881d-da461be0d1ca",
"index": 8,
"_id": "551b9119af0077bc28a2de25"
},
{
"favoriteFruit": "apple",
"greeting": "Hello, Melissa! You have 5 unread messages.",
"friends": [
{
"name": "Marion Villarreal",
"id": 0
},
{
"name": "Kate Rose",
"id": 1
},
{
"name": "Hines Simon",
"id": 2
}
],
"range": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"tags": [
"amet",
"veniam",
"mollit",
"ad",
"cupidatat",
"deserunt",
"Lorem"
],
"longitude": -52.735052,
"latitude": 16.258838,
"registered": "Wednesday, April 16, 2014 7:56 PM",
"about": "Aute ut culpa eiusmod tempor duis dolor tempor incididunt. Nisi non proident excepteur eiusmod incididunt nisi minim irure sit. In veniam commodo deserunt proident reprehenderit et consectetur ullamco quis nulla cupidatat.\r\n",
"address": "642 Halsey Street, Blandburg, Kansas, 6761",
"phone": "+1 (941) 539-3851",
"email": "melissa.vaughn@memora.io",
"company": "MEMORA",
"name": {
"last": "Vaughn",
"first": "Melissa"
},
"eyeColor": "brown",
"age": 24,
"picture": "http://placehold.it/32x32",
"balance": "$2,399.44",
"isActive": true,
"guid": "1769f022-a7f1-4a69-bf4c-f5a5ebeab2d1",
"index": 9,
"_id": "551b9119b607c09c7ffc3b8a"
}
]

102
bin/types/nulls.json Normal file
View File

@ -0,0 +1,102 @@
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
]

102
bin/types/paragraphs.json Normal file
View File

@ -0,0 +1,102 @@
[
"Commodo ullamco cupidatat nisi sit proident ex. Cillum pariatur occaecat in officia do commodo nisi cillum tempor minim. Ad dolor ut et aliquip fugiat eu officia cupidatat occaecat consectetur eiusmod veniam enim officia.\r\n",
"Adipisicing cillum laborum nisi irure. Cillum dolor proident duis nulla qui mollit dolore reprehenderit mollit. Irure nulla dolor ipsum irure nulla quis laboris do.\r\n",
"Est adipisicing consectetur incididunt in. Occaecat ea magna ex consequat irure sit laborum cillum officia magna sunt do exercitation aliquip. Laboris id aute in dolore reprehenderit voluptate non deserunt laborum.\r\n",
"Consectetur eu aute est est occaecat adipisicing sint enim dolor eu. Tempor amet id non mollit eu consectetur cillum duis. Eu labore velit nulla ipsum commodo consequat aliquip. Cupidatat commodo dolore mollit enim sit excepteur nisi duis laboris deserunt esse.\r\n",
"Incididunt ullamco est fugiat enim fugiat. Do sit mollit anim ad excepteur eu laboris exercitation officia labore nulla ut. Voluptate non voluptate cillum sit et voluptate anim duis velit consequat aliquip dolor. Elit et et esse laboris consectetur officia eiusmod aliquip nisi est. Qui labore dolore ad dolor.\r\n",
"Anim adipisicing est irure proident sit officia ullamco voluptate sunt consectetur duis mollit excepteur veniam. Nostrud ut duis aute exercitation officia et quis elit commodo elit tempor aute aliquip enim. Est officia non cillum consequat voluptate ipsum sit voluptate nulla id.\r\n",
"Ipsum enim consectetur aliquip nulla commodo ut ex aliqua elit duis do. Officia et sunt aliqua dolor minim voluptate veniam esse elit enim. Adipisicing reprehenderit duis ex magna non in fugiat sunt ipsum nostrud fugiat aliquip. Labore voluptate id officia voluptate eu. Magna do nostrud excepteur sunt aliqua adipisicing qui.\r\n",
"Est occaecat non non cupidatat laborum qui. Veniam sit est voluptate labore sit irure consectetur fugiat. Anim enim enim fugiat exercitation anim ad proident esse in aliqua. Laboris ut aute culpa ullamco.\r\n",
"Sit et aliquip cupidatat deserunt eiusmod sint aliquip occaecat nostrud aliqua elit commodo ut magna. Amet sit est deserunt id duis in officia pariatur cupidatat ex. Mollit duis est consequat nulla aute velit ipsum sit consectetur pariatur ut non ex ipsum. Tempor esse velit pariatur reprehenderit et nostrud commodo laborum mollit labore.\r\n",
"Aliquip irure quis esse aliquip. Ex non deserunt culpa aliqua ad anim occaecat ad. Lorem consectetur mollit eu consectetur est non nisi non ipsum. Qui veniam ullamco officia est ut excepteur. Nulla elit dolore cupidatat aliqua enim Lorem elit consequat eiusmod non aliqua eu in. Pariatur in culpa labore sint ipsum consectetur occaecat ad ex ipsum laboris aliquip officia. Non officia eiusmod nisi officia id id laboris deserunt sunt enim magna mollit sit.\r\n",
"Mollit velit laboris laborum nulla aliquip consequat Lorem non incididunt irure. Eu voluptate sint do consectetur tempor sit Lorem in. Laborum eiusmod nisi Lorem ipsum dolore do aute laborum occaecat aute sunt. Sit laborum in ea do ipsum officia irure cillum irure nisi laboris. Ad anim deserunt excepteur ea veniam eiusmod culpa velit veniam. Commodo incididunt ea Lorem eu enim esse nisi incididunt mollit.\r\n",
"Velit proident sunt aute dolore reprehenderit culpa. Pariatur reprehenderit commodo ad ea voluptate anim nulla ipsum eu irure fugiat aliqua et. Adipisicing incididunt anim excepteur voluptate minim qui culpa. Sunt veniam enim reprehenderit magna magna. Sit ad amet deserunt ut aute dolore ad minim.\r\n",
"Esse ullamco sunt mollit mollit. Eu enim dolore laboris cupidatat. Cupidatat adipisicing non aute exercitation fugiat. Non ut cillum labore fugiat aliquip ex duis quis consectetur ut nisi Lorem amet qui. Proident veniam amet qui reprehenderit duis qui. Nisi culpa sit occaecat ullamco occaecat laborum fugiat ut. Non duis deserunt culpa duis.\r\n",
"Id ipsum eiusmod laboris non est ipsum deserunt labore duis reprehenderit deserunt. Sint tempor fugiat eiusmod nostrud in ut laborum esse in nostrud sit deserunt nostrud reprehenderit. Cupidatat aliqua qui anim consequat eu quis consequat consequat elit ipsum pariatur. Cupidatat in dolore velit quis. Exercitation cillum ullamco ex consectetur commodo tempor incididunt exercitation labore ad dolore. Minim incididunt consequat adipisicing esse eu eu voluptate.\r\n",
"Anim sint eiusmod nisi anim do deserunt voluptate ut cillum eiusmod esse ex reprehenderit laborum. Dolore nulla excepteur duis excepteur. Magna nisi nostrud duis non commodo velit esse ipsum Lorem incididunt. Nulla enim consequat ad aliqua. Incididunt irure culpa nostrud ea aute ex sit non ad esse.\r\n",
"Ullamco nostrud cupidatat adipisicing anim fugiat mollit eu. Et ut eu in nulla consequat. Sunt do pariatur culpa non est.\r\n",
"Pariatur incididunt reprehenderit non qui excepteur cillum exercitation nisi occaecat ad. Lorem aliquip laborum commodo reprehenderit sint. Laboris qui ut veniam magna quis et et ullamco voluptate. Tempor reprehenderit deserunt consequat nisi. Esse duis sint in tempor. Amet aute cupidatat in sint et.\r\n",
"Est officia nisi dolore consequat irure et excepteur. Sit qui elit tempor magna qui cillum anim amet proident exercitation proident. Eu cupidatat laborum consectetur duis ullamco irure nulla. Adipisicing culpa non reprehenderit anim aute.\r\n",
"Eu est laborum culpa velit dolore non sunt. Tempor magna veniam ea sit non qui Lorem qui exercitation aliqua aliqua et excepteur eiusmod. Culpa aute anim proident culpa adipisicing duis tempor elit aliquip elit nulla laboris esse dolore. Sit adipisicing non dolor eiusmod occaecat cupidatat.\r\n",
"Culpa velit eu esse sunt. Laborum irure aliqua reprehenderit velit ipsum fugiat officia dolor ut aute officia deserunt. Ipsum sit quis fugiat nostrud aliqua cupidatat ex pariatur et. Cillum proident est irure nisi dolor aliqua deserunt esse occaecat velit dolor.\r\n",
"Exercitation nulla officia sit eiusmod cillum eu incididunt officia exercitation qui Lorem deserunt. Voluptate Lorem minim commodo laborum esse in duis excepteur do duis aliquip nisi voluptate consectetur. Amet tempor officia enim ex esse minim reprehenderit.\r\n",
"Laboris sint deserunt ad aute incididunt. Anim officia sunt elit qui laborum labore commodo irure non. Mollit adipisicing ullamco do aute nulla eu laborum et quis sint aute adipisicing amet. Aliqua officia irure nostrud duis ex.\r\n",
"Eiusmod ipsum aliqua reprehenderit esse est non aute id veniam eiusmod. Elit consequat ad sit tempor elit eu incididunt quis irure ad. Eu incididunt veniam consequat Lorem nostrud cillum officia ea consequat ad cillum. Non nisi irure cupidatat incididunt pariatur incididunt. Duis velit officia ad cillum qui. Aliquip consequat sint aute nisi cillum. Officia commodo nisi incididunt laborum nisi voluptate aliquip Lorem cupidatat anim consequat sit laboris.\r\n",
"Veniam cupidatat et incididunt mollit do ex voluptate veniam nostrud labore esse. Eiusmod irure sint fugiat esse. Aute irure consectetur ut mollit nulla sint esse. Lorem ut quis ex proident nostrud mollit nostrud ea duis duis in magna anim consectetur.\r\n",
"Irure culpa esse qui do dolor fugiat veniam ad. Elit commodo aute elit magna incididunt tempor pariatur velit irure pariatur cillum et ea ad. Ad consequat ea et ad minim ut sunt qui commodo voluptate. Laboris est aliquip anim reprehenderit eu officia et exercitation. Occaecat laboris cupidatat Lorem ullamco in nostrud commodo ipsum in quis esse ex.\r\n",
"Incididunt officia quis voluptate eiusmod esse nisi ipsum quis commodo. Eiusmod dolore tempor occaecat sit exercitation aliqua minim consequat minim mollit qui ad nisi. Aute quis irure adipisicing veniam nisi nisi velit deserunt incididunt anim nostrud.\r\n",
"Voluptate exercitation exercitation id minim excepteur excepteur mollit. Fugiat aute proident nulla ullamco ea. Nisi ea culpa duis dolore veniam anim tempor officia in dolore exercitation exercitation. Dolore quis cillum adipisicing sunt do nulla esse proident ad sint.\r\n",
"Laborum ut mollit sint commodo nulla laborum deserunt Lorem magna commodo mollit tempor deserunt ut. Qui aliquip commodo ea id. Consectetur dolor fugiat dolor excepteur eiusmod. Eu excepteur ex aute ex ex elit ex esse officia cillum exercitation. Duis ut labore ea nostrud excepteur. Reprehenderit labore aute sunt nisi quis Lorem officia. Ad aliquip cupidatat voluptate exercitation voluptate ad irure magna quis.\r\n",
"Tempor velit veniam sit labore elit minim do elit cillum eiusmod sunt excepteur nisi. Aliquip est deserunt excepteur duis fugiat incididunt veniam fugiat. Pariatur sit irure labore et minim non. Cillum quis aute anim sint laboris laboris ullamco exercitation nostrud. Nulla pariatur id laborum minim nisi est adipisicing irure.\r\n",
"Irure exercitation laboris nostrud in do consectetur ad. Magna aliqua Lorem culpa exercitation sint do culpa incididunt mollit eu exercitation. Elit tempor Lorem dolore enim deserunt. Anim et ullamco sint ullamco mollit cillum officia et. Proident incididunt laboris aliquip laborum sint veniam deserunt eu consequat deserunt voluptate laboris. Anim Lorem non laborum exercitation voluptate. Cupidatat reprehenderit culpa Lorem fugiat enim minim consectetur tempor quis ad reprehenderit laboris irure.\r\n",
"Deserunt elit mollit nostrud occaecat labore reprehenderit laboris ex. Esse reprehenderit adipisicing cillum minim in esse aliquip excepteur ex et nisi cillum quis. Cillum labore ut ex sunt. Occaecat proident et mollit magna consequat irure esse. Dolor do enim esse nisi ad.\r\n",
"Pariatur est anim cillum minim elit magna adipisicing quis tempor proident nisi laboris incididunt cupidatat. Nulla est adipisicing sit adipisicing id nostrud amet qui consequat eiusmod tempor voluptate ad. Adipisicing non magna sit occaecat magna mollit ad ex nulla velit ea pariatur. Irure labore ad ea exercitation ex cillum.\r\n",
"Lorem fugiat eu eu cillum nulla tempor sint. Lorem id officia nulla velit labore ut duis ad tempor non. Excepteur quis aute adipisicing nisi nisi consectetur aliquip enim Lorem id ullamco cillum sint voluptate. Qui aliquip incididunt tempor aliqua voluptate labore reprehenderit. Veniam eiusmod elit occaecat voluptate tempor culpa consectetur ea ut exercitation eiusmod exercitation qui.\r\n",
"Aliqua esse pariatur nulla veniam velit ea. Aliquip consectetur tempor ex magna sit aliquip exercitation veniam. Dolor ullamco minim commodo pariatur. Et amet reprehenderit dolore proident elit tempor eiusmod eu incididunt enim ullamco. Adipisicing id officia incididunt esse dolor sunt cupidatat do deserunt mollit do non. Magna ut officia fugiat adipisicing quis ea cillum laborum dolore ad nostrud magna minim est. Dolor voluptate officia proident enim ea deserunt eu voluptate dolore proident laborum officia ea.\r\n",
"Culpa aute consequat esse fugiat cupidatat minim voluptate voluptate eiusmod irure anim elit. Do eiusmod culpa laboris consequat incididunt minim nostrud eiusmod commodo velit ea ullamco proident. Culpa pariatur magna ut mollit nisi. Ea officia do magna deserunt minim nisi tempor ea deserunt veniam cillum exercitation esse.\r\n",
"Anim ullamco nostrud commodo Lorem. Do sunt laborum exercitation proident proident magna. Lorem officia laborum laborum dolor sunt duis commodo Lorem. Officia aute adipisicing ea cupidatat ea dolore. Aliquip adipisicing pariatur consectetur aliqua sit amet officia reprehenderit laborum culpa. Occaecat Lorem eu nisi do Lorem occaecat enim eiusmod laboris id quis. Ad mollit adipisicing sunt adipisicing esse.\r\n",
"Laborum quis sit adipisicing cupidatat. Veniam Lorem eiusmod esse esse sint nisi labore elit et. Deserunt aliqua mollit ut commodo aliqua non incididunt ipsum reprehenderit consectetur. Eiusmod nulla minim laboris Lorem ea Lorem aute tempor pariatur in sit. Incididunt culpa ut do irure amet irure cupidatat est anim anim culpa occaecat. Est velit consectetur eiusmod veniam reprehenderit officia sunt occaecat eiusmod ut sunt occaecat amet.\r\n",
"Elit minim aute fugiat nulla ex quis. Labore fugiat sint nostrud amet quis culpa excepteur in. Consectetur exercitation cupidatat laborum sit. Aute nisi eu aliqua est deserunt eiusmod commodo dolor id. Mollit laborum esse sint ipsum voluptate reprehenderit velit et. Veniam aliquip enim in veniam Lorem voluptate quis deserunt consequat qui commodo ut excepteur aute.\r\n",
"Dolore deserunt veniam aute nisi labore sunt et voluptate irure nisi anim ea. Magna nisi quis anim mollit nisi est dolor do ex aliquip elit aliquip ipsum minim. Dolore est officia nostrud eiusmod ex laborum ea amet est. Officia culpa non est et tempor consectetur exercitation tempor eiusmod enim. Ea tempor laboris qui amet ex nisi culpa dolore consectetur incididunt sunt sunt. Lorem aliquip incididunt magna do et ullamco ex elit aliqua eiusmod qui. Commodo amet dolor sint incididunt ex veniam non Lorem fugiat.\r\n",
"Officia culpa enim voluptate dolore commodo. Minim commodo aliqua minim ex sint excepteur cupidatat adipisicing eu irure. Anim magna deserunt anim Lorem non.\r\n",
"Cupidatat aliquip nulla excepteur sunt cupidatat cupidatat laborum cupidatat exercitation. Laboris minim ex cupidatat culpa elit. Amet enim reprehenderit aliqua laborum est tempor exercitation cupidatat ex dolore do. Do incididunt labore fugiat commodo consectetur nisi incididunt irure sit culpa sit. Elit aute occaecat qui excepteur velit proident cillum qui aliqua ex do ex. Dolore irure ex excepteur veniam id proident mollit Lorem.\r\n",
"Ad commodo cillum duis deserunt elit officia consectetur veniam eiusmod. Reprehenderit et veniam ad commodo reprehenderit magna elit laboris sunt non quis. Adipisicing dolor aute proident ea magna sunt et proident in consectetur.\r\n",
"Veniam exercitation esse esse veniam est nisi. Minim velit incididunt sint aute dolor anim. Fugiat cupidatat id ad nisi in voluptate dolor culpa eiusmod magna eiusmod amet id. Duis aliquip labore et ex amet amet aliquip laborum eiusmod ipsum. Quis qui ut duis duis. Minim in voluptate reprehenderit aliqua.\r\n",
"Elit ut pariatur dolor veniam ipsum consequat. Voluptate Lorem mollit et esse dolore mollit Lorem ad. Elit nostrud eu Lorem labore mollit minim cupidatat officia quis minim dolore incididunt. In cillum aute cillum ut.\r\n",
"Commodo laborum deserunt ut cupidatat pariatur ullamco in esse anim exercitation cillum duis. Consectetur incididunt sit esse Lorem in aute. Eiusmod mollit Lorem consequat minim reprehenderit laborum enim excepteur irure nisi elit. Laborum esse proident aute aute proident adipisicing laborum. Pariatur tempor duis incididunt qui velit pariatur ut officia ea mollit labore dolore. Cillum pariatur minim ullamco sunt incididunt culpa id ullamco exercitation consectetur. Ea exercitation consequat reprehenderit ut ullamco velit eu ad velit magna excepteur eiusmod.\r\n",
"Eu deserunt magna laboris laborum laborum in consequat dolore. Officia proident consectetur proident do occaecat minim pariatur officia ipsum sit non velit officia cillum. Laborum excepteur labore eu minim eiusmod. Sit anim dolore cillum ad do minim culpa sit est ad.\r\n",
"Cupidatat dolor nostrud Lorem sint consequat quis. Quis labore sint incididunt officia tempor. Fugiat nostrud in elit reprehenderit dolor. Nisi sit enim officia minim est adipisicing nulla aute labore nulla nostrud cupidatat est. Deserunt dolore qui irure Lorem esse voluptate velit qui nostrud.\r\n",
"Fugiat Lorem amet nulla nisi qui amet laboris enim cillum. Dolore occaecat exercitation id labore velit do commodo ut cupidatat laborum velit fugiat mollit. Ut et aliqua pariatur occaecat. Lorem occaecat dolore quis esse enim cupidatat exercitation ut tempor sit laboris fugiat adipisicing. Est tempor ex irure consectetur ipsum magna labore. Lorem non quis qui minim nisi magna amet aliquip ex cillum fugiat tempor.\r\n",
"Aliquip eiusmod laborum ipsum deserunt velit esse do magna excepteur consectetur exercitation sit. Minim ullamco reprehenderit commodo nostrud exercitation id irure ex qui ullamco sit esse laboris. Nulla cillum non minim qui cillum nisi aute proident. Dolor anim culpa elit quis excepteur aliqua eiusmod. Elit ea est excepteur consectetur sunt eiusmod enim id commodo irure amet et pariatur laboris. Voluptate magna ad magna dolore cillum cillum irure laboris ipsum officia id Lorem veniam.\r\n",
"Esse sunt elit est aliquip cupidatat commodo deserunt. Deserunt pariatur ipsum qui ad esse esse magna qui cillum laborum. Exercitation veniam pariatur elit amet enim.\r\n",
"Esse quis in id elit nulla occaecat incididunt. Et amet Lorem mollit in veniam do. Velit mollit Lorem consequat commodo Lorem aliquip cupidatat. Minim consequat nostrud nulla in nostrud.\r\n",
"Cillum nulla et eu est nostrud quis elit cupidatat dolor enim excepteur exercitation nisi voluptate. Nulla dolore non ex velit et qui tempor proident id deserunt nisi eu. Tempor ad Lorem ipsum reprehenderit in anim. Anim dolore ullamco enim deserunt quis ex id exercitation velit. Magna exercitation fugiat mollit pariatur ipsum ex consectetur nostrud. Id dolore officia nostrud excepteur laborum. Magna incididunt elit ipsum pariatur adipisicing enim duis est qui commodo velit aute.\r\n",
"Quis esse ex qui nisi dolor. Ullamco laborum dolor esse laboris eiusmod ea magna laboris ea esse ut. Dolore ipsum pariatur veniam sint mollit. Lorem ea proident fugiat ullamco ut nisi culpa eu exercitation exercitation aliquip veniam laborum consectetur.\r\n",
"Pariatur veniam laboris sit aliquip pariatur tempor aute sunt id et ut. Laboris excepteur eiusmod nisi qui quis elit enim ut cupidatat. Et et laborum in fugiat veniam consectetur ipsum laboris duis excepteur ullamco aliqua dolor Lorem. Aliqua ex amet sint anim cupidatat nisi ipsum anim et sunt deserunt. Occaecat culpa ut tempor cillum pariatur ex tempor.\r\n",
"Dolor deserunt eiusmod magna do officia voluptate excepteur est cupidatat. Veniam qui cupidatat amet anim est qui consectetur sit commodo commodo ea ad. Enim ad adipisicing qui nostrud. Non nulla esse ullamco nulla et ex.\r\n",
"Id ullamco ea consectetur est incididunt deserunt et esse. Elit nostrud voluptate eiusmod ut. Excepteur adipisicing qui cupidatat consequat labore id. Qui dolor aliqua do dolore do cupidatat labore ex consectetur ea sit cillum. Sint veniam eiusmod in consectetur consequat fugiat et mollit ut fugiat esse dolor adipisicing.\r\n",
"Ea magna proident labore duis pariatur. Esse cillum aliquip dolor duis fugiat ea ex officia ea irure. Sint elit nisi pariatur sunt nostrud exercitation ullamco culpa magna do.\r\n",
"Minim aliqua voluptate dolor consequat sint tempor deserunt amet magna excepteur. Irure do voluptate magna velit. Nostrud in reprehenderit magna officia nostrud. Cupidatat nulla irure laboris non fugiat ex ex est cupidatat excepteur officia aute velit duis. Sit voluptate id ea exercitation deserunt culpa voluptate nostrud est adipisicing incididunt. Amet proident laborum commodo magna ipsum quis.\r\n",
"Ipsum consectetur consectetur excepteur tempor eiusmod ea fugiat aute velit magna in officia sunt. Sit ut sunt dolore cupidatat dolor adipisicing. Veniam nisi adipisicing esse reprehenderit amet aliqua voluptate ex commodo occaecat est voluptate mollit sunt. Pariatur aliqua qui qui in dolor. Fugiat reprehenderit sit nostrud do sint esse. Tempor sit irure adipisicing ea pariatur duis est sit est incididunt laboris quis do. Et voluptate anim minim aliquip excepteur consequat nisi anim pariatur aliquip ut ipsum dolor magna.\r\n",
"Cillum sit labore excepteur magna id aliqua exercitation consequat laborum Lorem id pariatur nostrud. Lorem qui est labore sint cupidatat sint excepteur nulla in eu aliqua et. Adipisicing velit do enim occaecat laboris quis excepteur ipsum dolor occaecat Lorem dolore id exercitation.\r\n",
"Incididunt in laborum reprehenderit eiusmod irure ex. Elit duis consequat minim magna. Esse consectetur aliquip cillum excepteur excepteur fugiat. Sint tempor consequat minim reprehenderit consectetur adipisicing dolor id Lorem elit non. Occaecat esse quis mollit ea et sint aute fugiat qui tempor. Adipisicing tempor duis non dolore irure elit deserunt qui do.\r\n",
"Labore fugiat eiusmod sint laborum sit duis occaecat. Magna in laborum non cillum excepteur nostrud sit proident pariatur voluptate voluptate adipisicing exercitation occaecat. Ad non dolor aute ex sint do do minim exercitation veniam laborum irure magna ea. Magna do non quis sit consequat Lorem aliquip.\r\n",
"Velit anim do laborum laboris laborum Lorem. Sunt do Lorem amet ipsum est sint velit sit do voluptate mollit veniam enim. Commodo do deserunt in pariatur ut elit sint elit deserunt ea. Ad dolor anim consequat aliquip ut mollit nostrud tempor sunt mollit elit. Reprehenderit laboris labore excepteur occaecat veniam adipisicing cupidatat esse. Ad enim aliquip ea minim excepteur magna. Sint velit veniam pariatur qui dolor est adipisicing ex laboris.\r\n",
"Ea cupidatat ex nulla in sunt est sit dolor enim ad. Eu tempor consequat cupidatat consequat ex incididunt sint culpa. Est Lorem Lorem non cupidatat sunt ut aliqua non nostrud do ullamco. Reprehenderit ad ad nulla nostrud do nulla in. Ipsum adipisicing commodo mollit ipsum exercitation. Aliqua ea anim anim est elit. Ea incididunt consequat minim ad sunt eu cillum.\r\n",
"Tempor quis excepteur eiusmod cupidatat ipsum occaecat id et occaecat. Eiusmod magna aliquip excepteur id amet elit. Ullamco dolore amet anim dolor enim ea magna magna elit. Occaecat magna pariatur in deserunt consectetur officia aliquip ullamco ex aute anim. Minim laborum eu sit elit officia esse do irure pariatur tempor et reprehenderit ullamco labore.\r\n",
"Sit tempor eu minim dolore velit pariatur magna duis reprehenderit ea nulla in. Amet est do consectetur commodo do adipisicing adipisicing in amet. Cillum id ut commodo do pariatur duis aliqua nisi sint ad irure officia reprehenderit. Mollit labore id enim fugiat ullamco irure mollit cupidatat. Quis nisi amet labore eu dolor occaecat commodo aliqua laboris deserunt excepteur deserunt officia. Aliqua non ut sit ad. Laborum veniam ad velit minim dolore ea id magna dolor qui in.\r\n",
"Dolore nostrud ipsum aliqua pariatur id reprehenderit enim ad eiusmod qui. Deserunt anim commodo pariatur excepteur velit eu irure nulla ex labore ipsum aliqua minim aute. Id consequat amet tempor aliquip ex elit adipisicing est do. Eu enim Lorem consectetur minim id irure nulla culpa. Consectetur do consequat aute tempor anim. Qui ad non elit dolor est adipisicing nisi amet cillum sunt quis anim laboris incididunt. Incididunt proident adipisicing labore Lorem.\r\n",
"Et reprehenderit ea officia veniam. Aliquip ullamco consequat elit nisi magna mollit id elit. Amet amet sint velit labore ad nisi. Consectetur tempor id dolor aliqua esse deserunt amet. Qui laborum enim proident voluptate aute eu aute aute sit sit incididunt eu. Sunt ullamco nisi nostrud labore commodo non consectetur quis do duis minim irure. Tempor sint dolor sint aliquip dolore nostrud fugiat.\r\n",
"Aute ullamco quis nisi ut excepteur nostrud duis elit. Veniam ex ad incididunt veniam voluptate. Commodo dolore ullamco sit sint adipisicing proident amet aute duis deserunt.\r\n",
"Labore velit eu cillum nisi. Laboris do cupidatat et non duis cillum. Ullamco dolor tempor cupidatat voluptate laborum ullamco ea duis.\r\n",
"Deserunt consequat aliqua duis aliquip nostrud nostrud dolore nisi. Culpa do sint laborum consectetur ipsum quis laborum laborum pariatur eiusmod. Consectetur laboris ad ad ut quis. Ullamco laboris qui velit id laborum voluptate qui aute nostrud aliquip ea.\r\n",
"Ad cillum anim ex est consectetur mollit id in. Non enim aliquip consequat qui deserunt commodo cillum ad laborum fugiat. Dolor deserunt amet laborum tempor adipisicing voluptate dolor pariatur dolor cillum. Eu mollit ex sunt officia veniam qui est sunt proident. Non aliqua qui elit eu cupidatat ex enim ex proident. Lorem sit minim ullamco officia cupidatat duis minim. Exercitation laborum deserunt voluptate culpa tempor quis nulla id pariatur.\r\n",
"Nostrud quis consectetur ut aliqua excepteur elit consectetur occaecat. Occaecat voluptate Lorem pariatur consequat ullamco fugiat minim. Anim voluptate eu eu cillum tempor dolore aliquip aliqua. Fugiat incididunt ut tempor amet minim. Voluptate nostrud minim pariatur non excepteur ullamco.\r\n",
"Dolore nulla velit officia exercitation irure laboris incididunt anim in laborum in fugiat ut proident. Fugiat aute id consequat fugiat officia ut. Labore sint amet proident amet sint nisi laboris amet id ullamco culpa quis consequat proident. Magna do fugiat veniam dolore elit irure minim. Esse ullamco excepteur labore tempor labore fugiat dolore nisi cupidatat irure dolor pariatur. Magna excepteur laboris nisi eiusmod sit pariatur mollit.\r\n",
"In enim aliquip officia ea ad exercitation cillum culpa occaecat dolore Lorem. Irure cillum commodo adipisicing sunt pariatur ea duis fugiat exercitation laboris culpa ullamco aute. Ut voluptate exercitation qui dolor. Irure et duis elit consequat deserunt proident.\r\n",
"Officia ea Lorem sunt culpa id et tempor excepteur enim deserunt proident. Dolore aliquip dolor laboris cillum proident velit. Et culpa occaecat exercitation cupidatat irure sint adipisicing excepteur pariatur incididunt ad occaecat. Qui proident ipsum cillum minim. Quis ut culpa irure aliqua minim fugiat. In voluptate cupidatat fugiat est laborum dolor esse in pariatur voluptate.\r\n",
"Voluptate enim ipsum officia aute ea adipisicing nisi ut ex do aliquip amet. Reprehenderit enim voluptate tempor ex adipisicing culpa. Culpa occaecat voluptate dolor mollit ipsum exercitation labore et tempor sit ea consectetur aliqua. Elit elit sit minim ea ea commodo do tempor cupidatat irure dolore. Occaecat esse adipisicing anim eiusmod commodo fugiat mollit amet. Incididunt tempor tempor qui occaecat cupidatat in.\r\n",
"Ut qui anim velit enim aliquip do ut nulla labore. Mollit ut commodo ut eiusmod consectetur laboris aliqua qui voluptate culpa fugiat incididunt elit. Lorem ullamco esse elit elit. Labore amet incididunt ea nulla aliquip eiusmod. Sit nulla est voluptate officia ipsum aute aute cillum tempor deserunt. Laboris commodo eiusmod labore sunt aute excepteur ea consectetur reprehenderit veniam nisi. Culpa nisi sint sunt sint tempor laboris dolore cupidatat.\r\n",
"Duis cillum qui nisi duis amet velit ad cillum ut elit aute sint ad. Amet laboris pariatur excepteur ipsum Lorem aliqua veniam Lorem quis mollit cupidatat aliqua exercitation. Pariatur ex ullamco sit commodo cillum eiusmod ut proident elit cillum. Commodo ut ipsum excepteur occaecat sint elit consequat ex dolor adipisicing consectetur id ut ad. Velit sit eiusmod est esse tempor incididunt consectetur eiusmod duis commodo veniam.\r\n",
"Ut sunt qui officia anim laboris exercitation Lorem quis laborum do eiusmod officia. Enim consectetur occaecat fugiat cillum cillum. Dolore dolore nostrud in commodo fugiat mollit consequat occaecat non et et elit ullamco. Sit voluptate minim ut est culpa velit nulla fugiat reprehenderit eu aliquip adipisicing labore. Sit minim minim do dolor dolor. Lorem Lorem labore exercitation magna veniam eiusmod do.\r\n",
"Fugiat dolor adipisicing quis aliquip aute dolore. Qui proident anim elit veniam ex aliquip eiusmod ipsum sunt pariatur est. Non fugiat duis do est officia adipisicing.\r\n",
"Nulla deserunt do laboris cupidatat veniam do consectetur ipsum elit veniam in mollit eu. Ea in consequat cupidatat laboris sint fugiat irure. In commodo esse reprehenderit deserunt minim velit ullamco enim eu cupidatat tempor ex. Ullamco in non id culpa amet occaecat culpa nostrud id. Non occaecat culpa magna incididunt.\r\n",
"Enim laboris ex mollit reprehenderit eiusmod exercitation magna. Exercitation Lorem ex mollit non non culpa labore enim. Adipisicing labore dolore incididunt do amet aliquip excepteur ad et nostrud officia aute veniam voluptate. Fugiat enim eiusmod Lorem esse. Minim ullamco commodo consequat ex commodo aliqua eu nulla eu. Veniam non enim nulla ut Lorem nostrud minim sint duis.\r\n",
"Enim duis consectetur in ullamco cillum veniam nulla amet. Exercitation nisi sunt sunt duis in culpa nisi magna ex id ipsum laboris reprehenderit qui. Officia pariatur qui ex fugiat veniam et sunt sit nostrud. Veniam ullamco tempor fugiat minim Lorem proident velit in eiusmod elit. Enim minim excepteur aute aliquip ex magna commodo dolore qui et labore. Proident eu aliquip cillum dolor. Nostrud ipsum ut irure consequat fugiat nulla proident occaecat laborum.\r\n",
"Amet duis eiusmod sunt adipisicing esse ex nostrud consectetur voluptate cillum. Ipsum occaecat sit et anim velit irure ea incididunt cupidatat ullamco in nisi quis. Esse officia ipsum commodo qui quis qui do. Commodo aliquip amet aute sit sit ut cupidatat elit nostrud.\r\n",
"Laboris laboris sit mollit cillum nulla deserunt commodo culpa est commodo anim id anim sit. Officia id consectetur velit incididunt est dolor sunt ipsum magna aliqua consectetur. Eiusmod pariatur minim deserunt cupidatat veniam Lorem aliquip sunt proident eu Lorem sit dolor fugiat. Proident qui ut ex in incididunt nulla nulla dolor ex laboris ea ad.\r\n",
"Ex incididunt enim labore nulla cupidatat elit. Quis ut incididunt incididunt non irure commodo do mollit cillum anim excepteur. Qui consequat laborum dolore elit tempor aute ut nulla pariatur eu ullamco veniam. Nisi non velit labore in commodo excepteur culpa nulla tempor cillum. Ipsum qui sit sint reprehenderit ut labore incididunt dolor aliquip sunt. Reprehenderit occaecat tempor nisi laborum.\r\n",
"Lorem officia ullamco eu occaecat in magna eiusmod consectetur nisi aliqua mollit esse. Ullamco ex aute nostrud pariatur do enim cillum sint do fugiat nostrud culpa tempor. Do aliquip excepteur nostrud culpa eu pariatur eiusmod cillum excepteur do. Est sunt non quis cillum voluptate ex.\r\n",
"Deserunt consectetur tempor irure mollit qui tempor et. Labore enim eu irure laboris in. Nisi in tempor ex occaecat amet cupidatat laboris occaecat amet minim ut magna incididunt id. Consequat cillum laborum commodo mollit. Et magna culpa sunt dolore consequat laboris et sit. Deserunt qui voluptate excepteur dolor. Eu qui amet est proident.\r\n",
"Eu elit minim eiusmod occaecat eu nostrud dolor qui ut elit. Sunt dolore proident ea eu do eiusmod fugiat incididunt pariatur duis amet Lorem nisi ut. Adipisicing quis veniam cupidatat Lorem sint culpa sunt veniam sint. Excepteur eu exercitation est magna pariatur veniam dolore qui fugiat labore proident eiusmod cillum. Commodo reprehenderit elit proident duis sint magna.\r\n",
"Ut aliquip pariatur deserunt nostrud commodo ad proident est exercitation. Sit minim do ea enim sint officia nisi incididunt laborum. Ex amet duis commodo fugiat. Ut aute tempor deserunt irure occaecat aliquip voluptate cillum aute elit qui nostrud.\r\n",
"Irure et quis consectetur sit est do sunt aliquip eu. Cupidatat pariatur consequat dolore consectetur. Adipisicing magna velit mollit occaecat do id. Nisi pariatur cupidatat cillum incididunt excepteur consectetur excepteur do laborum deserunt irure pariatur cillum.\r\n",
"Adipisicing esse incididunt cillum est irure consequat irure ad aute voluptate. Incididunt do occaecat nostrud do ipsum pariatur Lorem qui laboris et pariatur. Est exercitation dolor culpa ad velit ut et.\r\n",
"Sit eiusmod id enim ad ex dolor pariatur do. Ullamco occaecat quis dolor minim non elit labore amet est. Commodo velit eu nulla eiusmod ullamco. Incididunt anim pariatur aute eiusmod veniam tempor enim officia elit id. Elit Lorem est commodo dolore nostrud. Labore et consectetur do exercitation veniam laboris incididunt aliqua proident dolore ea officia cupidatat. Velit laboris aliquip deserunt labore commodo.\r\n",
"Proident nostrud labore eu nostrud. Excepteur ut in velit labore ea proident labore ea sint cillum. Incididunt ipsum consectetur officia irure sit pariatur veniam id velit officia mollit. Adipisicing magna voluptate velit excepteur enim consectetur incididunt voluptate tempor occaecat fugiat velit excepteur labore. Do do incididunt qui nisi voluptate enim. Laboris aute sit voluptate cillum pariatur minim excepteur ullamco mollit deserunt.\r\n",
"Excepteur laborum adipisicing nisi elit fugiat tempor. Elit laboris qui enim labore duis. Proident tempor in consectetur proident excepteur do ex laboris sit.\r\n",
"Dolore do ea incididunt do duis dolore eu labore nisi cupidatat voluptate amet incididunt minim. Nulla pariatur mollit cupidatat adipisicing nulla et. Dolor aliquip in ex magna excepteur. Nulla consequat minim consequat ullamco dolor laboris ullamco eu reprehenderit duis nostrud pariatur.\r\n",
"Id nisi labore duis qui. Incididunt laboris tempor aute do sit. Occaecat excepteur est mollit ea in mollit ullamco est amet reprehenderit.\r\n",
"Aute labore ipsum velit non voluptate eiusmod et reprehenderit cupidatat occaecat. Lorem tempor tempor consectetur exercitation qui nostrud sunt cillum quis ut non dolore. Reprehenderit consequat reprehenderit laborum qui pariatur anim et officia est cupidatat enim velit velit.\r\n",
"Commodo ex et fugiat cupidatat non adipisicing commodo. Minim ad dolore fugiat mollit cupidatat aliqua sunt dolor sit. Labore esse labore velit aute enim. Nulla duis incididunt est aliquip consectetur elit qui incididunt minim minim labore amet sit cillum.\r\n"
]

1
bin/types/readme.txt Normal file
View File

@ -0,0 +1 @@
Test data obtained from https://github.com/xpol/lua-rapidjson/tree/master/performance

View File

@ -0,0 +1,138 @@
{
"type": "object",
"properties": {
"version": {
"$ref": "#/definitions/decimal_type"
},
"address": {
"$ref": "#/definitions/address_type"
},
"phones": {
"type": "array",
"minItems": 1,
"maxItems": 2,
"uniqueItems": true,
"items": {
"$ref": "#/definitions/phone_type"
}
},
"names": {
"type": "array",
"items": [
{ "type": "string" },
{ "type": "string" }
],
"additionalItems": false
},
"extra": {
"type": "object",
"patternProperties": {
"^S_": { "type": "string" }
}
},
"gender": {
"type": "string",
"enum": ["M", "F"]
}
},
"additionalProperties": false,
"dependencies": {
"address": [ "version" ],
"names": {
"properties": {
"version": { "$ref": "#/definitions/decimal_type" }
},
"required": ["version"]
}
},
"definitions": {
"address_type": {
"type": "object",
"properties": {
"number": {
"$ref": "#/definitions/positiveInt_type"
},
"street1": {
"type": "string"
},
"street2": {
"type": ["string", "null"]
},
"street3": {
"not": { "type": ["boolean", "number", ",integer", "object", "null"] }
},
"city": {
"type": "string",
"maxLength": 10,
"minLength": 4
},
"area": {
"oneOf": [
{ "$ref": "#/definitions/county_type" },
{ "$ref": "#/definitions/province_type" }
]
},
"country": {
"allOf": [
{ "$ref": "#/definitions/country_type" }
]
},
"postcode": {
"anyOf": [
{ "type": "string", "pattern": "^[A-Z]{2}[0-9]{1,2} [0-9][A-Z]{2}$" },
{ "type": "string", "pattern": "^[0-9]{5}$" }
]
}
},
"minProperties": 7,
"required": [
"number",
"street1",
"city"
]
},
"country_type": {
"type": "string",
"enum": ["UK", "Canada"]
},
"county_type": {
"type": "string",
"enum": ["Sussex", "Surrey", "Kent", "Narnia"]
},
"province_type": {
"type": "string",
"enum": ["Quebec", "Narnia", "BC", "Alberta"]
},
"date_type": {
"pattern": "^([0-9]([0-9]([0-9][1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2][0-9]|3[0-1]))?)?$",
"type": "string"
},
"positiveInt_type": {
"minimum": 0,
"exclusiveMinimum": true,
"maximum": 100,
"exclusiveMaximum": true,
"type": "integer"
},
"decimal_type": {
"multipleOf": 1.0,
"type": "number"
},
"time_type": {
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\\.[0-9]+)?$",
"type": "string"
},
"unsignedInt_type": {
"type": "integer",
"minimum": 0,
"maximum": 99999
},
"phone_type": {
"pattern": "^[0-9]*-[0-9]*",
"type": "string"
},
"url_type": {
"type": "string"
}
}
}

View File

@ -0,0 +1,7 @@
{
"allOf": [
{
"$ref": "http://localhost:1234/address.json#"
}
]
}

View File

@ -0,0 +1,7 @@
{
"anyOf": [
{
"$ref": "http://localhost:1234/address.json#"
}
]
}

View File

@ -0,0 +1,69 @@
{
"id": "http://example.com/root.json",
"definitions": {
"A": {
"id": "#foo",
"type": "integer"
},
"B": {
"id": "other.json",
"definitions": {
"X": {
"id": "#bar",
"type": "boolean"
},
"Y": {
"$ref": "#/definitions/X"
},
"W": {
"$ref": "#/definitions/Y"
},
"Z": {
"$ref": "#bar"
},
"N": {
"properties": {
"NX": {
"$ref": "#/definitions/X"
}
}
}
}
}
},
"properties": {
"PA1": {
"$ref": "http://example.com/root.json#/definitions/A"
},
"PA2": {
"$ref": "#/definitions/A"
},
"PA3": {
"$ref": "#foo"
},
"PX1": {
"$ref": "#/definitions/B/definitions/X"
},
"PX2Y": {
"$ref": "#/definitions/B/definitions/Y"
},
"PX3Z": {
"$ref": "#/definitions/B/definitions/Z"
},
"PX4": {
"$ref": "http://example.com/other.json#/definitions/X"
},
"PX5": {
"$ref": "other.json#/definitions/X"
},
"PX6": {
"$ref": "other.json#bar"
},
"PX7W": {
"$ref": "#/definitions/B/definitions/W"
},
"PX8N": {
"$ref": "#/definitions/B/definitions/N"
}
}
}

View File

@ -0,0 +1,7 @@
{
"oneOf": [
{
"$ref": "http://localhost:1234/address.json#"
}
]
}

45
contrib/natvis/LICENSE Normal file
View File

@ -0,0 +1,45 @@
The MIT License (MIT)
Copyright (c) 2017 Bart Muzzin
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.
Derived from:
The MIT License (MIT)
Copyright (c) 2015 mojmir svoboda
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.

7
contrib/natvis/README.md Normal file
View File

@ -0,0 +1,7 @@
# rapidjson.natvis
This file can be used as a [Visual Studio Visualizer](https://docs.microsoft.com/en-gb/visualstudio/debugger/create-custom-views-of-native-objects) to aid in visualizing rapidjson structures within the Visual Studio debugger. Natvis visualizers are supported in Visual Studio 2012 and later. To install, copy the file into this directory:
`%USERPROFILE%\Documents\Visual Studio 2012\Visualizers`
Each version of Visual Studio has a similar directory, it must be copied into each directory to be used with that particular version. In Visual Studio 2015 and later, this can be done without restarting Visual Studio (a new debugging session must be started).

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<!-- rapidjson::GenericValue - basic support -->
<Type Name="rapidjson::GenericValue&lt;*,*&gt;">
<DisplayString Condition="(data_.f.flags &amp; kTypeMask) == rapidjson::kNullType">null</DisplayString>
<DisplayString Condition="data_.f.flags == kTrueFlag">true</DisplayString>
<DisplayString Condition="data_.f.flags == kFalseFlag">false</DisplayString>
<DisplayString Condition="data_.f.flags == kShortStringFlag">{(const Ch*)data_.ss.str,na}</DisplayString>
<DisplayString Condition="(data_.f.flags &amp; kTypeMask) == rapidjson::kStringType">{(const Ch*)((size_t)data_.s.str &amp; 0x0000FFFFFFFFFFFF),[data_.s.length]na}</DisplayString>
<DisplayString Condition="(data_.f.flags &amp; kNumberIntFlag) == kNumberIntFlag">{data_.n.i.i}</DisplayString>
<DisplayString Condition="(data_.f.flags &amp; kNumberUintFlag) == kNumberUintFlag">{data_.n.u.u}</DisplayString>
<DisplayString Condition="(data_.f.flags &amp; kNumberInt64Flag) == kNumberInt64Flag">{data_.n.i64}</DisplayString>
<DisplayString Condition="(data_.f.flags &amp; kNumberUint64Flag) == kNumberUint64Flag">{data_.n.u64}</DisplayString>
<DisplayString Condition="(data_.f.flags &amp; kNumberDoubleFlag) == kNumberDoubleFlag">{data_.n.d}</DisplayString>
<DisplayString Condition="data_.f.flags == rapidjson::kObjectType">Object members={data_.o.size}</DisplayString>
<DisplayString Condition="data_.f.flags == rapidjson::kArrayType">Array members={data_.a.size}</DisplayString>
<Expand>
<Item Condition="data_.f.flags == rapidjson::kObjectType" Name="[size]">data_.o.size</Item>
<Item Condition="data_.f.flags == rapidjson::kObjectType" Name="[capacity]">data_.o.capacity</Item>
<ArrayItems Condition="data_.f.flags == rapidjson::kObjectType">
<Size>data_.o.size</Size>
<!-- NOTE: Rapidjson stores some extra data in the high bits of pointers, which is why the mask -->
<ValuePointer>(rapidjson::GenericMember&lt;$T1,$T2&gt;*)(((size_t)data_.o.members) &amp; 0x0000FFFFFFFFFFFF)</ValuePointer>
</ArrayItems>
<Item Condition="data_.f.flags == rapidjson::kArrayType" Name="[size]">data_.a.size</Item>
<Item Condition="data_.f.flags == rapidjson::kArrayType" Name="[capacity]">data_.a.capacity</Item>
<ArrayItems Condition="data_.f.flags == rapidjson::kArrayType">
<Size>data_.a.size</Size>
<!-- NOTE: Rapidjson stores some extra data in the high bits of pointers, which is why the mask -->
<ValuePointer>(rapidjson::GenericValue&lt;$T1,$T2&gt;*)(((size_t)data_.a.elements) &amp; 0x0000FFFFFFFFFFFF)</ValuePointer>
</ArrayItems>
</Expand>
</Type>
</AutoVisualizer>

View File

@ -3,19 +3,21 @@ find_package(Doxygen)
IF(NOT DOXYGEN_FOUND)
MESSAGE(STATUS "No Doxygen found. Documentation won't be built")
ELSE()
file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/include/*)
file(GLOB MARKDOWN_DOC ${CMAKE_SOURCE_DIR}/doc/*.md)
list(APPEND MARKDOWN_DOC ${CMAKE_SOURCE_DIR}/readme.md)
file(GLOB SOURCES ${CMAKE_CURRENT_LIST_DIR}/../include/*)
file(GLOB MARKDOWN_DOC ${CMAKE_CURRENT_LIST_DIR}/../doc/*.md)
list(APPEND MARKDOWN_DOC ${CMAKE_CURRENT_LIST_DIR}/../readme.md)
CONFIGURE_FILE(Doxyfile.in Doxyfile @ONLY)
CONFIGURE_FILE(Doxyfile.zh-cn.in Doxyfile.zh-cn @ONLY)
file(GLOB DOXYFILES ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile*)
add_custom_command(OUTPUT html
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.zh-cn
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/html
DEPENDS ${MARKDOWN_DOC} ${SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile*
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
DEPENDS ${MARKDOWN_DOC} ${SOURCES} ${DOXYFILES}
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/../
)
add_custom_target(doc ALL DEPENDS html)

View File

@ -765,14 +765,17 @@ WARN_LOGFILE =
# Note: If this tag is empty the current directory is searched.
INPUT = readme.md \
CHANGELOG.md \
include/rapidjson/rapidjson.h \
include/ \
doc/features.md \
doc/tutorial.md \
doc/pointer.md \
doc/stream.md \
doc/encoding.md \
doc/dom.md \
doc/sax.md \
doc/schema.md \
doc/performance.md \
doc/internals.md \
doc/faq.md
@ -1123,7 +1126,7 @@ HTML_STYLESHEET =
# defined cascading style sheet that is included after the standard style sheets
# created by doxygen. Using this option one can overrule certain style aspects.
# This is preferred over using HTML_STYLESHEET since it does not replace the
# standard style sheet and is therefor more robust against future updates.
# standard style sheet and is therefore more robust against future updates.
# Doxygen will copy the style sheet file to the output directory. For an example
# see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.

View File

@ -764,18 +764,21 @@ WARN_LOGFILE =
# spaces.
# Note: If this tag is empty the current directory is searched.
INPUT = ./readme.zh-cn.md \
./include/rapidjson/rapidjson.h \
./include/ \
./doc/features.zh-cn.md \
./doc/tutorial.zh-cn.md \
./doc/stream.zh-cn.md \
./doc/encoding.zh-cn.md \
./doc/dom.zh-cn.md \
./doc/sax.zh-cn.md \
./doc/performance.zh-cn.md \
./doc/internals.md \
./doc/faq.zh-cn.md
INPUT = readme.zh-cn.md \
CHANGELOG.md \
include/rapidjson/rapidjson.h \
include/ \
doc/features.zh-cn.md \
doc/tutorial.zh-cn.md \
doc/pointer.zh-cn.md \
doc/stream.zh-cn.md \
doc/encoding.zh-cn.md \
doc/dom.zh-cn.md \
doc/sax.zh-cn.md \
doc/schema.zh-cn.md \
doc/performance.zh-cn.md \
doc/internals.zh-cn.md \
doc/faq.zh-cn.md
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@ -1123,7 +1126,7 @@ HTML_STYLESHEET =
# defined cascading style sheet that is included after the standard style sheets
# created by doxygen. Using this option one can overrule certain style aspects.
# This is preferred over using HTML_STYLESHEET since it does not replace the
# standard style sheet and is therefor more robust against future updates.
# standard style sheet and is therefore more robust against future updates.
# Doxygen will copy the style sheet file to the output directory. For an example
# see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.

Some files were not shown because too many files have changed in this diff Show More