Compare commits

...

3570 Commits

Author SHA1 Message Date
mb0202
7194245a31 Fixed typo in parse.md (#2968)
Changed a potential typo: "charater" -> "character"
2021-08-24 08:08:02 +02:00
Niels Lohmann
34e2c4ab88 📝 add link to Homebrew package (#2966) 2021-08-22 21:58:37 +02:00
Niels Lohmann
c753165db6 Fix parent update for diagnostics with ordered_json (#2963)
🐛 fix parent update for diagnostics with ordered_json
2021-08-22 20:30:20 +02:00
Niels Lohmann
f03127eb69 Set stack size for some unit tests when using MSVC (#2961)
* 🏁 set stack size for some unit tests
2021-08-21 13:55:06 +02:00
Niels Lohmann
cb053bceb1 Merge pull request #2960 from nlohmann/issue2958
Add regression test
2021-08-20 16:34:38 +02:00
Niels Lohmann
97c7a35a2b add regression test 2021-08-20 14:49:58 +02:00
Niels Lohmann
eb6541a30c Merge pull request #2959 from nlohmann/issue2938
Update Travis badge
2021-08-20 13:56:16 +02:00
Niels Lohmann
e8e93ee43b 👷 update Travis badge 2021-08-20 13:53:31 +02:00
Niels Lohmann
611fd22557 Merge pull request #2957 from Hallot/bug/fix-some-clang-warnings
Fix some extra ";" clang warnings
2021-08-20 13:32:38 +02:00
Pierre Hallot
433604843d Fix extra ";" clang warnings 2021-08-19 17:04:34 +02:00
Niels Lohmann
44ffaa052c Merge pull request #2943 from amirmasoudabdol/patch-1
Updating the Homebrew Command
2021-08-19 12:03:52 +02:00
Amir Masoud Abdol
14af5d4a9f fixing the doc files 2021-08-19 09:31:39 +02:00
Niels Lohmann
273d911252 Merge pull request #2954 from nlohmann/issue2944 2021-08-19 06:37:42 +02:00
Niels Lohmann
55281e03af 📝 add documentation for integration via vcpkg 2021-08-18 21:25:23 +02:00
Niels Lohmann
23e3b622aa 📝 add documentation for integration via vcpkg 2021-08-18 20:49:13 +02:00
Niels Lohmann
abd829e6c6 Merge pull request #2950 from senyai/patch-2
🚨 fix gdb_pretty_printer failure on basic types
2021-08-18 20:07:28 +02:00
Niels Lohmann
5cf5ccd108 Merge pull request #2948 from nlohmann/missing_header
Add header to use value_t
2021-08-18 20:07:05 +02:00
Niels Lohmann
5a04042cad Merge pull request #2947 from nlohmann/issue2946
Skip some tests if JSON_Install is not set
2021-08-18 20:06:44 +02:00
Niels Lohmann
f8bc22c741 Merge pull request #2945 from nlohmann/issue2941
Remove outdated json_unit test binary
2021-08-18 20:06:00 +02:00
Niels Lohmann
de4a6346c7 Merge pull request #2952 from nlohmann/fewer_appveyor_builds
Avoid duplicate AppVeyor builds
2021-08-18 20:04:25 +02:00
Niels Lohmann
f79bed6d39 👷 avoid duplicate AppVeyor builds 2021-08-18 19:53:35 +02:00
Arseniy Terekhin
355fa6c35c 🚨 gdb_pretty_printer failure on basic types
name can be None, and `re.search` fails on `None`;
replaced `re` by `str.startswith` and `str.endswith`
2021-08-18 19:29:50 +03:00
Amir Masoud Abdol
b65748f763 Using the homebrew/core Formula
I've submitted a PR on [homebrew/core](https://github.com/Homebrew/homebrew-core/pull/83479) that updates their Formula. After that one is set, we can merge this and let users use the default formula, and we don't have to maintain two separate Formulas.
2021-08-18 16:49:51 +02:00
Niels Lohmann
cfb71ad1bf 🐛 adding missing header 2021-08-18 13:33:35 +02:00
Niels Lohmann
54d9cd5a12 🔧 guard tests with JSON_Install flag 2021-08-18 13:24:12 +02:00
Niels Lohmann
5d3ad31d7e 🔥 remove outdated json_unit binary 2021-08-18 12:41:03 +02:00
Amir Masoud Abdol
8e4996c156 Updating the Homebrew Command
This resolves a conflict, and stops Homebrew from using the default formula.
2021-08-18 11:55:25 +02:00
Niels Lohmann
f42a74b8f5 Merge branch 'release/3.10.0' into develop 2021-08-17 20:40:42 +02:00
Niels Lohmann
1de378f580 🔖 set version to 3.10.0 2021-08-17 15:23:23 +02:00
Niels Lohmann
8cae9d7cd2 Overwork warning flags (#2936)
* ⚗️ update warning flags
2021-08-17 14:43:43 +02:00
Niels Lohmann
f1e63a8322 👷 run CI for release branches 2021-08-16 15:40:57 +02:00
Niels Lohmann
fa5d3b5a9b 👷 run CI for release branches 2021-08-15 22:49:31 +02:00
Niels Lohmann
09237272bc 👥 update documentation 2021-08-15 21:05:26 +02:00
Niels Lohmann
1300d2e4c3 Merge pull request #2908 from nlohmann/issue2863
Fix binary subtypes
2021-08-14 14:27:58 +02:00
Niels Lohmann
1aceeff3fc 🚨 fix C4244 warning 2021-08-14 13:40:52 +02:00
Niels Lohmann
0a0eb7a850 Merge branch 'develop' of https://github.com/nlohmann/json into issue2863
 Conflicts:
	.github/workflows/windows.yml
2021-08-14 11:19:48 +02:00
Niels Lohmann
6ac037c1f6 Merge pull request #2930 from nlohmann/msvc_warnings_as_error 2021-08-13 21:23:24 +02:00
Niels Lohmann
e5ef44c4dd Merge pull request #2927 from fhuberts/fix-switch-enum 2021-08-13 19:32:39 +02:00
Niels Lohmann
4b0e04eb68 🚨 fix C4100 warnings 2021-08-13 17:03:55 +02:00
Ferry Huberts
cdbc50b9a8 Again forgot to amalgate (sigh)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
2021-08-13 15:33:05 +02:00
Ferry Huberts
364a21be6b Add coverage exclusion comments, as requested
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
2021-08-13 15:30:55 +02:00
Ferry Huberts
95b73bcd01 Forgot to amalgate
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
2021-08-13 14:22:18 +02:00
Niels Lohmann
288cdf9af7 ⚗️ add -WX flag to MSVC builds 2021-08-13 14:07:17 +02:00
Ferry Huberts
e7a69b8d31 Adjust more files after actually building like the CI
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
2021-08-13 14:00:00 +02:00
Niels Lohmann
fecb01858b ⚗️ add -WX flag to MSVC builds 2021-08-13 13:28:17 +02:00
Niels Lohmann
789280fcb2 🚨 fix C4309 warning 2021-08-13 13:20:26 +02:00
Niels Lohmann
e65db83448 ⚗️ add -WX flag to MSVC builds 2021-08-13 12:42:38 +02:00
Ferry Huberts
832cee5b77 Adjust warnings flags, as requested
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
2021-08-12 19:49:54 +02:00
Ferry Huberts
44d60f8d14 All: fix warnings when compiling with -Wswitch-enum
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
2021-08-12 16:33:50 +02:00
Niels Lohmann
910fabf8f0 Merge pull request #2925 from nlohmann/issue2924
Guard GCC pragmas
2021-08-12 07:58:50 +02:00
Niels Lohmann
e20f3f95eb 🚨 guard GCC pragmas #2924 2021-08-11 23:55:46 +02:00
Niels Lohmann
57d31d1b83 Merge pull request #2898 from nlohmann/issue2824
Add regression test
2021-08-11 13:02:49 +02:00
Niels Lohmann
8ae31a56a5 Merge branch 'develop' of https://github.com/nlohmann/json into issue2824 2021-08-11 08:06:32 +02:00
Niels Lohmann
68d8661f1b 📝 update documentation 2021-08-11 08:06:25 +02:00
Niels Lohmann
b792bf5660 ⚗️ try minimal example 2021-08-10 10:29:13 +02:00
Niels Lohmann
26569f8ecc ⚗️ try minimal example 2021-08-10 10:09:31 +02:00
Niels Lohmann
edc203a837 ⚗️ try minimal example 2021-08-10 08:35:14 +02:00
Niels Lohmann
0d530c9de8 ⚗️ try minimal example 2021-08-10 08:22:21 +02:00
Niels Lohmann
36394cc262 ⚗️ try minimal example 2021-08-09 21:58:05 +02:00
Niels Lohmann
83c005f881 ⚗️ try minimal example 2021-08-09 21:43:03 +02:00
Niels Lohmann
523f7c2c9d 💡 update documentation 2021-08-08 13:24:17 +02:00
Niels Lohmann
db7ccafbda 💚 fix MSVC build 2021-08-07 13:55:25 +02:00
Niels Lohmann
a4c3cf7798 💚 fix MSVC build 2021-08-07 13:40:01 +02:00
Niels Lohmann
346c9c1a19 💚 fix MSVC build 2021-08-07 13:37:17 +02:00
Niels Lohmann
c5928501b0 💚 fix MSVC build 2021-08-07 13:19:25 +02:00
Niels Lohmann
176e9bf0ab add tests for CBOR 2021-08-07 13:14:08 +02:00
Niels Lohmann
b74474e3fd 💚 fix MSVC build 2021-08-07 13:14:00 +02:00
Niels Lohmann
89c98dfc20 add option to process binary subtypes in CBOR 2021-08-06 16:41:01 +02:00
Niels Lohmann
51a9880022 add tests for CBOR 2021-08-06 15:31:11 +02:00
Niels Lohmann
b7db1d68d9 ♻️ fix CBOR and BSON 2021-08-06 14:36:38 +02:00
Niels Lohmann
046df035fa ♻️ change type of binary subtype 2021-08-06 13:45:35 +02:00
Niels Lohmann
3eb1fb6be7 ♻️ change type of binary subtype 2021-08-06 13:26:00 +02:00
Niels Lohmann
5c38e76c11 Merge branch 'develop' of https://github.com/nlohmann/json into issue2863 2021-08-06 13:23:26 +02:00
Niels Lohmann
359f6723fc Merge pull request #2911 from Finkman/develop
Supress -Wfloat-equal on intended float comparisions
2021-08-06 12:58:34 +02:00
Sven Fink
3f5545f99b Remove -Wfloat-equal suppressions on tests 2021-08-04 09:14:45 +02:00
Sven Fink
353d59717e Add more suppressions on float comparisons 2021-08-04 08:34:53 +02:00
Sven Fink
095aae19fe Supress -Wfloat-equal on intended float comparisions 2021-08-03 08:58:38 +02:00
Niels Lohmann
7c19aa2210 ♻️ overwork byte_container_with_subtype 2021-08-01 22:00:57 +02:00
Niels Lohmann
eb488bb4d9 📝 add note for wstring handling 2021-08-01 20:54:02 +02:00
Niels Lohmann
c3df4ffd5a 🚨 fix warning 2021-08-01 14:08:14 +02:00
Niels Lohmann
5a1bc76f34 ⚗️ switch off exceptions 2021-08-01 13:34:55 +02:00
Niels Lohmann
e7260f07f5 Merge branch 'develop' of https://github.com/nlohmann/json into issue2824 2021-08-01 13:07:43 +02:00
Niels Lohmann
a54403290e 📄 add CITATION file 2021-08-01 12:42:59 +02:00
Niels Lohmann
9ed027ac10 Merge pull request #2902 from nlohmann/issue2893
Fix useless-cast warnings
2021-07-31 20:42:55 +02:00
Niels Lohmann
8676f6745e add regression test #2824 2021-07-30 21:18:25 +02:00
Niels Lohmann
f4716a0d42 🚨 fix useless-cast warnings 2021-07-30 21:12:55 +02:00
Niels Lohmann
9a459e1bd5 🚨 fix useless-cast warnings 2021-07-30 15:20:22 +02:00
Niels Lohmann
c7822840eb add regression test #2824 2021-07-30 15:00:54 +02:00
Niels Lohmann
7feb2c20cf 🚨 fix useless-cast warnings 2021-07-30 14:48:25 +02:00
Niels Lohmann
2c030bac2c add regression test #2824 2021-07-30 14:41:06 +02:00
Niels Lohmann
1c030cccf1 add regression test #2824 2021-07-29 15:23:21 +02:00
Niels Lohmann
a563338039 Merge pull request #2825 from ldionne/ldionne-lazy
Properly constrain the basic_json conversion operator
2021-07-22 12:24:56 +02:00
Niels Lohmann
19a5e12136 CMake cleanup (#2885)
* 🔥 clean CMake files and Makefile
* 💡 update documentation
2021-07-22 09:25:55 +02:00
Niels Lohmann
eba82ecd62 Refactor Unicode tests (#2889)
* ♻️ split Unicode tests
2021-07-21 21:17:01 +02:00
Louis Dionne
b0e5965d71 Properly constrain the basic_json conversion operator
Fixes #2491
2021-07-19 11:16:27 -04:00
Niels Lohmann
03270ef090 👥 update contributors 2021-07-19 16:57:15 +02:00
Niels Lohmann
45016c4429 ⬆️ update Doxyfile 2021-07-19 16:56:43 +02:00
Niels Lohmann
7066ab128f 🎨 reindent code 2021-07-19 16:56:28 +02:00
Niels Lohmann
926fab47d0 📝 fix GIF examples #2457 2021-07-17 14:43:01 +02:00
Niels Lohmann
a0863b8c20 📝 add support section 2021-07-17 13:44:54 +02:00
Niels Lohmann
517aeec299 Merge remote-tracking branch 'origin/develop' into develop 2021-07-17 12:39:45 +02:00
Niels Lohmann
8f0a880c89 Merge pull request #2879 from nlohmann/issue2598
Avoid string in case of empty CBOR objects
2021-07-17 12:38:33 +02:00
Niels Lohmann
3db8903f29 📝 restructure README 2021-07-16 15:00:11 +02:00
Niels Lohmann
fb1ee4f94b 📝 update documentation 2021-07-16 14:41:14 +02:00
Niels Lohmann
835749efcc add test for JSON_SystemInclude flag 2021-07-16 12:34:15 +02:00
Niels Lohmann
fb31616a61 Merge remote-tracking branch 'origin/develop' into develop 2021-07-16 12:27:53 +02:00
Niels Lohmann
b2d21067d1 Merge pull request #2762 from jpl-mac/no.tidy.warnings.dev
Add a cmake option to use SYSTEM in target_include_directories
2021-07-16 12:06:26 +02:00
Niels Lohmann
c65369acbe 👷 fix Codacity badge 2021-07-16 11:44:07 +02:00
Niels Lohmann
f907f9502d Merge pull request #2875 from nlohmann/issue2592
Suppress C4127 warning in unit-json_pointer.cpp
2021-07-16 10:11:29 +02:00
Niels Lohmann
b7cc47089f avoid string in case of empty objects 2021-07-16 09:27:18 +02:00
Niels Lohmann
c89e23c69b Merge pull request #2874 from nlohmann/issue2572
Fix truncation warning
2021-07-16 07:54:48 +02:00
Niels Lohmann
f883ddd1c2 Merge pull request #2872 from nlohmann/issue2865
Fix memory leak in to_json
2021-07-16 06:52:28 +02:00
Niels Lohmann
92ec35735c Merge branch 'develop' of https://github.com/nlohmann/json into issue2592 2021-07-15 22:28:03 +02:00
Niels Lohmann
953dcfb611 🚨 fix warning #2572 2021-07-15 22:00:16 +02:00
Niels Lohmann
996ac1c017 Merge branch 'develop' of https://github.com/nlohmann/json into issue2572
 Conflicts:
	include/nlohmann/detail/output/serializer.hpp
	single_include/nlohmann/json.hpp
2021-07-15 21:57:52 +02:00
Niels Lohmann
3e4723a49f 🔨 remove noexcept annotation 2021-07-15 21:49:09 +02:00
Niels Lohmann
ecaac22656 💡 add comment to describe j.m_value.destroy(j.m_type) calls 2021-07-15 20:34:50 +02:00
Niels Lohmann
f6863e062c 🐛 fix leak for all types 2021-07-15 20:32:37 +02:00
Niels Lohmann
0011cd1b72 🐛 fix leak for strings 2021-07-15 13:12:21 +02:00
Niels Lohmann
0f8666ecdc 🐛 fix leak for strings 2021-07-15 13:03:20 +02:00
Niels Lohmann
c1298e69a6 🐛 fix leak for strings 2021-07-15 12:52:17 +02:00
Niels Lohmann
6cbdc83994 🐛 fix leak for strings 2021-07-15 12:47:15 +02:00
Niels Lohmann
149ded856f ♻️ simplify destroy() function for primitive types 2021-07-15 12:46:48 +02:00
Niels Lohmann
db98073930 add regression test 2021-07-15 09:02:24 +02:00
Niels Lohmann
c9c5c016a2 Merge pull request #2866 from nlohmann/issue2838 2021-07-14 12:04:37 +02:00
Niels Lohmann
4e92a61784 Merge pull request #2795 from turintech/develop
Specified git branch for google benchmark fetch in benchmark test
2021-07-13 16:58:25 +02:00
Niels Lohmann
a711e1f5a7 🚨 fix warnings 2021-07-13 15:37:57 +02:00
Niels Lohmann
3bb9467073 ♻️ move capacity check to set_parent function 2021-07-13 15:27:27 +02:00
Niels Lohmann
bc7e8faa4f 🔥 remove duplicated line 2021-07-12 19:21:07 +02:00
Niels Lohmann
b0730f29cf 🐛 fix logics 2021-07-12 15:24:06 +02:00
Niels Lohmann
d40e98ecef 🐛 fix assertion failure #2838 2021-07-12 13:38:28 +02:00
Niels Lohmann
9426074ce8 Merge pull request #2861 from nlohmann/documentation
Update documentation
2021-07-11 14:15:41 +02:00
Niels Lohmann
249688037f ⚗️ fix coverage 2021-07-11 09:33:43 +02:00
Niels Lohmann
7442c24662 🚨 suppress missingReturn warnings 2021-07-10 13:44:13 +02:00
Niels Lohmann
a82f66beed 📝 document JSON_NO_IO macro #2842 2021-07-10 12:51:18 +02:00
Niels Lohmann
5c8d0af5ce 📝 add comment for handling of negative zeros #2854 2021-07-10 12:50:59 +02:00
Niels Lohmann
098bbab029 Merge remote-tracking branch 'origin/develop' into develop 2021-07-06 08:46:51 +02:00
Niels Lohmann
71fd9bd954 📝 fix documentation (#2845) 2021-07-06 08:46:17 +02:00
Rafail Giavrimis
b7e493e98a Specified git branch for google benchmark fetch
The default branch was renamed from "master" to "main", which breaks the cloning process.
2021-06-27 17:52:28 +03:00
Niels Lohmann
6471a63115 Merge pull request #2729 from theShmoo/without-io
Possibility to use without the dependency to file io and streams to use in intel sgx enclaves
2021-06-26 12:50:06 +02:00
Niels Lohmann
624f59eacb Merge pull request #2826 from justanotheranonymoususer/patch-1
Consistency with `using` in README.md
2021-06-21 14:48:39 +02:00
justanotheranonymoususer
e970f31066 Update arbitrary_types.md 2021-06-18 12:44:27 +03:00
justanotheranonymoususer
c3d7fcb76c Update README.md 2021-06-18 11:04:53 +03:00
justanotheranonymoususer
9710108d6a Consistency with using in README.md 2021-06-17 21:39:29 +03:00
David Pfahler
572343be63 Merge branch 'nlohmann:develop' into without-io 2021-06-15 12:24:19 +02:00
Niels Lohmann
18a5f4c7ca Merge pull request #2790 from nlohmann/macos_standards
Add C++ standards to macOS matrix
2021-06-14 20:23:21 +02:00
David Pfahler
aa849a2275 Merge branch 'nlohmann:develop' into without-io 2021-06-14 08:22:49 +02:00
Niels Lohmann
71a514a651 Merge pull request #2770 from jasmcaus/patch-1
Keep consistent formatting
2021-06-14 07:18:46 +02:00
Niels Lohmann
fde6e1f800 Merge branch 'develop' of https://github.com/nlohmann/json into macos_standards 2021-06-14 07:17:47 +02:00
Niels Lohmann
95ad4ae071 Merge pull request #2817 from nlohmann/fix_ci
Fix CI
2021-06-14 07:16:32 +02:00
Niels Lohmann
802895b483 👷 remove Clang 10 2021-06-13 14:14:10 +02:00
Niels Lohmann
032f32ebe4 👷 add Clang 12 2021-06-13 14:04:20 +02:00
David Pfahler
e939b59683 fixed amalgation file for #2728 2021-05-31 14:27:23 +02:00
David Pfahler
ae9bbbc941 include io only if JSON_NO_IO is not set for #2728 2021-05-31 14:26:45 +02:00
Niels Lohmann
30e52eb046 👷 execute all tests 2021-05-30 13:28:58 +02:00
Niels Lohmann
2b685c744b 👷 reduce load 2021-05-29 13:10:28 +02:00
Niels Lohmann
9f5ee3f145 👷 fix syntax 2021-05-28 22:27:46 +02:00
Niels Lohmann
311730bc3d 👷 add C++ standards to macOS matrix #2491 2021-05-28 22:23:50 +02:00
Niels Lohmann
e10a3fac8a Merge pull request #2789 from TotalCaesar659/patch-2
Update URLs to HTTPS
2021-05-28 10:31:04 +02:00
TotalCaesar659
9a599ae63a Update URLs to HTTPS 2021-05-28 00:53:17 +03:00
Jason Dsouza
f118091eaa Update CMakeLists.txt 2021-05-15 23:39:15 +05:30
Niels Lohmann
0972f7ff0e Merge pull request #2771 from offa/conan_package_url
Link to Conan Center package added
2021-05-15 19:26:34 +02:00
offa
7935a683f5 link to conan package in readme 2021-05-12 16:46:32 +02:00
Jason Dsouza
6d7959e05d Keep consistent formatting 2021-05-12 19:25:06 +05:30
Niels Lohmann
7cafc5c63f 📝 document Drone CI 2021-05-10 14:23:27 +02:00
Niels Lohmann
e856b50791 🔥 remove arm build 2021-05-09 14:22:46 +02:00
Niels Lohmann
a44b29ecf1 🔧 fix paths 2021-05-09 13:52:16 +02:00
Niels Lohmann
014724f362 ⚗️ change path 2021-05-09 13:49:42 +02:00
Niels Lohmann
0c62748b75 🔧 change repository 2021-05-09 13:46:48 +02:00
Niels Lohmann
c73bd8b251 🔧 ignore certificate 2021-05-09 13:44:21 +02:00
Niels Lohmann
3685dbdcfd 🔧 checkout cmake via git 2021-05-09 13:41:40 +02:00
Niels Lohmann
9746f72d71 🔨 do not check certificate 2021-05-09 13:34:28 +02:00
Niels Lohmann
df6fa6c11c 👷 arm and arm64 2021-05-09 13:32:50 +02:00
Niels Lohmann
e6e7309514 👷 arm and arm64 2021-05-09 13:31:27 +02:00
Niels Lohmann
42f2512290 🔧 skip slow tests 2021-05-09 13:00:35 +02:00
Niels Lohmann
f3193e1e94 🔧 build ctest 2021-05-09 11:07:57 +02:00
Niels Lohmann
9ec8f4efa8 🔧 fix ctest path 2021-05-09 10:39:37 +02:00
Niels Lohmann
27a71ccdd8 🔧 fix path 2021-05-08 20:42:24 +02:00
Niels Lohmann
a6e2fd1b15 🔧 use built CMake 2021-05-08 14:41:43 +02:00
Niels Lohmann
77a5cd247e 🔧 build cmake 2021-05-08 13:56:19 +02:00
Niels Lohmann
1d8869f8bc 👷 add Drone CI 2021-05-08 13:33:30 +02:00
Jean-Philippe Lemieux
afbb84b2c8 Add a cmake option to use SYSTEM in target_include_directories
Without SYSTEM static analysis like clang-tidy raise warnings on
json.hpp.  This is not desirable for projects embedding nlohmann_json

Tests:
- Validated that without the option OFF the warnings are raised as
  before
- Validated that with the option ON the warnings are silenced
2021-05-05 16:19:24 -04:00
Niels Lohmann
fc2f7116fe Merge pull request #2756 from nlohmann/issue2755
replace EOF with std::char_traits<char>::eof()
2021-05-04 12:56:46 +02:00
Niels Lohmann
b08139ea4b ♻️ replace EOF with std::char_traits<char>::eof() 2021-05-04 10:22:34 +02:00
Niels Lohmann
d4f446592f Merge pull request #2754 from mortenfyhn/patch-1
Fix typo in README
2021-05-03 12:24:55 +02:00
Morten Fyhn Amundsen
193bf9d6b6 Fix typo in README 2021-05-03 09:46:00 +02:00
Niels Lohmann
b2e784c33b Merge pull request #2749 from nlohmann/docs 2021-04-29 23:05:33 +02:00
Niels Lohmann
d0ab2b86c3 📝 update documentation 2021-04-29 17:19:57 +02:00
Niels Lohmann
8a29a6ecf4 Merge pull request #2731 from theShmoo/custom-cpp-version
Fixes #2730
2021-04-29 09:55:16 +02:00
Niels Lohmann
07344fdd09 Merge pull request #2747 from nlohmann/docs
Add documentation for numbers
2021-04-28 22:06:25 +02:00
Niels Lohmann
cdfe865486 📝 add documentation for numbers 2021-04-28 20:33:05 +02:00
David Pfahler
d140a1c777 fixed amalgamation file 2021-04-26 08:39:24 +02:00
David Pfahler
5a77314c5e replaced define
JSON_VERSION_IS_PREDEFINED with JSON_HAS_CPP_11
2021-04-26 08:09:36 +02:00
Niels Lohmann
a34e011e24 Merge pull request #2576 from AnthonyVH/non_default_constructable_stl_containers
Add support for deserialization of STL containers of non-default constructable types (fixes #2574).
2021-04-25 15:22:37 +02:00
Niels Lohmann
f1600cd26b Merge pull request #2737 from nlohmann/upgrade_ci
Use Clang 12 in CI
2021-04-25 15:20:42 +02:00
Niels Lohmann
f6e9654aaa 🔇 suppress unsigned integer warnings 2021-04-25 14:33:12 +02:00
Niels Lohmann
52717b7473 👷 add clang 11 2021-04-24 14:27:13 +02:00
Niels Lohmann
608fbffcb1 📝 update compiler versions 2021-04-24 13:51:53 +02:00
Niels Lohmann
0638a27ed3 👷 add step for Infer 2021-04-24 13:50:30 +02:00
Niels Lohmann
10fc5162e7 ⬆️ use Clang 12 where available 2021-04-24 13:24:36 +02:00
Niels Lohmann
9774e53cd6 Merge pull request #2707 from raduteo/patch-2
Update json.hpp
2021-04-23 09:48:38 +02:00
David Pfahler
0a2de2f5b9 fixed amalgation file for #2728 2021-04-21 12:54:55 +02:00
David Pfahler
6b267e3cb1 fixed amalgation file for #2730 2021-04-21 12:53:58 +02:00
David Pfahler
38952643c5 generate amalgation to fix CI for #2730 2021-04-21 12:46:37 +02:00
David Pfahler
31c4c8f36c Fixes #2730
Added define JSON_VERSION_IS_PREDEFINED
for skipping automatic JSON_HAS_CPP_* detection
2021-04-21 11:03:28 +02:00
David Pfahler
1a1381f071 Fixes #2728
includes some macros to be defined for using without file io.
2021-04-21 10:24:01 +02:00
raduteo
35d79203ec Update json.hpp 2021-04-12 19:47:02 -04:00
raduteo
e8dbd7be86 Update json.hpp
Proposed fix for #2706
2021-04-09 09:35:58 -04:00
Niels Lohmann
7126d88803 Merge pull request #2690 from doronbehar/patch-1
pkg-config.pc.in: Don't concatenate paths
2021-03-30 07:50:28 +02:00
Doron Behar
53a9850eeb pkg-config.pc.in: Don't concatenate paths
See: https://github.com/jtojnar/cmake-snips#assuming-cmake_install_dir-is-relative-path
2021-03-29 21:43:49 +00:00
Niels Lohmann
3f33c21725 Merge pull request #2689 from nlohmann/ci_matrix
add more CI steps
2021-03-29 09:25:04 +02:00
Niels Lohmann
d927f44576 💚 fix build 2021-03-28 15:30:37 +02:00
Niels Lohmann
077fe41a82 🚧 do not check pushes to non-default branches 2021-03-28 14:59:42 +02:00
Niels Lohmann
ae99a31bea 🚧 add more CI tests 2021-03-28 14:48:58 +02:00
Niels Lohmann
f268035946 👷 consolidate CI 2021-03-28 13:37:04 +02:00
Niels Lohmann
1f1fa9f30e 🔥 remove some Travis builds 2021-03-27 14:44:39 +01:00
Niels Lohmann
c591b6ca6c 👷 move some MSVC jobs from AppVeyor to GitHub Actions 2021-03-27 10:43:05 +01:00
Niels Lohmann
5213ae56ac Merge pull request #2687 from musicinmybrain/nonconstant-sigstksz
Update doctest from 2.4.4 to 2.4.6 (fixes #2686)
2021-03-27 07:06:04 +01:00
Benjamin A. Beasley
ef826b6fba Update doctest from 2.4.4 to 2.4.6 (fixes #2686) 2021-03-25 13:16:04 -04:00
Niels Lohmann
823801879a Merge pull request #2683 from nlohmann/license_fix
License fix
2021-03-25 13:04:55 +01:00
Niels Lohmann
4a344e1ef0 Merge pull request #2375 from karzhenkov/fix-travis-release
Properly select "Release" build for Travis
2021-03-25 12:14:22 +01:00
Anthony VH
2b865131d8 Fixing CI errors. 2021-03-24 23:33:21 +01:00
Niels Lohmann
9d57351175 🐛 set correct value for JSON_ImplicitConversions in ci_test_noimplicitconversions 2021-03-24 20:27:12 +01:00
Alexander Karzhenkov
bf75a1b91d Merge branch 'develop' into #2375
# Conflicts:
#	.travis.yml
2021-03-24 20:33:35 +05:00
Anthony VH
8e79917d32 Fix clang-tidy complaints. 2021-03-24 13:27:59 +01:00
Niels Lohmann
41dbd50313 📄 use code from Google Abseil 2021-03-24 13:27:00 +01:00
Anthony VH
322bc99d8e Reran amalgamate. 2021-03-24 13:03:36 +01:00
Niels Lohmann
ca9a1f2fd4 📝 add note to outdated exceptions 2021-03-24 12:46:34 +01:00
Anthony VH
333612ce35 Merge remote-tracking branch 'upstream/develop' into non_default_constructable_stl_containers 2021-03-24 12:33:57 +01:00
Niels Lohmann
6f551930e5 🚨 add new CI and fix warnings (#2561)
* ⚗️ move CI targets to CMake
* ♻️ add target for cpplint
* ♻️ add target for self-contained binaries
* ♻️ add targets for iwyu and infer
* 🔊 add version output
* ♻️ add target for oclint
* 🚨 fix warnings
* ♻️ rename targets
* ♻️ use iwyu properly
* 🚨 fix warnings
* ♻️ use iwyu properly
* ♻️ add target for benchmarks
* ♻️ add target for CMake flags
* 👷 use GitHub Actions
* ⚗️ try to install Clang 11
* ⚗️ try to install GCC 11
* ⚗️ try to install Clang 11
* ⚗️ try to install GCC 11
* ⚗️ add clang analyze target
* 🔥 remove Google Benchmark
* ⬆️ Google Benchmark 1.5.2
* 🔥 use fetchcontent
* 🐧 add target to download a Linux version of CMake
* 🔨 fix dependency
* 🚨 fix includes
* 🚨 fix comment
* 🔧 adjust flags for GCC 11.0.0 20210110 (experimental)
* 🐳 user Docker image to run CI
* 🔧 add target for Valgrind
* 👷 add target for Valgrind tests
* ⚗️ add Dart
*  remove Dart
* ⚗️ do not call ctest in test subdirectory
* ⚗️ download test data explicitly
* ⚗️ only execute Valgrind tests
* ⚗️ fix labels
* 🔥 remove unneeded jobs
* 🔨 cleanup
* 🐛 fix OCLint call
*  add targets for offline and git-independent tests
*  add targets for C++ language versions and reproducible tests
* 🔨 clean up
* 👷 add CI steps for cppcheck and cpplint
* 🚨 fix warnings from Clang-Tidy
* 👷 add CI steps for Clang-Tidy
* 🚨 fix warnings
* 🔧 select proper binary
* 🚨 fix warnings
* 🚨 suppress some unhelpful warnings
* 🚨 fix warnings
* 🎨 fix format
* 🚨 fix warnings
* 👷 add CI steps for Sanitizers
* 🚨 fix warnings
*  add optimization to sanitizer build
* 🚨 fix warnings
* 🚨 add missing header
* 🚨 fix warnings
* 👷 add CI step for coverage
* 👷 add CI steps for disabled exceptions and implicit conversions
* 🚨 fix warnings
* 👷 add CI steps for checking indentation
* 🐛 fix variable use
* 💚 fix build
*  remove CircleCI
* 👷 add CI step for diagnostics
* 🚨 fix warning
* 🔥 clean Travis
2021-03-24 07:15:18 +01:00
Niels Lohmann
6b74772fe8 Merge pull request #2673 from remyjette/remove-exception-annotation
Remove HEDLEY annotation from exception::what()
2021-03-23 07:48:00 +01:00
Niels Lohmann
80e7d6fd9f Merge pull request #2679 from frasermarlow/patch-1
Update parse_exceptions.md - correct `json::exception::parse_error`
2021-03-23 07:44:32 +01:00
Niels Lohmann
098dd6bf34 Merge pull request #2659 from abbaswasim/patch-1
Fix amount of entries in the json object
2021-03-23 07:22:44 +01:00
Fraser
90d51b9205 Update parse_exceptions.md
Referring to https://github.com/nlohmann/json/blob/develop/doc/examples/parse_error.cpp  and https://json.nlohmann.me/home/exceptions/
(and also based on testing), the catch command should reference `catch (json::parse_error& ex)` and not `catch (json::exception::parse_error& ex)`
2021-03-18 12:25:12 -04:00
Remy Jette
0a9ec38f44 Remove HEDLEY annotation from exception::what()
The latest MSVC compiler throws the following warning on
nlohmann::detail::exception::what() if /analyze is enabled:

```
vcruntime_exception.h(93) : warning C28204: 'what' has an override at
`nlohmann\json\develop\single_include\nlohmann\json.hpp(2644)`
and only the override is annotated for return: when an override is
annotated, the base (this function) should be similarly annotated.
```

See https://godbolt.org/z/r331h4
2021-03-15 17:45:40 -07:00
abbaswasim
ddbdb65834 Fix amount of entries in the json object
After the initial j.push_back() calls there is another j.emplace_back() call that makes the size == 4 not 3.
2021-03-02 01:42:33 +00:00
Niels Lohmann
176d8e261a Merge pull request #2562 from nlohmann/diagnostics
Better diagnostics
2021-02-10 07:20:54 +01:00
Niels Lohmann
bb90e34d22 ⬆️ Hedley v15 2021-02-07 17:47:08 +01:00
Niels Lohmann
56a6dec0de 🔀 merge develop branch 2021-02-07 17:46:11 +01:00
Niels Lohmann
4917e7c259 Merge branch 'develop' of https://github.com/nlohmann/json into diagnostics
 Conflicts:
	include/nlohmann/detail/input/parser.hpp
	single_include/nlohmann/json.hpp
2021-02-07 17:45:09 +01:00
Niels Lohmann
e754ef7087 Merge pull request #2625 from wawiesel/patch-1
Fix missing 1.78 in example in README.md
2021-02-07 14:26:38 +01:00
William A. Wieselquist
567e2e3412 Fix missing 1.78 in example in README.md 2021-02-06 14:48:12 -05:00
Niels Lohmann
6d4eed5aeb 🚨 fix warning 2021-01-30 12:51:54 +01:00
Niels Lohmann
27b44cb17b Merge branch 'issue2615' of https://github.com/nlohmann/json into develop 2021-01-28 14:47:28 +01:00
Niels Lohmann
9f6b78ee5a 📝 add documentation 2021-01-27 14:34:10 +01:00
Niels Lohmann
5b0c804630 🐛 properly assign two labels to one test case #2596 2021-01-27 14:22:58 +01:00
Niels Lohmann
ffdeb77468 🚨 fix warnings #2615 2021-01-27 12:54:46 +01:00
Niels Lohmann
3b63a47270 🚨 suppress warning 2021-01-26 20:53:02 +01:00
Niels Lohmann
524eea5887 👌 remove unused template parameter 2021-01-26 17:49:15 +01:00
Niels Lohmann
74cc0ab470 ♻️ remove diagnostics_t class 2021-01-25 13:47:50 +01:00
Anthony VH
130382f2a9 Remove comment about GCC commit which didn't really relate to the code. 2021-01-24 20:02:24 +01:00
Niels Lohmann
e8dba10f53 add test 2021-01-24 17:45:48 +01:00
Niels Lohmann
c190a72f3d 👌 apply suggestion
Co-authored-by: Alexander Karzhenkov <karzhenkov@mail.ru>
2021-01-24 17:45:08 +01:00
Niels Lohmann
b83fe5dbf2 Merge pull request #2607 from nlohmann/issue1952
Add GDB pretty printer
2021-01-24 13:58:20 +01:00
Niels Lohmann
380a613f2b 🐛 fix bug in diagnostics_t 2021-01-23 20:58:59 +01:00
Anthony VH
848927ae90 Updated comments as requested. 2021-01-23 18:24:47 +01:00
Niels Lohmann
312a998873 🚸 add GDB pretty printer 2021-01-23 13:26:44 +01:00
Niels Lohmann
7b7da08fb6 📝 update documentation 2021-01-23 10:04:19 +01:00
Niels Lohmann
42218cac1b ⚗️ try 9 bytes 2021-01-21 22:01:09 +01:00
Niels Lohmann
d00ad33e46 📝 update documentation 2021-01-21 21:47:19 +01:00
Niels Lohmann
51ac6000d2 improve coverage 2021-01-21 13:36:23 +01:00
Niels Lohmann
d6ff059a90 👌 addressed review comments 2021-01-20 15:05:07 +01:00
Niels Lohmann
33379684b4 improve coverage 2021-01-17 22:52:40 +01:00
Niels Lohmann
5ec0980514 💚 fix build 2021-01-17 16:51:14 +01:00
Niels Lohmann
65107f7c9d 💚 fix build 2021-01-17 13:32:36 +01:00
Niels Lohmann
e23af7434d 🚨 fix warnings 2021-01-17 13:32:26 +01:00
Niels Lohmann
aeecc09ba1 add tests for diagnostics 2021-01-16 15:33:19 +01:00
Niels Lohmann
e9d641130d 🐛 proper JSON Pointer escape in diagnostic messages 2021-01-16 15:33:05 +01:00
Niels Lohmann
29f7abf57d 🚨 fix format-truncation warning #2572 2021-01-15 17:01:47 +01:00
Niels Lohmann
7633a21e6c 💚 fix build 2021-01-15 16:58:05 +01:00
Niels Lohmann
b0d8628c49 👌 address comments 2021-01-15 16:54:00 +01:00
Niels Lohmann
1a467a8c4e Merge branch 'develop' of https://github.com/nlohmann/json into diagnostics 2021-01-15 16:48:50 +01:00
Niels Lohmann
f8037660d0 ♻️ add iterator set_parent function 2021-01-14 22:43:52 +01:00
Niels Lohmann
92fa1d9582 Merge pull request #2582 from bl-ue/patch-1
readme: fix tilde character display
2021-01-14 22:11:33 +01:00
Niels Lohmann
0d1fb383b7 👌 address comment 2021-01-14 22:05:08 +01:00
bl-ue
c9d325b64b readme: fix tilde character display 2021-01-14 15:59:28 -05:00
Niels Lohmann
a77621687a 📝 fix comment 2021-01-14 21:56:19 +01:00
Niels Lohmann
b9d3aa4067 ♻️ split set_parent function 2021-01-14 21:55:49 +01:00
Niels Lohmann
10751d1189 Merge branch 'develop' of https://github.com/nlohmann/json into diagnostics 2021-01-14 21:38:48 +01:00
Anthony VH
6eb37e9b78 Only add conditional constexpr to get() for >= C++14 to work around errors on older compilers. 2021-01-14 12:41:30 +01:00
Anthony VH
d7c0f157c5 Merged from_json for pair and tuple to try to fix C2995 error in old MSVC versions. 2021-01-13 20:47:03 +01:00
Anthony VH
fbf6df63d9 Enable member function calls in trailing return decltype expressions for older compilers. 2021-01-13 00:12:51 +01:00
Anthony VH
fc8c584288 Regenerated single include. 2021-01-12 18:29:05 +01:00
Anthony VH
6ef1614fa9 Refactor json::get() to use priority_tag. 2021-01-12 18:28:47 +01:00
Anthony VH
6278f31d23 Simplify from_json overloads. 2021-01-12 18:28:29 +01:00
Anthony VH
6ebf274ca0 Add internal version of is_default_constructible to work around LWG 2367. 2021-01-12 18:28:00 +01:00
Anthony VH
672e8bfc1d Fixed std::pair trying to deserialize via array functions. 2021-01-11 18:16:15 +01:00
Niels Lohmann
14be8c69fe 💰 add sponsor 2021-01-11 08:00:49 +01:00
Niels Lohmann
ff57bdcc8b 🐛 fix invariants 2021-01-10 22:40:50 +01:00
Anthony VH
23f462b598 Reduced code duplication, renamed tag to identity_tag. 2021-01-10 19:23:32 +01:00
Niels Lohmann
9d0150c234 ♻️ simplify code 2021-01-10 15:04:14 +01:00
Niels Lohmann
1d6ba22f15 ♻️ simplify code 2021-01-10 14:10:59 +01:00
Niels Lohmann
a83404525e 🚨 fix warnings 2021-01-10 13:39:36 +01:00
Niels Lohmann
e160749003 ♻️ move diagnostic code in header 2021-01-09 19:21:18 +01:00
Anthony VH
1b113f73c2 Added extra tests to improve coverage. 2021-01-09 17:54:56 +01:00
Anthony VH
c0a8b45bbb Renamed template parameter and added some comments. 2021-01-09 17:45:56 +01:00
Anthony VH
1e825e4f92 Add support for deserialization of STL containers of non-default constructable types (fixes #2574). 2021-01-09 00:08:27 +01:00
Niels Lohmann
43cd5c8a4d 👌 fix constructor 2021-01-08 18:00:23 +01:00
Niels Lohmann
d4a91b7445 👌 clean operator[] 2021-01-08 11:29:28 +01:00
Niels Lohmann
e4af1ddb18 👌 fix operator[] 2021-01-08 11:21:41 +01:00
Niels Lohmann
04a0a07159 👌 fix move constructor and move assignment 2021-01-08 11:21:03 +01:00
Niels Lohmann
0617bd248d 👌 fix operator[] 2021-01-08 11:10:24 +01:00
Niels Lohmann
ddc3bb1992 👌 remove unnecessary assignment from destructor 2021-01-08 11:09:58 +01:00
Niels Lohmann
7cdf34b21e Merge branch 'develop' of https://github.com/nlohmann/json into diagnostics 2021-01-08 10:20:34 +01:00
Niels Lohmann
01f6b2e741 📄 update copyright year 2021-01-03 20:54:17 +01:00
Niels Lohmann
085d497bf7 📄 update copyright year 2021-01-03 20:28:06 +01:00
Niels Lohmann
294fa343d5 🐛 fix bug in move constructor 2021-01-03 20:06:32 +01:00
Niels Lohmann
ec0b1798bc 🚧 implement more parent relations 2021-01-02 21:36:11 +01:00
Niels Lohmann
7323a8eb4e 🚧 add tests 2021-01-02 16:13:04 +01:00
Niels Lohmann
09cd4ed125 🚧 fix preprocessor check 2021-01-02 14:10:40 +01:00
Niels Lohmann
c6e7fa21ed 🚧 fix preprocessor check 2021-01-02 13:58:05 +01:00
Niels Lohmann
ecaab32ef0 🚧 add switch for diagnostics 2021-01-02 13:45:00 +01:00
Niels Lohmann
7b047861b0 🚧 add diagnostics to exceptions 2021-01-02 13:44:41 +01:00
Niels Lohmann
a4d491e22d 🚧 better diagnostics 2021-01-01 17:23:10 +01:00
Niels Lohmann
68c3696382 Merge pull request #2560 from nlohmann/issue2324
Add switch to skip non-reproducible tests.
2020-12-31 14:35:45 +01:00
Niels Lohmann
1587acdb1d 📝 adjust wording 2020-12-31 14:34:37 +01:00
Niels Lohmann
be32cd0196 Merge branch 'develop' of https://github.com/nlohmann/json into issue2324 2020-12-31 14:33:09 +01:00
Niels Lohmann
00e3f69a26 ⬆️ update Doxyfile for doxygen 1.9.0 2020-12-30 20:31:16 +01:00
Niels Lohmann
581f92b601 Merge branch 'develop' of https://github.com/nlohmann/json into issue2324 2020-12-30 20:23:07 +01:00
Niels Lohmann
a8398a7151 Merge pull request #2550 from nlohmann/std_bytes
Allow parsing from std::byte containers
2020-12-30 08:33:52 +01:00
Niels Lohmann
fc7e181cbf ⚗️ fix string representation 2020-12-29 22:21:31 +01:00
Niels Lohmann
bdb2469c31 🚨 fix warnings 2020-12-29 21:36:30 +01:00
Niels Lohmann
c886646707 🚨 fix warning 2020-12-29 21:04:41 +01:00
Niels Lohmann
4402176df5 add regression test 2020-12-29 20:52:57 +01:00
Niels Lohmann
e4fc598466 ⚗️ add C++20 build 2020-12-29 20:45:56 +01:00
Niels Lohmann
77be4f6aaf ⚗️ add C++20 build 2020-12-29 20:32:07 +01:00
Niels Lohmann
91d7aa571f ⚗️ add C++20 build 2020-12-29 20:30:50 +01:00
Niels Lohmann
ca51dc62f2 ⚗️ try to use Clang 10 2020-12-29 20:21:43 +01:00
Niels Lohmann
433da31334 ⚗️ try to use GCC 10 2020-12-29 20:16:51 +01:00
Niels Lohmann
7b98df515f add regression test 2020-12-29 14:48:18 +01:00
Niels Lohmann
98b2152452 Merge branch 'develop' of https://github.com/nlohmann/json into std_bytes 2020-12-29 14:37:46 +01:00
Niels Lohmann
ff3863dc1d Merge pull request #2553 from jasujm/jasujm/input_adapter_custom_container
Fix compilation of input_adapter(container) in edge cases
2020-12-29 14:37:20 +01:00
Jaakko Moisio
467f622c65 Fix compilation of input_adapter(container) in edge cases
This fixes a compilation issue with the library if trying to use containers that
don't have non-member `begin()` and `end()` functions via ADL.

This patch extends the `using std::begin` and `using std::end` declarations to
also cover the return type deduction of the input_adapter() template
specialization for containers. The previous implementation only enabled the
detection of `std::begin()` and `std::end()` in the function body, making the
specialization unusable for container types that only have member `begin()` and
`end()` functions.

It is not typical to have `using` declarations in the namespace scope in a
header file. But a C++11 implementation can't rely on fully automatic return
type deduction, and needs to rely on ADL enabled helper templates. To prevent
the using declarations leaking, they are enclosed in another nested namespace.
2020-12-28 22:21:02 +01:00
Niels Lohmann
5dd06714b1 🐛 allow parsing from std::byte containers #2546 2020-12-28 11:31:21 +01:00
Niels Lohmann
dfedefb993 🚨 fix warnings 2020-12-26 17:56:16 +01:00
Alexander Karzhenkov
903b8a6e04 Build as "Debug" for coverage test 2020-12-26 21:14:16 +05:00
Niels Lohmann
f15d447522 🚨 fix warnings 2020-12-26 14:55:19 +01:00
Alexander Karzhenkov
10db9184a3 Configure Travis to build "Release" instead of "Debug" 2020-12-23 20:56:13 +05:00
Alexander Karzhenkov
7092890ff1 Properly select the build type for Travis 2020-12-22 18:24:00 +05:00
Niels Lohmann
f78d456075 Merge pull request #2540 from karzhenkov/disrupt-cxx17-tests
Travis doesn't run any tests in C++17 mode
2020-12-21 20:58:06 +01:00
Alexander Karzhenkov
9493f4beb1 Advance gcc library version for clang++-7 2020-12-20 23:50:28 +05:00
Alexander Karzhenkov
cd7acc1dc5 Include <string_view> in "nlohmann/json.hpp" when C++17 is used 2020-12-20 19:40:36 +05:00
Alexander Karzhenkov
39b8d6bd33 Restore intentionally disrupted C++17 tests 2020-12-20 12:43:35 +05:00
Alexander Karzhenkov
aae0e4959e Fix travis configuration to enable C++17 tests 2020-12-20 10:18:41 +05:00
Alexander Karzhenkov
8247a217bb Disrupt all C++17 tests to check if they are executed 2020-12-19 18:58:49 +05:00
Niels Lohmann
c3c574cf96 Merge pull request #2538 from YarikTH/feature/doctest_v2.4.3
Doctest is updated to v2.4.3
2020-12-18 22:10:42 +01:00
Krylov Yaroslav
a1772743a1 Doctest is updated to v2.4.3 2020-12-18 07:27:22 +03:00
Niels Lohmann
8593260044 Merge pull request #2537 from nlohmann/fix_warnings
Fix warnings
2020-12-17 21:48:16 +01:00
Niels Lohmann
c026e1a475 🚨 fix warnings 2020-12-16 21:44:35 +01:00
Niels Lohmann
af8c6e7aa9 Merge pull request #2533 from nlohmann/c++_future
Do not unconditionally redefine C++14 constructs
2020-12-16 20:54:09 +01:00
Niels Lohmann
5c1a5bc9c1 Merge pull request #2534 from nlohmann/clarify_license
Clarify license of is_complete_type implementation
2020-12-16 20:53:38 +01:00
Niels Lohmann
45810082d4 Merge pull request #2536 from nlohmann/shadowing
Fix a shadowing warning
2020-12-16 20:52:46 +01:00
Niels Lohmann
5cc5285fe8 🚨 fix shadowing warning 2020-12-15 22:15:36 +01:00
Niels Lohmann
94d177e09a 📄 clarify license 2020-12-14 14:58:59 +01:00
Niels Lohmann
467986fe98 ♻️ do not unconditionally redefine C++14 constructs 2020-12-14 14:31:27 +01:00
Niels Lohmann
2fc1f694ad Merge pull request #2514 from globberwops/develop
Add MAIN_PROJECT check for test and install options
2020-12-14 13:41:46 +01:00
Martin Stump
1771e9249f Remove comment on CTest inclusion
Co-authored-by: Niels Lohmann <niels.lohmann@gmail.com>
2020-12-14 10:59:38 +01:00
Niels Lohmann
85ffc85a29 🎨 amalgamate code 2020-12-14 10:38:49 +01:00
Martin Stump
ea759d0360 Compare to CMAKE_CURRENT_SOURCE_DIR for main project check 2020-12-13 20:34:51 +01:00
Niels Lohmann
97fe455ad5 Merge branch 'develop' of https://github.com/nlohmann/json into develop 2020-12-12 17:17:43 +01:00
Niels Lohmann
d028eff9e1 📦 add license to include.zip #2487 2020-12-12 17:17:38 +01:00
Niels Lohmann
be32cc4f5e Merge pull request #2525 from YarikTH/feature/doctest_v2.4.1
Doctest is updated to v2.4.1
2020-12-12 15:08:55 +01:00
Niels Lohmann
47c2004f7f Merge branch 'develop' of https://github.com/nlohmann/json into develop 2020-12-12 14:10:05 +01:00
Niels Lohmann
fc4040ce9d 🔨 clean up CI 2020-12-12 14:09:50 +01:00
Krylov Yaroslav
6390fca71a Doctest is updated to v2.4.1 2020-12-12 05:27:03 +03:00
Niels Lohmann
260be043ba Merge pull request #2406 from leozz37/develop
📝  add CPM.Cmake example
2020-12-11 14:47:18 +01:00
Niels Lohmann
5026acd70c Merge pull request #2444 from linev/fix_gcc48_warn
Change argument name "subtype" in byte_container_with_subtype
2020-12-11 13:46:41 +01:00
Sergey Linev
30dd0c0f09 Change underscore placement 2020-12-11 13:43:17 +01:00
Niels Lohmann
3ad6992f50 Merge pull request #2405 from karzhenkov/fix-json_ref-move
Fix move constructor of json_ref
2020-12-11 13:36:33 +01:00
Niels Lohmann
e3643aadf7 Merge pull request #2447 from jbzdarkid/develop
Add asserts to suppress C28020
2020-12-11 13:27:52 +01:00
Niels Lohmann
d9e2b191ad Merge pull request #2512 from YarikTH/issue2490
Ranged insert test section is added in unit-ordered_json.cpp
2020-12-11 13:21:33 +01:00
Martin Stump
790508887e Set MAIN_PROJECT=OFF initially 2020-12-09 12:39:44 +01:00
Martin Stump
5c589dd138 Add MAIN_PROJECT check for test and install options 2020-12-09 11:37:01 +01:00
Krylov Yaroslav
972c15f26e ordered_map::insert(InputIt first, InputIt last) is added 2020-12-07 20:15:41 +03:00
Krylov Yaroslav
5155cc2c48 Ranged insert test section is added in unit-ordered_json.cpp 2020-12-07 19:47:41 +03:00
Niels Lohmann
d8d8cbf6e0 🔨 fix site URL 2020-12-07 15:30:28 +01:00
Niels Lohmann
3322c9df6e 🔒 use HTTPS 2020-12-06 14:41:48 +01:00
jbzdarkid
cde29b3a11 Merge branch 'develop' of https://github.com/nlohmann/json into develop 2020-12-03 12:47:34 -08:00
Niels Lohmann
eaac918034 👷 remove clang9 CI 2020-12-02 08:58:45 +01:00
Joseph Blackman
9f45d314d5 Apply suggestions from code review
Co-authored-by: Niels Lohmann <niels.lohmann@gmail.com>
2020-11-24 11:02:58 -08:00
jbzdarkid
64ff1cf90d Add asserts to suppress C28020 2020-10-26 13:57:38 -07:00
Sergey Linev
71cb7d12da Change argument name "subtype" in byte_container_with_subtype
Fix warnings on older g++ 4.8

declaration of ‘subtype’ shadows a member of 'this'
2020-10-23 13:52:24 +02:00
Alexander Karzhenkov
42a9dc0bc3 Improve json_ref implementation 2020-09-27 10:45:21 +05:00
leozz37
b273f28dae 📝 add CPM.Cmake example 2020-09-26 19:16:03 -03:00
Niels Lohmann
fd7a9f6007 💰 add sponsor 2020-09-23 19:55:03 +02:00
Niels Lohmann
1bcabd9e83 📝 fix URLs to documentation 2020-09-02 22:25:32 +02:00
Niels Lohmann
1047d09b2a annotate non-reproducible tests #2324 2020-08-30 13:23:34 +02:00
Niels Lohmann
d9843fc9fc 📝 add note for Intel compilers #2346 2020-08-29 12:46:47 +02:00
Niels Lohmann
6030a11051 Merge pull request #2367 from nlohmann/hedley14
Update Hedley
2020-08-26 08:13:43 +02:00
Niels Lohmann
14f8be11ce Merge branch 'develop' of https://github.com/nlohmann/json into hedley14 2020-08-24 16:12:11 +02:00
Niels Lohmann
b9d76516a2 Merge pull request #2363 from nlohmann/issue2360
Fix and extend documentation of discarded values
2020-08-20 11:38:43 +02:00
Niels Lohmann
9d81eedb42 📝 fix and extend documentation of discarded values 2020-08-19 20:26:30 +02:00
Niels Lohmann
b386f4de0b 📝 fix and extend documentation of discarded values 2020-08-19 20:26:06 +02:00
Niels Lohmann
3be6ee3525 🚚 remove < from filename to fix Windows build 2020-08-16 21:39:40 +02:00
Niels Lohmann
fe507a7ee8 🚚 remove < from filename to fix Windows build 2020-08-16 21:36:21 +02:00
Niels Lohmann
6b04f05eba 📝 add more API documentation 2020-08-16 21:23:44 +02:00
Niels Lohmann
5c4cc20ed8 📝 add more API documentation 2020-08-16 20:48:10 +02:00
Niels Lohmann
a430d25f22 📝 add more API documentation 2020-08-16 14:48:48 +02:00
Niels Lohmann
fb5c20134f 📝 add more API documentation 2020-08-16 14:27:26 +02:00
Niels Lohmann
d8ed98a7af 📝 add more API documentation 2020-08-15 15:18:07 +02:00
Niels Lohmann
1ce0ed5a52 👷 ignore gh-pages branch in CircleCI 2020-08-14 13:58:55 +02:00
Niels Lohmann
0c2088823d 👷 ignore gh-pages branch in CircleCI 2020-08-14 13:56:42 +02:00
Niels Lohmann
fb8adb8e93 👷 ignore gh-pages branch in CircleCI 2020-08-14 13:52:42 +02:00
Niels Lohmann
f6c2947f1e 📝 add more API documentation 2020-08-14 13:47:54 +02:00
Niels Lohmann
0356e0c75b 📝 add more API documentation 2020-08-14 13:05:16 +02:00
Niels Lohmann
6674561d6a 📝 add more API documentation 2020-08-14 10:48:32 +02:00
Niels Lohmann
772f37c12d Merge pull request #2354 from rbuch/develop
Fix typos in documentation
2020-08-14 06:04:56 +02:00
Ronak Buch
67d822d951 Fix typos in documentation 2020-08-13 15:44:58 -04:00
Niels Lohmann
298420263b 🚚 remove quotes from filename to fix Windows build 2020-08-13 15:12:41 +02:00
Niels Lohmann
dd2fb3b454 📝 add more API documentation 2020-08-13 15:03:28 +02:00
Niels Lohmann
ce6adc447a 📝 add more API documentation 2020-08-13 14:04:08 +02:00
Niels Lohmann
d360fec216 📝 add offline pages for docset 2020-08-13 13:35:05 +02:00
Niels Lohmann
178125ff9b 📝 add docset 2020-08-13 10:52:20 +02:00
Niels Lohmann
8d0aa09ab5 Merge pull request #2352 from nlohmann/private_macro
Remove "#define private public" from tests
2020-08-13 10:06:59 +02:00
Niels Lohmann
874f49e945 📝 add more API documentation 2020-08-12 14:29:25 +02:00
Niels Lohmann
fe89049aee 📝 add more API documentation 2020-08-12 13:41:59 +02:00
Niels Lohmann
9d726c25d5 ♻️ remove "#define private public" 2020-08-12 13:30:06 +02:00
Niels Lohmann
411fc3249b ⬆️ Hedley 14 (dev branch) 2020-08-12 13:00:57 +02:00
Niels Lohmann
b888afe5f4 Merge pull request #2349 from nlohmann/issue2348
Remove -Wimplicit-fallthrough warning
2020-08-11 09:05:02 +02:00
Niels Lohmann
37ce871eeb Merge pull request #2347 from nlohmann/no_exceptions
Fix code to work without exceptions
2020-08-10 22:47:27 +02:00
Niels Lohmann
dd8cb2acc1 🚨 remove -Wimplicit-fallthrough warning #2348 2020-08-10 20:48:39 +02:00
Niels Lohmann
4080d0b1a4 add test to compile without exceptions 2020-08-10 09:48:11 +02:00
Niels Lohmann
1b28a58280 Merge remote-tracking branch 'origin/develop' into develop 2020-08-10 09:24:25 +02:00
Niels Lohmann
824d55bf26 📝 fix documentation #1668 2020-08-10 09:24:11 +02:00
Niels Lohmann
e030d26089 Merge pull request #2344 from ongjunjie/fix-cmake-overwrite-compiler
fix cmake script overwriting compiler path
2020-08-08 12:15:10 +02:00
Jun Jie
41a99567e0 fix cmake script overwriting compiler path
This fixes #2343
2020-08-07 16:08:02 +08:00
Niels Lohmann
db78ac1d77 Merge branch 'release/3.9.1' into develop 2020-08-06 13:49:29 +02:00
Niels Lohmann
b3e5cb7f20 🔖 set version to 3.9.1 2020-08-06 13:45:29 +02:00
Niels Lohmann
f4155e4727 Merge pull request #2333 from nlohmann/fallthrough
Fix fallthrough warning
2020-08-01 15:32:21 +02:00
Niels Lohmann
8a54617240 Merge pull request #2332 from nlohmann/issue2330
Fix lexer to properly cope with repeated comments
2020-08-01 12:29:33 +02:00
Niels Lohmann
0326e4e2a6 🚨 fix fallthrough warning 2020-07-31 19:24:03 +02:00
Niels Lohmann
3888b1642a 🐛 fix lexer to properly cope with repeated comments #2330 2020-07-31 18:59:22 +02:00
Niels Lohmann
1da931730a Merge pull request #2327 from nlohmann/issue2326
Fix name of Homebrew formula in documentation
2020-07-31 08:00:08 +02:00
Niels Lohmann
1eedee5e4e Merge pull request #2319 from nlohmann/issue2315
Fix a bug due to missing overloads in ordered_map container
2020-07-31 07:59:18 +02:00
Niels Lohmann
501ad6fc59 📝 fix name of Homebrew formula #2326 2020-07-30 13:31:00 +02:00
Niels Lohmann
35daa5c00b Merge pull request #2320 from wx257osn2/fix-typo
fix typo
2020-07-30 12:27:16 +02:00
Niels Lohmann
2326abc547 ♻️ split regression tests 2020-07-30 12:13:05 +02:00
Niels Lohmann
f13af83a94 🐛 add more functions from std::map to nlohmann::ordered_map 2020-07-28 21:47:06 +02:00
I
2d3fe9d135 fix typo 2020-07-28 21:54:53 +09:00
Niels Lohmann
e590604822 🐛 fix a bug due to missing overloads in ordered_map container 2020-07-28 14:20:31 +02:00
Niels Lohmann
1b8efed06f Merge pull request #2318 from eli-schwartz/installfix
cmake: install pkg-config file relative to current_binary_dir
2020-07-28 13:25:04 +02:00
Niels Lohmann
7d01a9e875 Merge branch 'develop' into installfix 2020-07-28 13:24:54 +02:00
Niels Lohmann
b3da8b325a Merge pull request #2314 from xvitaly/fix-path
Fixed installation of pkg-config file on other than Ubuntu
2020-07-28 13:24:08 +02:00
Eli Schwartz
aa06a4761e cmake: install pkg-config file relative to current_binary_dir
When the testsuite is enabled, the "cmake_add_subdirectory" test
adds a second copy of the project into the build configuration, and the
project files are installed twice.

This becomes super problematic when it tries to install a file from
CMAKE_BINARY_DIR which is only available in CMAKE_CURRENT_BINARY_DIR
and bombs out with the following error message:

```
[...]
-- Installing: <DESTDIR>/usr/lib/cmake/nlohmann_json/nlohmann_jsonTargets.cmake
CMake Error at test/cmake_add_subdirectory/nlohmann_json/cmake_install.cmake:73 (file):
  file INSTALL cannot find
  "......./nlohmann-json/builddir/test/cmake_add_subdirectory/nlohmann_json.pc":
  No such file or directory.
Call Stack (most recent call first):
  test/cmake_add_subdirectory/cmake_install.cmake:47 (include)
  test/cmake_install.cmake:49 (include)
  cmake_install.cmake:94 (include)
```
2020-07-27 18:15:18 -04:00
Vitaly Zaitsev
8f9dc7eabe Fixed installation of pkg-config file on other than Ubuntu
distributions.

Signed-off-by: Vitaly Zaitsev <vitaly@easycoding.org>
2020-07-27 16:54:16 +02:00
Niels Lohmann
d34771cafc Merge branch 'release/3.9.0' into develop 2020-07-27 15:54:39 +02:00
Niels Lohmann
e110667d21 🔖 set version to 3.9.0 2020-07-27 15:48:09 +02:00
Niels Lohmann
c006fc9bec 📝 add more documentation 2020-07-27 14:07:13 +02:00
Niels Lohmann
84c0c76849 🚧 add Clang-Tidy configuration 2020-07-27 09:15:57 +02:00
Niels Lohmann
2f05f5175c 🚧 add Clang-Tidy configuration 2020-07-26 22:38:14 +02:00
Niels Lohmann
1b06184f22 👥 update list of contributors 2020-07-26 20:50:04 +02:00
Niels Lohmann
84a899f511 👥 update list of contributors 2020-07-26 14:54:51 +02:00
Niels Lohmann
7a4841a42a 📝 add binary() function to SAX documentation 2020-07-26 14:40:46 +02:00
Niels Lohmann
bbcdf18ba5 🚚 move test utils header file 2020-07-26 14:07:34 +02:00
Niels Lohmann
e22cbacc41 🚨 fix warning 2020-07-26 12:12:17 +02:00
Niels Lohmann
67ed63b196 Merge pull request #2312 from nlohmann/docs
Update documentation
2020-07-26 10:06:01 +02:00
Niels Lohmann
a34070d36a fix test for meta() function 2020-07-25 22:28:14 +02:00
Niels Lohmann
9c75c7eace 🔧 clean generated XML files 2020-07-25 22:04:42 +02:00
Niels Lohmann
7bd6242f04 📝 add more documentation 2020-07-25 22:00:28 +02:00
Niels Lohmann
808aca41aa Merge pull request #2305 from AODQ/develop
fixes unused variable 'ex' for #2304
2020-07-25 21:51:54 +02:00
Niels Lohmann
63e7c40e35 Merge pull request #2297 from nlohmann/issue2286
Add support for high-precision numbers in UBJSON encoding
2020-07-25 21:50:53 +02:00
Niels Lohmann
1816aae862 Merge branch 'develop' of https://github.com/nlohmann/json into docs 2020-07-25 21:48:51 +02:00
Niels Lohmann
980f8c6f61 🔀 merge develop branch 2020-07-25 21:45:47 +02:00
Niels Lohmann
42f8708940 Merge branch 'develop' of https://github.com/nlohmann/json into issue2286
 Conflicts:
	single_include/nlohmann/json.hpp
2020-07-25 21:44:58 +02:00
Niels Lohmann
40b78d3847 Merge pull request #2308 from nlohmann/cbor_tags
Fix bug in CBOR tag handling
2020-07-25 19:43:11 +02:00
Niels Lohmann
fad14aabe7 📝 update output of meta function 2020-07-25 14:41:06 +02:00
Niels Lohmann
6e5be17b62 📝 add more documentation 2020-07-25 14:40:50 +02:00
Niels Lohmann
62f98b7537 Merge branch 'develop' of https://github.com/nlohmann/json into docs 2020-07-25 11:20:13 +02:00
Niels Lohmann
a1dbfcd736 Merge pull request #2306 from jwittbrodt/develop
added inline to NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE macro
2020-07-25 10:52:56 +02:00
Niels Lohmann
c00c3162b2 Merge branch 'develop' into develop 2020-07-25 10:52:42 +02:00
Niels Lohmann
448ceb2e12 Merge pull request #2303 from nlohmann/cleanup
Cleanup
2020-07-25 05:41:51 +02:00
aodq
15ec0fe150 change c-style cast to static_cast for #2304 2020-07-24 16:21:30 -04:00
Niels Lohmann
58167173a2 📝 add more documentation 2020-07-24 15:25:53 +02:00
Niels Lohmann
d8d499ce9b 📝 add more documentation 2020-07-24 14:35:52 +02:00
Niels Lohmann
480ad529e3 🐛 fix bug in CBOR tag handling 2020-07-24 14:18:39 +02:00
Niels Lohmann
a84370c61f 📝 add more documentation 2020-07-24 14:04:58 +02:00
Niels Lohmann
33662417c1 improve coverage 2020-07-24 09:32:03 +02:00
Jonas Wittbrodt
0f22ed0b5b added inline to DEFINE_TYPE macro 2020-07-23 19:24:21 +02:00
aodq
12885446d8 fixes unused variable 'ex' for #2304 2020-07-23 13:21:38 -04:00
Niels Lohmann
3c7dc635e7 🙈 extend ignore list 2020-07-23 14:19:57 +02:00
Niels Lohmann
27232455c8 📝 update documentation 2020-07-23 14:17:02 +02:00
Niels Lohmann
59cb7674be 📝 update documentation 2020-07-23 14:15:20 +02:00
Niels Lohmann
0cd120f7e1 🚨 fix UBSAN warning 2020-07-23 14:06:09 +02:00
Niels Lohmann
bba57cc4af 🚨 fix UBSAN warning 2020-07-23 14:02:49 +02:00
Niels Lohmann
e571c67c0d 🚨 fix implicit conversion warning when opening binary file 2020-07-23 14:02:12 +02:00
Niels Lohmann
43e07bb92d Merge pull request #2301 from nlohmann/regression2281
Add test with multiple translation units
2020-07-23 13:14:24 +02:00
Niels Lohmann
fb22233f34 🔊 add message if implicit conversions are switched off 2020-07-23 13:11:48 +02:00
Niels Lohmann
f9b71afebf 🚚 unify cmake build dir names 2020-07-23 13:02:53 +02:00
Niels Lohmann
8159091d8f 🔀 rename variable to avoid shadowing 2020-07-23 12:58:09 +02:00
Niels Lohmann
230dcfb7a3 🚨 add prefix to avoid shadowing 2020-07-23 12:57:52 +02:00
Niels Lohmann
b315fe484a 🔀 merge develop branch 2020-07-23 12:30:26 +02:00
Niels Lohmann
a33c3fdf25 Merge branch 'develop' of https://github.com/nlohmann/json into issue2286
 Conflicts:
	single_include/nlohmann/json.hpp
2020-07-23 12:30:07 +02:00
Niels Lohmann
88122467bd ♻️ pull code into function 2020-07-23 12:16:18 +02:00
Niels Lohmann
a048b72fe1 Merge pull request #1559 from theodelrieu/feat/explicit_conversion_operator
Feat/explicit conversion operator
2020-07-23 08:52:51 +02:00
Niels Lohmann
484029b51c Merge pull request #2299 from nlohmann/fix_warnings
Fix unused parameter
2020-07-22 18:43:33 +02:00
Niels Lohmann
a6d112ffbf add regression test for #2281 2020-07-22 13:39:40 +02:00
Niels Lohmann
2301bd1177 add regression test for #2281 2020-07-22 13:24:07 +02:00
Niels Lohmann
c4356c68e0 add regression test for #2281 2020-07-22 12:38:39 +02:00
Niels Lohmann
4d63252c6c add regression test for #2281 2020-07-22 12:23:58 +02:00
Niels Lohmann
a7c4c84d68 add regression test for #2281 2020-07-22 12:03:37 +02:00
Théo DELRIEU
797329315a add a CI job for explicit conversions on every os 2020-07-22 10:49:01 +02:00
Théo DELRIEU
74b446f5fd add a switch to enable implicit conversions (defaults to true)
wrap implicit conversions tests around the JSON_USE_IMPLICIT_CONVERSIONS
macro
2020-07-22 10:49:01 +02:00
Niels Lohmann
2cd10a7405 Merge pull request #2300 from nlohmann/gihub_actions
Merge Gitlab actions
2020-07-22 09:45:55 +02:00
Niels Lohmann
6bd38a2cb9 👷 merge Gitlab actions 2020-07-22 09:02:55 +02:00
Niels Lohmann
8b14c9b305 🚨 fix warnings 2020-07-21 23:00:56 +02:00
Niels Lohmann
3bb43ecd51 🔀 merge develop branch 2020-07-21 22:02:14 +02:00
Niels Lohmann
3249a4d821 Merge branch 'develop' of https://github.com/nlohmann/json into issue2286
 Conflicts:
	single_include/nlohmann/json.hpp
2020-07-21 22:01:32 +02:00
Niels Lohmann
96e9f66025 🔇 remove debug output 2020-07-21 22:01:15 +02:00
Niels Lohmann
8046754c15 🔊 add debug output to tests 2020-07-21 12:44:38 +02:00
Niels Lohmann
b1903fff1f 💚 fix build 2020-07-21 09:09:30 +02:00
Niels Lohmann
1339d6b683 🐛 add missing EOF check 2020-07-20 22:40:28 +02:00
Niels Lohmann
a9117828e1 🚨 fix warnings 2020-07-20 22:38:00 +02:00
Niels Lohmann
8344857764 Merge pull request #2287 from pfeatherstone/develop
Serialisation macros: increase upper bound on number of member variables
2020-07-20 21:35:55 +02:00
Niels Lohmann
4a5277d09d 📝 update documentation 2020-07-20 14:11:43 +02:00
Niels Lohmann
8aa6da61dc 🚧 support for UBJSON high-precision numbers #2286 2020-07-20 13:57:19 +02:00
Niels Lohmann
7360e09830 🚧 support for UBJSON high-precision numbers #2286 2020-07-20 13:12:20 +02:00
pf
35b899e988 [JSON] initialise all member variables. Maybe this will shut valgrind up. std::tie probably wasn't the problem initially 2020-07-20 10:51:43 +01:00
Niels Lohmann
7cf2fe149c 🚧 support for UBJSON high-precision numbers #2286 2020-07-20 09:42:37 +02:00
pf
7660ea12f6 [JSON] drop use of std::tie and std::tupe for operator== overload. valgrind and clang < 4 complain 2020-07-20 08:31:56 +01:00
Niels Lohmann
893eda8353 Merge pull request #2294 from jprochazk/develop
fix eof for get_binary and get_string
2020-07-20 08:02:03 +02:00
pf
678d310b85 [JSON] don't know why CHECK doesn't like "CHECK(obj1 == obj2)". So using a temporary bool. 2020-07-19 21:29:39 +01:00
pf
e83ddb185d [JSON] use CHECK from doctest 2020-07-19 21:25:27 +01:00
pf
254f0e3cee [JSON] CHECK in doctest only accepts std::string ? Use assert statement instead. Does the job 2020-07-19 18:22:16 +01:00
pf
578217eaa3 [JSON] doctest: need another section ? 2020-07-19 18:17:03 +01:00
pf
6d9b2040ab [JSON] as per Nlohmann's suggestion, added unit tests for the (de)serialisation macros 2020-07-19 18:12:13 +01:00
pf
75a6888d55 [JSON] since we no longer use a netbeans project for the (de)serialisation macro building code, can revert the changes made to the .gitignore file 2020-07-19 18:11:37 +01:00
pf
8f14aaa13f [JSON] as per Nlohmann's suggestion, moved the macro builder code to third_party directory 2020-07-19 18:10:08 +01:00
jprochazk
851315c878 add regression test 2020-07-19 18:35:58 +02:00
pf
f7374c9a8d Merge branch 'develop' of https://github.com/pfeatherstone/json into develop 2020-07-19 17:32:35 +01:00
pf
0a158ee830 [JSON] rough and ready code for generating (de)serialisation macros. Current upper bound on number of member variables is set to 64 2020-07-19 17:32:16 +01:00
pf
21bd6e971b [JSON] - dirty code for building intrusive and non-intrusive serialisation/deserialisation macros for custom types
- updated .gitignore file to ignore private netbeans project configurations
2020-07-19 17:26:56 +01:00
pf
0b744e1ed0 [JSON] - dirty code for building intrusive and non-intrusive serialisation/deserialisation macros for custom types
- used code to increase the upper bound on number of member variables to 64
2020-07-19 17:26:56 +01:00
pf
8a045713ed [JSON] - dirty code for building intrusive and non-intrusive serialisation/deserialisation macros for custom types
- used code to increase the upper bound on number of member variables to 64
2020-07-19 17:26:56 +01:00
pf
a575008c48 [JSON] - dirty code for building intrusive and non-intrusive serialisation/deserialisation macros for custom types
- updated .gitignore file to ignore "dist" and "build" directories in netbeans project
2020-07-19 17:26:56 +01:00
pf
5eb739a585 [JSON] - dirty code for building intrusive and non-intrusive serialisation/deserialisation macros for custom types
- netbeans project configurations
2020-07-19 17:26:56 +01:00
pf
68122fe0ed [JSON] dirty code for building intrusive and non-intrusive serialisation/deserialisation macros for custom types 2020-07-19 17:26:56 +01:00
Niels Lohmann
b1da58b76b Merge pull request #2282 from nlohmann/missing_sax_check
Add static assertion for missing binary function in SAX interface
2020-07-19 18:09:08 +02:00
Niels Lohmann
1fd6c5882a Merge pull request #2285 from T0b1-iOS/develop
add inline specifier for detail::combine
2020-07-19 17:55:51 +02:00
jprochazk
d371a5283c run amalgamate 2020-07-19 10:57:17 +02:00
jprochazk
ab25de05f7 fix: return -> result.push_back 2020-07-19 10:51:13 +02:00
jprochazk
a3a9d5665e add break to binary_reader::get_binary and get_string 2020-07-19 09:35:49 +02:00
pf
0d2d088b97 [JSON] - dirty code for building intrusive and non-intrusive serialisation/deserialisation macros for custom types
- updated .gitignore file to ignore private netbeans project configurations
2020-07-18 16:13:56 +01:00
pf
c122d8a94f [JSON] - dirty code for building intrusive and non-intrusive serialisation/deserialisation macros for custom types
- used code to increase the upper bound on number of member variables to 64
2020-07-18 16:12:49 +01:00
pf
4706d6e976 [JSON] - dirty code for building intrusive and non-intrusive serialisation/deserialisation macros for custom types
- used code to increase the upper bound on number of member variables to 64
2020-07-18 16:12:27 +01:00
pf
9afe757648 [JSON] - dirty code for building intrusive and non-intrusive serialisation/deserialisation macros for custom types
- updated .gitignore file to ignore "dist" and "build" directories in netbeans project
2020-07-18 16:11:34 +01:00
pf
8730af0788 [JSON] - dirty code for building intrusive and non-intrusive serialisation/deserialisation macros for custom types
- netbeans project configurations
2020-07-18 16:10:32 +01:00
pf
beb1fb48f0 [JSON] dirty code for building intrusive and non-intrusive serialisation/deserialisation macros for custom types 2020-07-18 16:08:29 +01:00
T0b1-iOS
88243b3f8c run amalgamate 2020-07-18 07:09:56 +02:00
T0b1-iOS
281349d0d6 add inline specifier for detail::combine 2020-07-18 06:28:11 +02:00
Niels Lohmann
43ab8a2357 Merge pull request #2279 from nlohmann/issue1818
Add test for target_include_directories
2020-07-18 06:12:57 +02:00
Niels Lohmann
7fc4b2901a 🚸 add static assertion for missing binary function in SAX interface 2020-07-17 20:41:11 +02:00
Niels Lohmann
2fd57d3ed1 add test for target_include_directories #1818 2020-07-17 14:26:22 +02:00
Niels Lohmann
a10d486e36 Merge pull request #2244 from matthewbauer/tag-cbor
Tag binary values in cbor if set
2020-07-17 14:05:48 +02:00
Niels Lohmann
e65cc9dccb Merge pull request #2274 from nlohmann/analyzers
Clean up maintainer Makefiles and fix some linter warnings
2020-07-17 14:01:19 +02:00
Niels Lohmann
548e7e54c9 Merge pull request #2273 from nlohmann/issue1968
Add option to ignore CBOR tags
2020-07-17 13:59:55 +02:00
Niels Lohmann
6023a7ccd9 Merge branch 'develop' into analyzers 2020-07-17 13:59:32 +02:00
Niels Lohmann
270f1ae482 Merge pull request #2269 from nlohmann/hash
Hash function without allocation
2020-07-17 13:57:47 +02:00
Niels Lohmann
d047b3d495 🚨 remove linter warning 2020-07-16 14:45:39 +02:00
Niels Lohmann
26196f25f6 🔥 remove test Makefile targets (all handled by CMake) 2020-07-16 13:38:25 +02:00
Niels Lohmann
3d60befde3 🔧 adjust analysis targets 2020-07-16 12:14:06 +02:00
Niels Lohmann
7f6ea47bdb 🔧 adjust analysis targets 2020-07-16 09:44:07 +02:00
Niels Lohmann
4c59d6aaef 🔥 remove leftover 2020-07-16 09:43:35 +02:00
Niels Lohmann
23c97f4aa5 Merge pull request #2268 from t-b/feature/add-clang-cl
Add ClangCL for MSVC
2020-07-16 07:40:58 +02:00
Niels Lohmann
93cdf05928 add tests 2020-07-15 14:23:22 +02:00
Niels Lohmann
01e196f6b6 Merge branch 'develop' of https://github.com/nlohmann/json into issue1968 2020-07-15 13:50:00 +02:00
Niels Lohmann
b821ed074f 💡 add documentation 2020-07-15 13:45:16 +02:00
Niels Lohmann
496ddd127c 💚 make test deterministic 2020-07-15 12:14:30 +02:00
Niels Lohmann
9449dfcc6a 💚 add test cases for hash 2020-07-15 09:27:01 +02:00
Thomas Braun
25a59b59f2 Github Actions: Add ClangCL on Windows
MS Visual Studio 2019 has builtin support for other compiler toolsets [1].

This commit adds support for compiling using LLVM/Clang 10 using Visual
Studio.

ClangCL pretends to be MSVC so the usual MSVC flags apply, see also [2].
For detecting if ClangCL is used, newer cmake verisons (>= 3.15) have
builtin support using CMAKE_CXX_COMPILER_FRONTEND_VARIANT [3], for older
ones a workaround is available using CMAKE_CXX_SIMULATE_ID [4].

[1]: https://devblogs.microsoft.com/cppblog/clang-llvm-support-in-visual-studio/
[2]: https://clang.llvm.org/docs/UsersManual.html#clang-cl
[3]: https://stackoverflow.com/a/10055571
[4]: 4fe34b2d29
2020-07-14 16:02:44 +02:00
Thomas Braun
6d7f8b3793 README.md: Remove trailing whitespace 2020-07-14 15:36:42 +02:00
Niels Lohmann
33b0bed7fe 💚 fix compilation 2020-07-14 14:34:55 +02:00
Niels Lohmann
5b229f4cce hash function without allocation 2020-07-14 14:31:19 +02:00
Niels Lohmann
1a521cbd36 Merge pull request #2264 from t-b/feature/use-proper-SED-in-makefile
Makefile: Always use SED variable
2020-07-14 14:07:33 +02:00
Niels Lohmann
8921e5e5db Merge pull request #2262 from nlohmann/more_ci
Add Xcode 12 CI
2020-07-13 21:04:57 +02:00
Thomas Braun
88adffdaba Makefile: Always use SED variable
We need to have a proper sed, even on MacOSX. So let's use the variable
introduced in 191aa0fd (🔧 overworked maintaner targets,
2019-03-28) in more places.
2020-07-13 14:44:40 +02:00
Niels Lohmann
938b867450 📝 add Xcode 12 to CI list 2020-07-12 21:45:00 +02:00
Niels Lohmann
3952739189 add CBOR tag handler #1968 2020-07-12 16:51:43 +02:00
Niels Lohmann
a244531627 ♻️ overwork Travis YAML 2020-07-12 15:33:16 +02:00
Niels Lohmann
cf741313b3 📝 add Clang on Windows to CI list 2020-07-12 15:31:17 +02:00
Niels Lohmann
e316f5c5b6 Merge pull request #2258 from nlohmann/issue2179
Add ordered_json specialization with ordered object keys
2020-07-12 13:11:23 +02:00
Niels Lohmann
486812904f Merge pull request #2259 from nlohmann/clang_windows
Make library work with Clang on Windows
2020-07-12 13:09:35 +02:00
Niels Lohmann
4d28694756 ♻️ replace further alternative operators 2020-07-11 19:28:58 +02:00
Niels Lohmann
738c83d6af 💚 add test for ordered_map 2020-07-11 19:24:32 +02:00
Niels Lohmann
8d295235a5 🔥 remove unused boolean_operators.hpp header 2020-07-11 19:20:44 +02:00
Niels Lohmann
6477b9b20a ♻️ replace further alternative operators 2020-07-11 14:09:06 +02:00
Niels Lohmann
7f923424b3 🔀 merge develop branch and resolve conflicts 2020-07-11 14:05:02 +02:00
Niels Lohmann
dc06f100be Merge branch 'develop' of https://github.com/nlohmann/json into clang_windows
 Conflicts:
	include/nlohmann/detail/input/binary_reader.hpp
	include/nlohmann/detail/input/json_sax.hpp
	include/nlohmann/detail/input/lexer.hpp
	include/nlohmann/detail/input/parser.hpp
	include/nlohmann/detail/json_pointer.hpp
	include/nlohmann/detail/output/serializer.hpp
	include/nlohmann/json.hpp
	single_include/nlohmann/json.hpp
2020-07-11 14:04:40 +02:00
Niels Lohmann
889f269a6c ♻️ replace further alternative operators 2020-07-11 13:51:25 +02:00
Niels Lohmann
b2240f7508 🏁 remove failing code for Clang/Windows 2020-07-11 13:46:04 +02:00
Niels Lohmann
609a0046c4 ♻️ replace further alternative operators 2020-07-11 13:39:14 +02:00
Niels Lohmann
3a80823ff8 🔀 merge develop branch and resolve conflicts 2020-07-11 13:21:13 +02:00
Niels Lohmann
9c21285133 Merge branch 'develop' of https://github.com/nlohmann/json into issue2179
 Conflicts:
	single_include/nlohmann/json.hpp
2020-07-11 13:20:16 +02:00
Niels Lohmann
5f146cb853 Merge pull request #2206 from gatopeich/issue2179
Simple ordered_json that works on all supported compilers
2020-07-11 13:15:40 +02:00
gatopeich
47d154dd49 Remove redundant comment 2020-07-11 00:34:12 +01:00
gatopeich
f9a1fec272 Remove redundant comment 2020-07-11 00:34:02 +01:00
Niels Lohmann
cbafed3494 ⬇️ require CMake 3.1 2020-07-10 12:53:48 +02:00
gatopeich
f62b4626be Removing comment about AllocatorType per review request 2020-07-09 21:12:14 +01:00
gatopeich
0eb7b0a991 Update README.md per review comments
Co-authored-by: Niels Lohmann <niels.lohmann@gmail.com>
2020-07-09 20:47:19 +01:00
Niels Lohmann
75d5d05993 Merge pull request #2253 from ericonr/pkgconf
Add pkg-config file
2020-07-09 20:42:42 +02:00
Niels Lohmann
4c7bd014d9 Merge pull request #2242 from nlohmann/issue2239
Make assert configurable via JSON_ASSERT
2020-07-09 15:13:12 +02:00
Niels Lohmann
d740622f96 📝 add documentation for macros 2020-07-09 13:23:33 +02:00
Érico Rolim
251fce819c README: add explanation on how to use pkg-config. 2020-07-09 03:59:53 -03:00
Palmer Dabbelt
c7d18c1625 cmake: Generate and install a pkg-config file.
The meson builds install a pkg-config file, but the cmake builds don't.
This adds a pkg-config file to the cmake builds that is functionally
equivalent to the one generated from meson.
2020-07-09 03:59:53 -03:00
Niels Lohmann
0306525cdb Merge pull request #2251 from nlohmann/fix_2181
Fix regression from #2181
2020-07-09 07:33:03 +02:00
Niels Lohmann
f774a32d2b fix test 2020-07-08 14:47:22 +02:00
Niels Lohmann
e3e9ccfc02 🚑 fix regression from #2181 2020-07-08 14:02:28 +02:00
Niels Lohmann
1b04092c5c fix test 2020-07-08 12:38:46 +02:00
Niels Lohmann
d019ddfcdb 👷 add code scanning 2020-07-08 12:25:53 +02:00
Matthew Bauer
dd08f7705f Add simple test for cbor byte 2020-07-06 18:06:10 -04:00
Niels Lohmann
28ef87370b 🚨 fix warning 2020-07-06 13:19:06 +02:00
Niels Lohmann
99fc6b16ab Merge branch 'develop' of https://github.com/nlohmann/json into issue2239 2020-07-06 12:52:59 +02:00
Niels Lohmann
ba8174041e add test case for JSON_ASSERT 2020-07-06 12:52:48 +02:00
Niels Lohmann
efcc826ecb 🚨 fix warning 2020-07-06 12:37:39 +02:00
Niels Lohmann
98b1c6d302 🚩 use JSON_ASSERT(x) instead of assert(x) 2020-07-06 12:22:31 +02:00
Niels Lohmann
b04dc055b2 Merge pull request #2233 from nlohmann/issue2175
Add specialization of get_to
2020-07-06 07:58:52 +02:00
Niels Lohmann
197c3d4fb0 Merge pull request #2232 from nlohmann/ignore_documentation
Refine documentation of error_handler parameter
2020-07-06 07:58:28 +02:00
Agustín F. Pozuelo
803c16e5af Clean-up unintended changes to whitespace 2020-07-03 10:26:05 +01:00
Agustín F. Pozuelo
25f5d75e6e Fix compilation for xcode 9.x 2020-07-03 01:44:18 +01:00
Agustín F. Pozuelo
93770467a1 Precisely 4 template arguments for the sake of clang 3.6 (?) 2020-07-03 01:28:54 +01:00
Agustín F. Pozuelo
0fc261f0f2 Make ordered_map compatible with GCC 5.5 2020-07-03 00:33:31 +01:00
Matthew Bauer
e54f03f73b Tag binary values in cbor if set
CBOR has tags, which work similarly to "subtype"s:

https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml

Unsure if this makes sense. Note that the subtype must just be one
byte wide.
2020-07-02 17:40:02 -04:00
Niels Lohmann
f59f4a2b61 💚 fix build 2020-06-30 19:55:40 +02:00
Niels Lohmann
c7e079cc98 🚑 add specialization of get_to #2175 2020-06-30 14:26:52 +02:00
Niels Lohmann
ad6eadeb70 📝 refine documentation of error_handler parameter 2020-06-30 13:59:43 +02:00
gatopeich
49f26a0250 Have 4 template parameters for ordered_map 2020-06-29 17:32:55 +01:00
Niels Lohmann
eb7376bb13 Merge pull request #2225 from nlohmann/issue2175
Simplify conversion from/to custom types
2020-06-29 14:41:09 +02:00
Niels Lohmann
470f7c0c68 📝 add documentation 2020-06-29 13:43:06 +02:00
Niels Lohmann
1b4ea8f89b Merge pull request #2224 from nlohmann/issue2221
Remove unused typedefs
2020-06-28 15:08:18 +02:00
Niels Lohmann
d7a2956b24 🔀 merge from develop 2020-06-27 13:16:20 +02:00
Niels Lohmann
ac3922c7aa Merge branch 'develop' of https://github.com/nlohmann/json into clang_windows
 Conflicts:
	include/nlohmann/detail/input/binary_reader.hpp
	include/nlohmann/detail/input/input_adapters.hpp
	include/nlohmann/detail/input/lexer.hpp
	include/nlohmann/detail/output/binary_writer.hpp
	include/nlohmann/json.hpp
	single_include/nlohmann/json.hpp
2020-06-27 13:14:48 +02:00
Niels Lohmann
fa9f4040df 🔥 remove unused typedefs #2221 2020-06-27 13:07:02 +02:00
Niels Lohmann
5ba0f65c34 🔧 remove feature request template 2020-06-27 12:55:41 +02:00
Niels Lohmann
aefa0b3e86 🔧 use Github discussions for questions 2020-06-27 12:54:42 +02:00
Niels Lohmann
3948b5b091 Merge pull request #2212 from nlohmann/comments
Add option to ignore comments in parse/accept functions
2020-06-27 12:44:51 +02:00
Niels Lohmann
1af4f5f360 Merge pull request #2222 from alexreinking/patch-1
Enable CMake policy CMP0077
2020-06-27 12:43:52 +02:00
Niels Lohmann
c5ee222982 Merge pull request #2211 from nlohmann/fix_warnings
Fix Clang-Tidy warnings
2020-06-27 12:34:18 +02:00
Alex Reinking
ec43371e07 Enable CMake policy CMP0077
Projects that import json via [FetchContent](https://cmake.org/cmake/help/latest/module/FetchContent.html) or `add_subdirectory` pointed at a git submodule may want to set `JSON_BuildTests` to "NO". However, this doesn't work without creating an identical `option()` in the importing project. Enabling CMP0077 in supported versions of CMake changes the behavior of `option()` to allow importing projects to set default values for the variables without touching the cache.

See the documentation for CMP0077 here: https://cmake.org/cmake/help/latest/policy/CMP0077.html
2020-06-26 11:47:36 -07:00
Niels Lohmann
635b9a0ae4 Merge pull request #2193 from dota17/issue#2059
Fix consistency in function `int_to_string()`
2020-06-24 11:46:48 +02:00
gatopeich
cf18ba2394 Test initialization with dup keys 2020-06-23 17:50:51 +01:00
gatopeich
08963d6826 Revert types.md 2020-06-23 15:48:02 +01:00
gatopeich
d08fca2bb9 Use const Key in ordered map
(forgotten in previous commit!)
2020-06-23 15:44:46 +01:00
gatopeich
5e7bdf1cab Roll-back to hard-coded object_t::value_type 2020-06-23 15:39:00 +01:00
gatopeich
fb8c11f25c Re-implement ordered_map::erase,
so that it can handle pair<const Key,...>
2020-06-23 15:01:20 +01:00
gatopeich
acd748e16f Use std::map default allocator as a placeholder
to extract the actual ObjectType::value_type
Still fails on older compilers (GCC <= 5.5)
2020-06-23 12:03:21 +01:00
gatopeich
49623a75ee Revert "Using ordered_json instead of fifo_map in test-regression"
This reverts commit 5fe3d3929a.
2020-06-23 11:30:52 +01:00
Niels Lohmann
8575fdf9ad Merge pull request #2181 from dota17/issue#1275
Fix issue#1275
2020-06-23 09:23:03 +02:00
Niels Lohmann
4bfe4add20 Merge pull request #2203 from t-b/use-unsigned-indizies-for-array-index-in-json-pointer
Use unsigned indizies for array index in json pointer
2020-06-23 09:16:01 +02:00
chenguoping
0ecf297457 drop std::enable_if part 2020-06-23 09:14:55 +08:00
Niels Lohmann
a9809f3381 🏁 revert change that breaks with MSVC 2020-06-22 23:02:28 +02:00
Niels Lohmann
8b3d2399a4 🚨 remove warnings 2020-06-22 22:32:21 +02:00
gatopeich
5fe3d3929a Using ordered_json instead of fifo_map in test-regression
This is more comprehensive and the "my_workaround_fifo_map" wrapper does not allow to infer value type as required in this branch.

This reverts commit 064a9c9212.
2020-06-22 19:10:35 +01:00
gatopeich
064a9c9212 Fix regression test 2020-06-22 18:59:19 +01:00
gatopeich
ddf0a45abb Use AllocatorType<ObjectType::value_type>,
instead of hard-coding it for std::map's value_type
2020-06-22 18:35:46 +01:00
chenguoping
aeef50709e to allow for ADL in int_to_string() function 2020-06-22 20:17:56 +08:00
Thomas Braun
ecbb2756fd json_pointer::array_index: Use unsigned values for the array index when parsing
The current code uses std::stoi to convert the input string to an int
array_index. This limits the maximum addressable array size to ~2GB on
most platforms.

But all callers immediately convert the result of array_index to
BasicJsonType::size_type.

So let's parse it as unsigned long long, which allows us to have as
big arrays as available memory. And also makes the call sites nicer to
read.

One complication arises on platforms where size_type is smaller than
unsigned long long. We need to bail out on these if the parsed array
index does not fit into size_type.
2020-06-22 13:42:55 +02:00
Niels Lohmann
65e8ee985a 🔨 clean up 2020-06-22 08:59:03 +02:00
gatopeich
15337b2cc3 Ignore allocator hardcoded to match std::map 2020-06-22 00:03:48 +01:00
gatopeich
27aaf6f845 Clean-up ordered_map declarations 2020-06-21 22:28:03 +01:00
Niels Lohmann
29ad2178c6 Merge pull request #2176 from gracicot/cpp20-support-no-std-fct-templ-specialization
C++20 support by removing swap specialization
2020-06-21 20:39:58 +02:00
Niels Lohmann
e22ce45065 🚸 improve diagnostics 2020-06-21 13:28:00 +02:00
Niels Lohmann
139a0258cc Merge branch 'develop' of https://github.com/nlohmann/json into comments 2020-06-21 12:40:21 +02:00
Niels Lohmann
8dade80499 Merge pull request #2202 from nlohmann/issue2189
Add option to not rely on Internet connectivity during test stage
2020-06-21 08:41:48 +02:00
Thomas Braun
f0e73163f2 json_pointer.hpp: Mention more exception in documentation
Forgotten in dcd3a6c6 (move the catch of std::invalid_argument into
array_index(), 2020-03-23).
2020-06-20 15:27:22 +02:00
Niels Lohmann
0fe9f23254 add macros from #2175 2020-06-20 14:11:37 +02:00
Niels Lohmann
6ee9e5f402 ⚗️ remove const from value type 2020-06-20 13:23:44 +02:00
Niels Lohmann
24992003d9 📝 add notes from #2189 2020-06-20 09:55:11 +02:00
Niels Lohmann
e4675887a6 Merge branch 'develop' of https://github.com/nlohmann/json into issue2189 2020-06-20 09:47:12 +02:00
Niels Lohmann
74c6e4295f Merge pull request #2201 from nlohmann/issue2196
Serialize floating-point numbers with 32 bit when possible (MessagePack)
2020-06-20 09:31:02 +02:00
Niels Lohmann
4fd0d02b6f 🚧 toward an ordered_json type 2020-06-19 15:27:05 +02:00
Niels Lohmann
b64002bbca ♻️ extract common code to function 2020-06-19 13:24:08 +02:00
Niels Lohmann
0585ecc56b add tests for comment skipping 2020-06-19 13:10:35 +02:00
Niels Lohmann
cd115cbc33 update test suite 2020-06-18 12:50:32 +02:00
Niels Lohmann
74520d8bb0 🚧 extend API 2020-06-17 22:03:14 +02:00
Niels Lohmann
88a37010d6 🐛 serialize 32-bit floating-point numbers as float 32 in MessagePack (0xCA) #2196 2020-06-17 21:14:23 +02:00
Niels Lohmann
e9bfcf7255 improve comment parsing 2020-06-17 14:59:47 +02:00
chenguoping
4a6c68c7eb drop new blank line 2020-06-17 20:44:31 +08:00
chenguoping
da8fa3535a drop testcase 2020-06-17 20:41:31 +08:00
Niels Lohmann
e86b3fae98 🔧 add label to tests that require a git checkout 2020-06-17 12:35:59 +02:00
chenguoping
f466919ec2 change test cases 2020-06-17 15:07:25 +08:00
chenguoping
8aaa4013a3 remove overload function, change default_value to rvalue 2020-06-17 15:05:28 +08:00
Niels Lohmann
4d96f4cf6a 🔧 overwork CMake files 2020-06-16 20:23:01 +02:00
Niels Lohmann
f4c4bab600 add option JSON_TestDataDirectory to set path with test data #2189 2020-06-16 12:55:36 +02:00
Niels Lohmann
b53c6e2f81 ignore comments 2020-06-16 12:28:59 +02:00
chenguoping
691fb0c57a fix issue#2059 2020-06-16 15:35:26 +08:00
Niels Lohmann
e7452d8778 Merge branch 'release/3.8.0' into develop 2020-06-14 17:44:18 +02:00
Niels Lohmann
5f862710fe 🔖 set version to 3.8.0 2020-06-14 17:16:45 +02:00
Niels Lohmann
1ecb7884d1 👥 update contributor list 2020-06-14 15:22:08 +02:00
Niels Lohmann
c05bd90467 Merge pull request #2182 from tanuj208/develop
Improve parse_ubjson_fuzzer
2020-06-12 09:37:44 +02:00
Tanuj Garg
c3c5c03ea3 added fuzzing with different values to default argument in to_ubjson method 2020-06-10 20:50:25 +05:30
chenguoping
a3df26b771 add some test cases 2020-06-10 19:27:57 +08:00
chenguoping
71830be06d fix issue#1275 2020-06-10 19:27:28 +08:00
Niels Lohmann
27f5a6e827 🙈 ignore __pycache__ directory 2020-06-09 16:59:03 +02:00
Niels Lohmann
262d9cc67d 🚨 fix a maybe-uninitialized warning 2020-06-09 16:57:06 +02:00
Niels Lohmann
14881cf901 Merge pull request #2178 from nlohmann/input_adapter_tests
Add input adapter tests
2020-06-09 08:46:32 +02:00
Niels Lohmann
ae04426c85 🏁 fix for MSVC (see https://github.com/nlohmann/json/pull/2178#issuecomment-640622532) 2020-06-08 20:07:15 +02:00
Niels Lohmann
2cf16625ac add test for character types 2020-06-07 22:49:39 +02:00
Niels Lohmann
d4bc0c39af add test for character types 2020-06-07 22:47:54 +02:00
Niels Lohmann
6d73126ea9 🚨 fix warnings 2020-06-07 22:47:25 +02:00
Niels Lohmann
28048d8207 Merge branches 'develop' and 'mkdocs' of https://github.com/nlohmann/json into develop
 Conflicts:
	doc/examples/swap__binary_t.link
2020-06-07 21:02:08 +02:00
Niels Lohmann
eca5490b94 📝 add example link for swap function 2020-06-07 21:01:13 +02:00
Niels Lohmann
8c1d26e186 📝 add documentation and example for accept function 2020-06-07 20:59:43 +02:00
Niels Lohmann
543dcee3a7 Merge pull request #2174 from nlohmann/fix_warnings
Fix warnings
2020-06-07 20:35:05 +02:00
Niels Lohmann
907803189b 🏁 fix MSVC 2015 compilation 2020-06-07 12:51:33 +02:00
Niels Lohmann
e6a7e7a16a 🚑 hotfix for #2177 2020-06-07 12:41:36 +02:00
Guillaume Racicot
82fbbeeac5 Adapted unit tests to use ADL calls for swap like the new swappable concept 2020-06-06 12:28:52 -04:00
Guillaume Racicot
225c8f150a Disable std::swap specialization in C++20 and added a friend swap function 2020-06-06 11:36:39 -04:00
Niels Lohmann
bf2e714e96 🚨 fix warnings 2020-06-06 14:30:17 +02:00
Niels Lohmann
7444c7fa25 Merge pull request #2145 from FrancoisChabot/1813-user-input
Fix Issue#1813: user defined input adapters
2020-06-05 14:30:39 +02:00
Niels Lohmann
dd7e25927f 🚨 fix warning 2020-06-05 08:27:15 +02:00
Niels Lohmann
5fe6b83c26 Merge pull request #2158 from dota17/output_adapter
Fix PR#1006
2020-06-05 08:25:19 +02:00
chenguoping
ad2b4ff23b recover original blank line 2020-06-05 14:23:00 +08:00
chenguoping
0f67c5849f undo: remove comment 2020-06-05 10:09:15 +08:00
Niels Lohmann
2df5f107a9 📝 add page on parsing and exceptions 2020-06-04 14:01:57 +02:00
Niels Lohmann
32bda1a7af Merge branches 'develop' and 'mkdocs' of https://github.com/nlohmann/json into mkdocs 2020-06-04 13:07:20 +02:00
Niels Lohmann
24e8562664 👷 remove Clang 8 2020-06-04 12:48:03 +02:00
Niels Lohmann
a53e3a5443 👷 try Clang 8 2020-06-04 12:34:56 +02:00
Niels Lohmann
dc323314d5 👷 try Clang 10 2020-06-04 12:29:53 +02:00
Niels Lohmann
402c34c526 👷 try Clang 10 2020-06-04 12:27:37 +02:00
Niels Lohmann
65c4b07451 🎨 replace alternative operators (and, not, or) 2020-06-03 21:22:07 +02:00
Niels Lohmann
0498202a03 🎨 replace alternative operators (and, not, or) 2020-06-03 14:20:36 +02:00
Niels Lohmann
4f04ea1bef Merge branches 'clang_windows' and 'develop' of https://github.com/nlohmann/json into clang_windows 2020-06-03 14:01:18 +02:00
Niels Lohmann
9212590764 👥 update contributor list 2020-06-03 13:56:01 +02:00
Niels Lohmann
9708b1e9c3 🔥 remove Code Inspector 2020-06-03 13:49:46 +02:00
Niels Lohmann
68fd772fdf 👷 add Code Inspector via GitHub Action 2020-06-03 13:44:33 +02:00
Niels Lohmann
9bc2a7fa25 👷 add Code Inspector via GitHub Action 2020-06-03 13:39:56 +02:00
Niels Lohmann
c24218afe8 Merge remote-tracking branch 'origin/develop' into develop 2020-06-03 13:38:15 +02:00
Niels Lohmann
2c4be7d65c Merge pull request #2152 from TotalCaesar659/patch-1
Update URLs to HTTPS
2020-06-03 12:31:33 +02:00
Niels Lohmann
2ad847f21b 🔨 fix doxygen link 2020-06-03 12:30:42 +02:00
Niels Lohmann
fdf5a63dfd 🔨 fix Doxygen link 2020-06-03 12:30:10 +02:00
Niels Lohmann
309acb445a Merge pull request #2153 from dota17/issue#1972
Fix issue#1972
2020-06-03 12:26:17 +02:00
chenguoping
eca4b8785c fix test case in PR#1006 2020-06-02 15:44:26 +08:00
chenguoping
fff1499963 add comment about PR#1006 2020-06-02 15:43:57 +08:00
chenguoping
8cd39578e3 add test case 2020-06-01 11:34:03 +08:00
Niels Lohmann
5ea205f570 👷 install clang 2020-05-30 18:17:54 +02:00
Niels Lohmann
5f10d5d156 👷 install clang 2020-05-30 18:15:13 +02:00
Niels Lohmann
7c0c522b96 👷 install clang 2020-05-30 18:11:54 +02:00
Niels Lohmann
522ec5d7bd 👷 install clang 2020-05-30 18:06:52 +02:00
Niels Lohmann
7e5c2a480a 👷 install clang 2020-05-30 18:04:07 +02:00
Niels Lohmann
9c971c2d2f 👷 install clang 2020-05-30 17:40:27 +02:00
Niels Lohmann
4ba8c95794 👷 install clang 2020-05-30 13:41:18 +02:00
Niels Lohmann
fbd3e8f677 👷 install clang 2020-05-30 13:35:19 +02:00
Niels Lohmann
0309025b45 👷 set full path 2020-05-30 13:28:44 +02:00
Niels Lohmann
9191926fff 👷 use Makefiles 2020-05-30 13:23:13 +02:00
Niels Lohmann
42ef2a5adb 👷 use Clang compiler 2020-05-30 13:15:56 +02:00
Niels Lohmann
2182935397 👷 add Clang/Windows step 2020-05-30 13:07:23 +02:00
chenguoping
4350c5ed97 fix bug in issue#1972 2020-05-30 17:15:56 +08:00
TotalCaesar659
0aa13599f0 Update URLs to HTTPS 2020-05-30 06:02:25 +03:00
Francois Chabot
0da131d717 minor readme correction 2020-05-28 17:12:26 -04:00
Francois Chabot
b715a70673 changed macro order to satisfy clang 2020-05-28 12:26:29 -04:00
Francois Chabot
7646253940 fix inconsistent fwd declaration 2020-05-28 12:20:02 -04:00
Francois Chabot
ce3143a038 use correct deprecation macro 2020-05-28 12:16:10 -04:00
Francois Chabot
d575534471 brought back the from_*(ptr, len) syntax with a deprecation warning 2020-05-28 12:13:43 -04:00
Francois Chabot
248f310215 cleaned up custom iterator example 2020-05-28 10:14:55 -04:00
Francois Chabot
897061c434 amalgamate 2020-05-28 10:11:19 -04:00
Francois Chabot
7ceb06baac Merge branch '1813-user-input' of https://github.com/FrancoisChabot/json into 1813-user-input 2020-05-28 09:30:07 -04:00
Francois Chabot
dcf6175978 use the correct convention for boolean operators 2020-05-28 09:29:38 -04:00
Niels Lohmann
23c8ab95da 👥 update contributor list 2020-05-28 14:24:08 +02:00
Niels Lohmann
53ef076715 🔧 add more warning flags from GCC 10 2020-05-28 13:46:56 +02:00
Niels Lohmann
2edb5cb999 👷 fix -DJSON_BuildTests=On parameter placement 2020-05-28 13:46:47 +02:00
Niels Lohmann
61832afe15 Merge pull request #2144 from XyFreak/gcc10_type_limits
Fix issue#1939: Cast character to unsigned for comparison
2020-05-28 12:59:57 +02:00
Niels Lohmann
5ff4d7b7ff Merge branch 'develop' of https://github.com/nlohmann/json into develop 2020-05-28 12:54:13 +02:00
Niels Lohmann
fcda998ee2 🔧 add more warning flags from GCC 10 2020-05-28 12:53:22 +02:00
Francois Chabot
d3caf93ab0 Merge branch 'develop' into 1813-user-input 2020-05-28 03:40:34 -04:00
Francois Chabot
bfcd32c099 removed clang-format 2020-05-28 03:16:24 -04:00
Francois Chabot
3a91a05db6 added custom input to readme 2020-05-28 03:13:39 -04:00
Francois Chabot
a4f1cf4d00 better parse documentation 2020-05-28 02:50:58 -04:00
Francois Chabot
76b49f9ee6 misc formatting fixes 2020-05-28 02:29:53 -04:00
Niels Lohmann
9ec0e4c25b Merge pull request #2140 from nlohmann/issue1715
Respect allow_exceptions=false for binary formats
2020-05-28 07:52:26 +02:00
Niels Lohmann
a01759af0f Merge pull request #2143 from quentin-dev/develop
Fix issue#2142: readme: fix typo in CMake FetchContent example
2020-05-28 07:50:27 +02:00
Francois Chabot
377995f495 forcefully exclude arrays from being interpreted as pointers 2020-05-27 18:21:38 -04:00
Francois Chabot
b9416a26aa correct ADL lookup of arrays on Mac and Windows 2020-05-27 13:21:23 -04:00
Francois Chabot
f1969e60a3 reamalgamate 2020-05-27 12:56:26 -04:00
Francois Chabot
5684d9a498 unified input API 2020-05-27 12:40:04 -04:00
Quentin Barbarat
e44418ea26 readme: fix typo in CMake FetchContent example 2020-05-27 13:51:13 +02:00
Niels Lohmann
bb9619ef8b 📝 request more details in question template 2020-05-27 13:22:34 +02:00
Niels Lohmann
325e8ab8ab 🔧 explicitly switch on tests in CI 2020-05-27 13:22:14 +02:00
Tobias Kux
23051df2c7 Cast character to unsigned for comparison 2020-05-27 13:15:31 +02:00
Niels Lohmann
ed5c28d00c 👥 update contributor list 2020-05-27 13:07:24 +02:00
Niels Lohmann
d70d06ae41 Merge pull request #2137 from dota17/MSC_VER
Fix issue 2112
2020-05-27 08:49:19 +02:00
Niels Lohmann
e3d9b3d755 📝 add documentation of parser callbacks 2020-05-26 14:16:13 +02:00
Niels Lohmann
ace594da6a Merge branches 'develop' and 'mkdocs' of https://github.com/nlohmann/json into mkdocs 2020-05-26 13:17:55 +02:00
Niels Lohmann
3c60a66c4c Merge pull request #2104 from dota17/issue#2086
Fix issue#2086: disallow json::value_t type parameter in value()
2020-05-26 13:15:06 +02:00
Niels Lohmann
27fe50dc92 📝 add example for contains #2133
Closes #2133.
2020-05-26 12:46:04 +02:00
Niels Lohmann
25aab7ee41 Merge pull request #2136 from aokellermann/CircleCI_GCC_BleedingEdge
Add bleeding edge GCC to CI
2020-05-26 12:39:42 +02:00
chenguoping
eb50fbf926 fix issue 2112 2020-05-26 16:43:16 +08:00
Antony Kellermann
49000cd77d Update documentation to reflect addition of Arch Linux CI testing. 2020-05-25 20:46:39 -04:00
Antony Kellermann
5a72cfa0c3 Add base and base-devel to list of arch linux programs to install. 2020-05-25 20:43:15 -04:00
Antony Kellermann
1d57ddd2d4 Add -y flag to pacman to sync repos. 2020-05-25 20:24:54 -04:00
Antony Kellermann
41a84b1202 Add workflows for CircleCI so that build_stable and build_bleeding_edge jobs can run concurrently. 2020-05-25 20:17:02 -04:00
Antony Kellermann
eff2f51071 Add build_bleeding_edge job to CircleCI, mimicking the original job except using the latest Arch Linux docker image. 2020-05-25 20:14:49 -04:00
Antony Kellermann
bf4a090075 Rename build job to build_stable to be more descriptive. 2020-05-25 20:12:54 -04:00
Niels Lohmann
413df0fd88 📝 add more content to iterator page 2020-05-25 14:03:11 +02:00
Niels Lohmann
95a3c76643 📝 make examples collapsible 2020-05-24 22:45:38 +02:00
Niels Lohmann
ddf92606ab 📝 add PlantUML 2020-05-24 21:05:35 +02:00
Niels Lohmann
3400af21cd 📝 add release page 2020-05-24 13:40:43 +02:00
Niels Lohmann
a8f0cd15df 📝 add mkdocs 2020-05-24 13:03:04 +02:00
Niels Lohmann
c92a696852 📝 update documentation 2020-05-22 18:21:37 +02:00
Niels Lohmann
88292d9499 🚨 remove redundant assertions 2020-05-22 14:19:07 +02:00
Niels Lohmann
225fa58f16 🚧 add fix from #1715 2020-05-20 22:20:40 +02:00
Niels Lohmann
a82c80e9af Merge pull request #2125 from nlohmann/binary_type
Clean up implementation of binary type
2020-05-20 18:58:29 +02:00
Niels Lohmann
ae29456b3f 🚸 overwork report templates 2020-05-20 18:57:21 +02:00
Niels Lohmann
a861bdb81f Merge pull request #2121 from gistrec/fix_compilation_error_msvc
Fixed a compilation error in MSVC
2020-05-19 13:55:37 +02:00
Niels Lohmann
4d39644bd0 💚 fix build 2020-05-19 13:45:52 +02:00
Niels Lohmann
21b1680ea1 🚚 rename binary_array() to binary() 2020-05-19 13:30:22 +02:00
Niels Lohmann
86b053e916 Merge branches 'binary_type' and 'develop' of https://github.com/nlohmann/json into binary_type 2020-05-19 13:10:35 +02:00
Niels Lohmann
952a87a4f4 🚚 move byte container outside detail namespace 2020-05-19 13:08:18 +02:00
Niels Lohmann
79347b484b improve test coverage 2020-05-19 12:40:32 +02:00
Niels Lohmann
5cfa8a586e 👷 run workflows on pull requests 2020-05-18 14:01:54 +02:00
Niels Lohmann
b7ff40029a 💥 change serialization of binary values 2020-05-18 13:53:20 +02:00
Niels Lohmann
9eb19bcc27 add more tests for binary type 2020-05-18 12:33:26 +02:00
gistrec
9e765f5aed Fixed std::numeric_limit::max() call 2020-05-18 10:25:55 +00:00
gistrec
3f0cf26f7a changes to the single header were applied 2020-05-18 10:17:45 +00:00
gistrec
454480f581 fixed a compilation error in MSVC 2020-05-18 14:57:04 +07:00
Niels Lohmann
5dec7166ea Merge branches 'binary_type' and 'develop' of https://github.com/nlohmann/json into binary_type 2020-05-18 09:13:22 +02:00
Niels Lohmann
16d78a82e0 👷 add link to GitHub workflows 2020-05-18 09:12:18 +02:00
Niels Lohmann
c237aa3a68 Merge pull request #2119 from nlohmann/release_cleanup
Overwork CI
2020-05-18 09:07:36 +02:00
Niels Lohmann
904642f261 ♻️ rename internal_binary_t with binary_t 2020-05-17 22:50:27 +02:00
Niels Lohmann
1ce8a5be87 Merge branch 'develop' of https://github.com/nlohmann/json into release_cleanup 2020-05-17 14:11:49 +02:00
Niels Lohmann
dead99eb0e 🔨 overwork binary subtypes 2020-05-17 13:51:59 +02:00
Niels Lohmann
ab6e76dd05 Merge branches 'binary_type' and 'develop' of https://github.com/nlohmann/json into binary_type 2020-05-17 12:27:58 +02:00
Niels Lohmann
3799b3f8dd Merge pull request #2116 from nlohmann/issue2113
Fix warnings from Clang 10 and GCC 9
2020-05-17 12:19:06 +02:00
Niels Lohmann
6154d50a9f Merge pull request #2115 from nlohmann/issue2089
Do not include <ciso646> when using C++17
2020-05-17 12:17:17 +02:00
Niels Lohmann
28e20bd9e4 🚨 fix warnings #2113 2020-05-16 14:26:17 +02:00
Niels Lohmann
ad32f576bd Merge branch 'develop' of https://github.com/nlohmann/json into release_cleanup 2020-05-16 13:22:23 +02:00
Niels Lohmann
c0cf67ead3 Merge branch 'develop' of https://github.com/nlohmann/json into binary_type 2020-05-16 12:58:13 +02:00
Niels Lohmann
f40a9f876a Merge pull request #2044 from dota17/issue#1719
Fix issue#1719
2020-05-16 12:57:00 +02:00
Niels Lohmann
3ed059f6ff revert faulty changes 2020-05-16 12:56:18 +02:00
Niels Lohmann
bc1886fb60 ♻️ refine interface of wrapped_binary_t 2020-05-15 23:21:49 +02:00
Niels Lohmann
a452e8a0a1 💚 fix GCC 4.9 compilation 2020-05-15 22:38:18 +02:00
chenguoping
ed9c205b5d add somes test cases 2020-05-15 21:48:29 +08:00
chenguoping
5dd27f1a9f compare against max float and min float before converting 2020-05-15 21:47:59 +08:00
Niels Lohmann
daf2d296dd ♻️ move wrapped binary type to separate file 2020-05-15 14:12:32 +02:00
chenguoping
779a0ec7df update 2020-05-15 17:35:43 +08:00
Niels Lohmann
bcf4f3ce9a 📝 add warning for items() on temporary objects #2040 2020-05-14 19:06:48 +02:00
Niels Lohmann
fc267af909 📝 update CI list 2020-05-14 17:53:00 +02:00
chenguoping
e175150f5b fix UBSAN 2020-05-14 20:54:47 +08:00
Niels Lohmann
f4cc729054 🔊 add compiler version output 2020-05-14 13:37:59 +02:00
Niels Lohmann
e91236e6d3 🔊 add compiler version output 2020-05-14 13:33:10 +02:00
chenguoping
8f5b5c7469 use json_test_data version 2.0.0 2020-05-14 15:11:38 +08:00
chenguoping
47c6570470 Add some test cases about to_cbor() 2020-05-14 15:11:38 +08:00
chenguoping
44fe284f9d Enhace to_cbor() to support +/-Infinity, NaN, and single-precision float 2020-05-14 15:10:44 +08:00
Niels Lohmann
c4c23f34c5 Merge branch 'develop' of https://github.com/nlohmann/json into release_cleanup 2020-05-14 07:55:09 +02:00
Niels Lohmann
33ae93beed 📝 update CI list 2020-05-14 07:55:01 +02:00
Niels Lohmann
0857140839 Merge pull request #1950 from FrancoisChabot/issues/1457
templated input adapters
2020-05-14 07:52:02 +02:00
chenguoping
cdf5327ace Fix issue#2086 2020-05-14 12:44:30 +08:00
Niels Lohmann
d7b032f565 add tests to improve coverage 2020-05-13 21:28:43 +02:00
Niels Lohmann
ec68bb3387 📝 update CI list 2020-05-13 20:18:56 +02:00
Niels Lohmann
f6f350a5c7 🔊 add operating system output 2020-05-13 14:25:51 +02:00
Niels Lohmann
a4266bbb7d Merge branch 'develop' into issues/1457 2020-05-13 12:48:46 +02:00
Niels Lohmann
855d25a76c Merge branches 'develop' and 'release_cleanup' of https://github.com/nlohmann/json into release_cleanup 2020-05-13 12:41:22 +02:00
Niels Lohmann
a414e35971 🚨 add newline to end of file 2020-05-13 12:35:11 +02:00
Niels Lohmann
def8aeb141 Merge branches 'develop' and 'release_cleanup' of https://github.com/nlohmann/json into release_cleanup 2020-05-13 07:57:03 +02:00
Niels Lohmann
9265ca7a08 Merge pull request #2099 from nlohmann/issue2082
Add tests for binary values
2020-05-13 07:56:11 +02:00
Niels Lohmann
6778ad8b0a 📝 update year 2020-05-12 22:26:55 +02:00
Niels Lohmann
7dbe5cf904 📝 update badges 2020-05-12 21:43:33 +02:00
Niels Lohmann
94115a302e 🏁 exclude slow Unicode test 2020-05-12 21:22:47 +02:00
Niels Lohmann
8c44c7b6de 🏁 set Windows CI to Release mode 2020-05-12 21:18:08 +02:00
Niels Lohmann
44a2158b18 👷 make debug build 2020-05-12 20:51:45 +02:00
Niels Lohmann
77e0ba8750 👷 parallelize builds 2020-05-12 20:45:18 +02:00
Niels Lohmann
6e59c8301a 👷 simplify CMake invocations 2020-05-12 20:37:50 +02:00
Niels Lohmann
ab02b08296 👷 rename workflows 2020-05-12 20:30:11 +02:00
Niels Lohmann
cd76f59af6 👷 add more GitHub actions workflows 2020-05-12 20:26:17 +02:00
Niels Lohmann
b1c1eb145e 🔧 fix maintainer target 2020-05-12 19:36:33 +02:00
Niels Lohmann
abeb80411b 📝 fix example 2020-05-12 16:28:26 +02:00
Niels Lohmann
52f5f3d29f 📝 fix example 2020-05-12 16:27:55 +02:00
Niels Lohmann
e9a845f08a 📝 fix example output 2020-05-12 16:13:33 +02:00
Niels Lohmann
8e0ae9b46f ⬆️ update Doxyfile 2020-05-12 14:37:35 +02:00
Niels Lohmann
afc30a14a7 🔧 set Wandbox script to use HTTPS 2020-05-12 14:37:22 +02:00
Niels Lohmann
6014419818 Merge branches 'develop' and 'issue2082' of https://github.com/nlohmann/json into issue2082 2020-05-12 12:28:34 +02:00
Niels Lohmann
1de30bc611 Merge pull request #2100 from nlohmann/fix_coveralls
Fix Coveralls integration
2020-05-12 12:26:22 +02:00
Niels Lohmann
76c01501f7 🔧 fix pedantic maintainer targets 2020-05-11 20:03:13 +02:00
Niels Lohmann
66dfa22de2 ⚗️ try to fix SSL issue 2020-05-11 14:24:38 +02:00
Niels Lohmann
0ad595709d ⚗️ try to fix SSL issue 2020-05-11 13:40:43 +02:00
Niels Lohmann
cbb2d4e4d8 ⚗️ try to fix SSL issue 2020-05-11 13:29:40 +02:00
Niels Lohmann
8389c1961b ⚗️ try to fix SSL issue 2020-05-11 13:19:22 +02:00
Niels Lohmann
19b21e61e5 ⚗️ try to fix SSL issue 2020-05-11 13:05:53 +02:00
Niels Lohmann
697305819f ⚗️ try to fix SSL issue 2020-05-11 12:37:24 +02:00
Niels Lohmann
18cbcc4135 ⚗️ try to fix SSL issue 2020-05-11 12:25:41 +02:00
Niels Lohmann
a3a803a389 📝 add FOSSA status badge 2020-05-10 13:49:26 +02:00
Niels Lohmann
5c42847011 add tests for binary type 2020-05-10 13:23:18 +02:00
Niels Lohmann
fff46ea98c add tests for binary type 2020-05-09 23:18:12 +02:00
Niels Lohmann
34430994bf add tests for binary type 2020-05-09 14:16:57 +02:00
Niels Lohmann
b036ace235 🐛 fix bug in binary constructor 2020-05-09 14:16:49 +02:00
Niels Lohmann
3fa94f0755 add tests for binary type 2020-05-09 13:46:24 +02:00
Niels Lohmann
f0c6ab4d3b 🐛 fix bug in SAX callback parser 2020-05-08 14:21:11 +02:00
Niels Lohmann
5bfb27c865 🚨 fix some warnings 2020-05-08 12:32:28 +02:00
Niels Lohmann
8c2b26de4a ⚗️ do not include <ciso646> with C++20 #2089 2020-05-07 10:17:32 +02:00
Niels Lohmann
9adb1c0235 🏁 do not include <ciso646> unless old MSVC is used #2089 2020-05-07 09:43:41 +02:00
Niels Lohmann
cf4a6552f3 add tests for binary serialization 2020-05-06 22:24:48 +02:00
Niels Lohmann
3cd2a977ae add test for get_ptr<binary_t*> 2020-05-06 22:13:55 +02:00
Niels Lohmann
1d6f7b0d4e add tests for binary serialization 2020-05-06 22:13:31 +02:00
Niels Lohmann
c10bc7efdd 🔥 remove pretty-print code for binary values 2020-05-06 22:13:08 +02:00
Niels Lohmann
ddff459fa3 add test for BSON binary subtype 2020-05-06 21:24:00 +02:00
Niels Lohmann
421a084396 add convenience function to create binary value with given subtype 2020-05-06 21:23:45 +02:00
Niels Lohmann
2b39efd545 add tests for binary type 2020-05-05 12:59:57 +02:00
Niels Lohmann
6dee8866a8 🐛 fix binary comparison 2020-05-05 12:40:04 +02:00
Niels Lohmann
908941b87d fix test cases 2020-05-05 07:47:20 +02:00
Niels Lohmann
2a34f4cd63 add tests for binary type 2020-05-04 22:07:50 +02:00
Niels Lohmann
48aa441661 add swap function for binary type 2020-05-04 22:07:36 +02:00
Niels Lohmann
a50a14088c Merge pull request #2081 from nlohmann/external_test_data
Use external test data
2020-05-04 20:58:02 +02:00
Niels Lohmann
2304629a3f 📌 use JSON test data v1.0.0 2020-05-04 16:00:00 +02:00
Niels Lohmann
e7a88b2d7f 💚 fix AppVeyor and Travis builds 2020-05-03 19:33:01 +02:00
Niels Lohmann
634fa87e5a Merge pull request #2080 from nlohmann/remove_doozer
Remove Doozer CI
2020-05-03 13:58:29 +02:00
Niels Lohmann
24237af983 🎨 fix format 2020-05-03 13:40:23 +02:00
Niels Lohmann
2f0d37d7d2 🔥 remove fastcov 2020-05-02 23:48:11 +02:00
Niels Lohmann
9c0c58d948 🔥 remove Doozer CI 2020-05-02 23:41:28 +02:00
Niels Lohmann
929f5d398c 🔨 fix coverage tests 2020-05-02 23:24:21 +02:00
Niels Lohmann
752c62b4bd 🔨 remove double tests 2020-05-02 16:07:09 +02:00
Niels Lohmann
f0050c9ba0 Merge pull request #2019 from dota17/contains_v2
fix #1982:json_pointer.contains() exception is incorrectly raised
2020-05-02 11:04:57 +02:00
Niels Lohmann
bec554936c 🔨 fix paths 2020-05-02 10:56:01 +02:00
Niels Lohmann
08c9472184 🔨 simplify workflow 2020-05-01 21:06:41 +02:00
Niels Lohmann
3ae7237f5a 🔨 clean up 2020-05-01 21:01:47 +02:00
Niels Lohmann
cfb2f34ebb 🔨 fix benchmarks 2020-05-01 20:59:47 +02:00
Niels Lohmann
d0ef591ce2 Merge branches 'develop' and 'external_test_data' of https://github.com/nlohmann/json into external_test_data 2020-05-01 20:23:08 +02:00
Niels Lohmann
ec5cfdd307 🔨 properly find and use Git 2020-05-01 16:18:04 +02:00
Niels Lohmann
d144459f1e add git 2020-05-01 16:14:13 +02:00
Niels Lohmann
f58383b8ee 🔊 output on failure 2020-05-01 15:22:18 +02:00
Niels Lohmann
7ade3a0efb remove dependency to FetchContent 2020-05-01 15:14:37 +02:00
Niels Lohmann
dbf1a1f413 ♻️ download test data from external repository 2020-05-01 14:32:37 +02:00
Niels Lohmann
2251741b53 Merge pull request #2077 from ArthurSonzogni/develop-2
Fix README.md. Missing ```
2020-05-01 14:08:59 +02:00
ArthurSonzogni
f26689e006 Fix README.md
About pull request:
https://github.com/nlohmann/json/pull/2074

An error has been introduced by accepting the suggestions:
4be4a038cc

One was about removing ~~~, but it was meant to be replaced by ``` in
reality. This caused the README.md to be slightly broken.
2020-05-01 13:55:24 +02:00
Niels Lohmann
798dbb5c19 📝 add detail 2020-05-01 13:19:49 +02:00
Niels Lohmann
c9f404dc98 Merge pull request #2076 from rmisev/patch-1
Fix error message about invalid surrogate pairs
2020-05-01 12:47:39 +02:00
Niels Lohmann
b27d8a3253 Merge pull request #2074 from ArthurSonzogni/develop
Add CMake fetchcontent documentation and tests
2020-05-01 12:42:29 +02:00
Rimas Misevičius
6f1800889a Fix tests 2020-05-01 00:59:12 +03:00
Rimas Misevičius
4c053e3ec9 Fix tests 2020-05-01 00:48:24 +03:00
Rimas Misevičius
6815968a42 Fix error message about invalid surrogate pairs
I tested following strings with invalid surrogate pair and unpaired surrogate in files:

1. `"a\uD800\uD800x"`
2. `"a\uD800x"`

The error messge was: "... invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF; ..."

I think it must be: "... invalid string: surrogate U+D800..U+DBFF must be followed by U+DC00..U+DFFF; ..."
2020-05-01 00:23:04 +03:00
Arthur Sonzogni
4be4a038cc Apply suggestions from code review
Co-Authored-By: Niels Lohmann <niels.lohmann@gmail.com>
2020-04-29 21:08:39 +02:00
Niels Lohmann
db013c9428 Merge pull request #2071 from nlohmann/issue2067
Properly pass serialize_binary to dump function
2020-04-29 19:39:58 +02:00
ArthurSonzogni
c331706644 Add CMake fetchcontent documentation and tests
Github issue:
https://github.com/nlohmann/json/issues/2073

nlohmann::json documents 2 way of depending on it using CMake
1) Copy-paste the project/source into your own project.
2) Install nlohman::json and then use find_package.

(1) pollutes your git repository, (2) requires everyone to install the
dependencies themselves.

Since 2018, CMake provide some kind of 'package manager' features using
[FetchContent](https://cmake.org/cmake/help/v3.17/module/FetchContent.html)
It gives the following:
~~~cmake
include(FetchContent)

FetchContent_Declare(json
  GIT_REPOSITORY https://github.com/nlohmann/json
  GIT_TAG v3.7.3)

FetchContent_GetProperties(json)
if(NOT json_POPULATED)
  FetchContent_Populate(json)
  add_subdirectory( ${json_SOURCE_DIR} ${json_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
~~~

Then declares the dependency in the target using it:
~~~cmake
target_link_library(my_project PRIVATE nlohmann_json::nlohmann_json
~~~

This patch updates the documentation and provides tests.
2020-04-29 18:28:06 +02:00
Niels Lohmann
b1fe6ee0d1 Merge pull request #2069 from nlohmann/issue2064
Fix returning reference to local temporary object
2020-04-28 20:56:48 +02:00
Niels Lohmann
2e5727d778 🐛 properly pass serialize_binary to dump function #2067 2020-04-27 15:10:23 +02:00
Niels Lohmann
9e0180b698 🐛 fix returning reference to local temporary object #2064 2020-04-27 14:43:49 +02:00
Niels Lohmann
d9d1279a94 Merge pull request #2060 from alexandermyasnikov/develop
updated wandbox link
2020-04-24 09:18:23 +02:00
Alexander Myasnikov
b01bc05b2b updated wandbox link 2020-04-23 13:32:42 +03:00
Niels Lohmann
63afc8e3f8 Merge pull request #2043 from dota17/unit-constructor1
Add missing testcase about NaN in unit-constructor1.cpp
2020-04-21 07:35:44 +02:00
Niels Lohmann
a29e3b1318 Merge pull request #2054 from nlohmann/feature/issue1983
Fix bug in diff function
2020-04-20 19:44:35 +02:00
Niels Lohmann
c0a39b22a6 🚨 fix compiler warning 2020-04-20 19:42:58 +02:00
chenguoping
8bfc692602 update condition 2020-04-20 16:00:55 +08:00
Niels Lohmann
3607687a14 Merge pull request #2053 from nlohmann/gcc10warnings
Fix GCC compiler warnings
2020-04-20 08:05:42 +02:00
Niels Lohmann
721a1a0b5d Merge pull request #2051 from nlohmann/clang10warnings
Fix Clang compiler warnings
2020-04-20 08:04:23 +02:00
Niels Lohmann
f14a7d8af7 Merge pull request #2050 from nlohmann/doctest_update
Update doctest to 2.3.7
2020-04-20 08:02:58 +02:00
chenguoping
c379d02b3e Add missing testcase about NaN in unit-constructor1.cpp 2020-04-20 10:25:44 +08:00
Niels Lohmann
e8356928bd 🚨 fix compiler warnings #2052 2020-04-19 13:25:02 +02:00
Niels Lohmann
4fb0795ec1 🚨 fix compiler warnings #2049 2020-04-19 13:01:36 +02:00
Niels Lohmann
45d5b09425 ⬆️ doctest 2.3.7 #2048 2020-04-19 12:33:42 +02:00
Niels Lohmann
be137609df Merge pull request #1746 from uhoreg/cmake_arch_indep
make CMake's version config file architecture-independent
2020-04-19 10:09:28 +02:00
Hubert Chathi
2b0e4c7a94 add comments 2020-04-17 15:44:12 -04:00
Niels Lohmann
3bc9e053c9 Merge pull request #1969 from dota17/dota17-warning
fix warnings in serializer.hpp for VS2019
2020-04-17 10:10:38 +02:00
Niels Lohmann
69ac336042 Merge pull request #1967 from dota17/dota17-disable
Fix C26451 warnnings in to_chars.hpp
2020-04-17 10:08:21 +02:00
Niels Lohmann
f2b43a36b2 Merge pull request #1662 from OmnipotentEntity/develop
Add binary type support to all binary file formats, as well as an internally represented binary type
2020-04-16 11:14:32 +02:00
Michael Reilly
012c9665ac Add binary type support to all binary file formats, as well as an internally represented binary type 2020-04-14 10:22:45 -04:00
Niels Lohmann
dd04a32918 🐛 fix bug in diff function #1983 2020-04-13 14:35:36 +02:00
chenguoping
f5a487d1b4 fix issue1982: contains() exceptions are incorrectly raised 2020-04-13 19:41:13 +08:00
Niels Lohmann
b7be613b6e Merge pull request #1990 from dota17/json_pointer
catch exceptions for json_pointer : ..../+99
2020-04-13 13:29:33 +02:00
Niels Lohmann
84f19d6333 Merge pull request #2034 from ArtemSarmini/gh-1920-gcc-10-incomplete-types
Templatize basic_json constructor from json_ref
2020-04-13 13:19:28 +02:00
Niels Lohmann
b0a3883081 🎨 fix format 2020-04-13 13:11:26 +02:00
Niels Lohmann
3483d923d4 Merge pull request #2033 from nlohmann/feature/issue1913
Replace deprecated std::is_pod
2020-04-13 12:32:37 +02:00
Artöm Bakri Al-Sarmini
70be9751cd typo fix 2020-04-12 23:42:26 +03:00
Artöm Bakri Al-Sarmini
ec955f08b4 Templatize basic_json ctor from json_ref 2020-04-12 22:32:39 +03:00
Niels Lohmann
7fcc860329 🔥 remove WhiteSource 2020-04-12 16:35:41 +02:00
Niels Lohmann
4396a68d2d Merge pull request #1984 from dota17/document-fix
Modify the document about operator==
2020-04-11 18:55:18 +02:00
Niels Lohmann
062fd3842c Merge pull request #2004 from wsjcpp/develop
Added wsjcpp.yml
2020-04-11 11:48:04 +02:00
Niels Lohmann
9154e991b8 Merge branch 'develop' into feature/issue1913 2020-04-11 11:33:46 +02:00
Evgenii Sopov
d164a2bf09 Added wsjcpp.yml: C++ Source Package Manager 2020-04-11 16:30:04 +07:00
Niels Lohmann
6121fc52cf 🎨 fix indentation 2020-04-10 13:22:58 +02:00
Niels Lohmann
ea0a7c7b4f Merge pull request #2025 from ArtemSarmini/issue-1971-basic_json-push_back
Fixes #1971 (memory leak in basic_json::push_back)
2020-04-10 13:19:14 +02:00
Niels Lohmann
d01193a4e4 🎨 run "make amalgamate" 2020-04-10 13:18:12 +02:00
Niels Lohmann
299feb13e7 Merge pull request #1958 from t-b/add-zc-flag-for-msvc
appveyor.yml: Compile and test with latest version for __cplusplus ma…
2020-04-10 13:12:34 +02:00
Artöm Bakri Al-Sarmini
8db02bcc55 Fix for gcc 2020-04-08 15:53:14 +03:00
Artöm Bakri Al-Sarmini
fec0bdd93b still fixing 2020-04-08 00:42:03 +03:00
Artöm Bakri Al-Sarmini
4ce31695f1 Fixed formatting, trying to fix msvc build error in appveyor 2020-04-08 00:26:43 +03:00
Niels Lohmann
c6b298799a 👷 remove failing Travis workers 2020-04-07 09:09:44 +02:00
chenguoping
34cf7b7a48 just restart ci 2020-04-07 10:00:21 +08:00
Thomas Braun
5607dfb48a appveyor.yml: Compile and test with latest version for __cplusplus macro on MSVC
According to [1] the C++ macro __cplusplus has always the value 199711L
even if you enable later version of C++ support via /std.

Use one job with /Zc:__cplusplus defined so that we know that it
compiles.

[1]: https://docs.microsoft.com/en-us/cpp/build/reference/zc-cplusplus?view=vs-2019
2020-04-06 11:56:33 +02:00
Niels Lohmann
6a53a95c32 ⬆️ Hedley 13 2020-04-06 11:56:33 +02:00
Niels Lohmann
3884d33c60 Merge pull request #1980 from linev/fix_warning
Rename argument array_index to array_indx in json_pointer methods
2020-04-05 22:00:41 +02:00
Niels Lohmann
554e8c7356 Merge pull request #2002 from alexandermyasnikov/develop
fix error 'setw' is not a member of 'std' in Wandbox example
2020-04-05 21:58:21 +02:00
Niels Lohmann
5c00308de7 Merge pull request #2010 from magamig/patch-1
Update LICENSE.MIT
2020-04-05 21:55:47 +02:00
Niels Lohmann
83e36f314f Merge pull request #2008 from garethsb-sony/implicit-cast-vs2019
PR for #2006 to test in AppVeyor.
2020-04-05 21:53:47 +02:00
Niels Lohmann
379ed1f67e 💰 add sponsor 2020-04-05 15:23:00 +02:00
Artöm Bakri Al-Sarmini
a74a031bba Fix build error 2020-04-02 15:47:08 +03:00
Artöm Bakri Al-Sarmini
e4d8dc02e8 Fixes #1971 (memory leak in basic_json::push_back) 2020-04-02 15:20:25 +03:00
Miguel Magalhães
3df622a417 Update LICENSE.MIT 2020-03-25 17:24:23 +00:00
chenguoping
e07686f0c7 update array_index() and add testcases 2020-03-25 15:57:20 +08:00
chenguoping
2e7d340dad docs:modify the document about operator== 2020-03-25 10:18:04 +08:00
garethsb-sony
7fe16f9400 PR for #2006 to test in AppVeyor. 2020-03-24 12:53:59 +00:00
chenguoping
dcd3a6c62b move the catch of std::invalid_argument into array_index() 2020-03-23 17:24:47 +08:00
chenguoping
59cb4c93be fix C26451 warnning in serializer.hpp for VS2019 2020-03-23 16:08:47 +08:00
chenguoping
0a8216890d fix C26451 warnnings in to_chars.hpp 2020-03-23 15:27:35 +08:00
Alexander Myasnikov
4df7dc04f6 fix error 'setw' is not a member of 'std' in Wandbox example 2020-03-21 18:34:40 +03:00
Sergey Linev
78e911b8c3 Use array_idx as methods args
Avoid mix-up with array_index member

Co-Authored-By: Niels Lohmann <niels.lohmann@gmail.com>
2020-03-19 11:52:40 +01:00
Niels Lohmann
19843b038c Merge pull request #1933 from dota17/dota17-FAQ
Update README.md : add a FAQ about memory release
2020-03-19 11:25:47 +01:00
Niels Lohmann
ebb5a4c09f 💰 add sponsor 2020-03-19 11:14:50 +01:00
chenguoping
bfc003cadf catch exceptions for json_point : /xx/+99 2020-03-17 20:49:28 +08:00
chenguoping
2ccdfebaa7 fix typo 2020-03-14 18:10:55 +08:00
Niels Lohmann
54656ef279 Merge pull request #1956 from dota17/dota17-fix-typo
Fix typo in examples
2020-03-13 17:26:24 +01:00
Niels Lohmann
d102da61ad Merge pull request #1979 from alex-weej/patch-2
README: Fix string representation of `dump`ed `json`
2020-03-13 16:49:13 +01:00
Sergey Linev
00049c20d0 Rename argument array_index to array_indx in json_pointer methods
Fixes gcc48 warning:

declaration of ‘array_index’ shadows a member of 'this' [-Wshadow]
2020-03-11 07:41:53 +01:00
Alexander “weej” Jones
5fdb1d08aa README: Fix string representation of dumped json
As is it's confusing and inconsistent with the indented form right below. The backslash escapes make it confusing.
2020-03-10 19:37:20 +00:00
Francois Chabot
41b0704ce1 removed move assignments from input adapters 2020-03-02 23:50:01 -05:00
Francois Chabot
7eadd6daef added back forward declaration to address warnings 2020-02-28 18:15:11 -05:00
dota17
699e0a923c fix typo in examples 2020-02-26 13:44:08 +08:00
Francois Chabot
c7282d5b1e simpler endian detection for older gcc versions 2020-02-20 10:19:29 -05:00
Francois Chabot
770ae6e9da accomodate older gcc 2020-02-19 16:54:09 -05:00
Francois Chabot
de35fad88e fixed missing return arg of operator=() 2020-02-19 15:23:49 -05:00
Francois Chabot
2e2cf02cfd duck-typed object input adapters 2020-02-19 14:59:31 -05:00
Francois Chabot
a0c4fc945a fixed bad friend class declaration 2020-02-19 11:23:02 -05:00
Francois Chabot
617b3cf42e templated input adapters 2020-02-19 10:32:49 -05:00
Chen
42566c6bef Update README.md 2020-02-17 15:40:52 +08:00
Niels Lohmann
61b46a56fb 🏗️ replace is_pod by is_trivial 2020-02-15 10:12:27 +01:00
Chen
88097a250f Update README.md : add a FAQ about memory release 2020-02-10 21:03:57 +08:00
Niels Lohmann
973c52dd4a Merge pull request #1923 from Coeur/typos
Some typos
2020-02-02 14:48:07 +01:00
Antoine Cœur
8d92ca865f Some typos 2020-02-02 17:29:37 +08:00
Niels Lohmann
6a6790ab68 Merge pull request #1917 from jothepro/update-links-to-hunter
Readme: Updated links to hunter repo & docs
2020-01-31 11:47:42 +01:00
Niels Lohmann
3eb6b0e7a2 Merge pull request #1918 from kastiglione/patch-1
Fix link to parse function in README
2020-01-31 11:46:53 +01:00
Dave Lee
f25a1287f9 Fix link to parse function in README 2020-01-29 14:19:00 -08:00
jothepro
0257533866 Updated links to hunter repo & docs
hunter was recently passed over to a new maintainer, this is why the github url & the link to the documentation have changed.
2020-01-29 22:33:59 +01:00
Niels Lohmann
6ca5338a0c Merge pull request #1909 from Klaim/patch-1
Adds instruction for using Build2's package manager
2020-01-28 19:00:45 +01:00
Joël Lamotte
ab538ba523 Formatting
(proper naming suggested by `build2`'s author)
2020-01-21 17:49:23 +01:00
Joël Lamotte
708e107d8e Adds instruction for using Build2's package manager
I created a `nlohmann-json` package for `build2` (https://build2.org) that have been published on the central public repository https://cppget.org : https://cppget.org/nlohmann-json (at the moment you can see that there is only one version: 3.7.3).

The repository of the package code is there: https://github.com/build2-packaging/nlohmann-json and is owned by the build2 community now. (with build2 you can use either a repository like cppget.org or a git repository so both are useful to users for different use cases).

This patch just add the basic information as to how to use this library with build2.
2020-01-20 14:50:15 +01:00
Niels Lohmann
ad383f66bc Merge pull request #1907 from pauljurczak/patch-1
Update README.md
2020-01-19 22:45:53 +01:00
Paul Jurczak
bc95563814 Update README.md 2020-01-18 14:25:03 -07:00
Niels Lohmann
7acf6218b6 📝 fix typo #1903 2020-01-15 17:40:03 +01:00
Niels Lohmann
0feea6168d 📝 fix scanner documentation 2020-01-12 10:22:11 +01:00
Niels Lohmann
bde5712418 Merge pull request #1871 from sonulohani/develop
Fix warning: ignoring return value
2019-12-16 15:06:47 +01:00
Sonu Lohani
4c1ebb4413 Fix warning: ignoring return value 2019-12-16 14:22:41 +05:30
Niels Lohmann
b568619c4a 💰 add sponsor section 2019-12-15 19:26:51 +01:00
Niels Lohmann
bccc8f0577 Merge pull request #1857 from gocarlos/develop
docs: add central repository as conan source to readme
2019-12-01 11:53:24 +01:00
Carlos Gomes Martinho
ac9df48453 style: format readme 2019-12-01 10:23:24 +01:00
Carlos Gomes Martinho
f44e8ac090 revert: adding conan badge 2019-12-01 10:22:48 +01:00
Carlos Gomes Martinho
134a5faa2b docs: add central repository as conan source to readme 2019-11-29 13:49:53 +01:00
Niels Lohmann
c3270ac734 Merge pull request #1853 from podsvirov/readme-msys2-package-rename
README: Package in MSYS2 renamed to nlohmann-json
2019-11-23 09:21:52 +01:00
Konstantin Podsvirov
f586bc014f README: Package in MSYS2 renamed to nlohmann-json
This is done to correctly match with the
corresponding package in Archlinux.
2019-11-23 05:02:20 +03:00
Niels Lohmann
c0f52edbc3 📝 add badges 2019-11-22 21:17:31 +01:00
Niels Lohmann
a4c01f3380 👥 add GitHub Sponsors 2019-11-22 20:58:44 +01:00
Niels Lohmann
3f044dad81 📝 add Xocde 11.2.1 to CI list 2019-11-22 08:00:41 +01:00
Niels Lohmann
28b1448508 👷 add Xcode 11.2.1
https://twitter.com/travisci/status/1197625080119021568
2019-11-21 22:22:06 +01:00
Niels Lohmann
7439cfe5c8 Merge pull request #1844 from Tridacnid/develop
Update tests that generate CMake projects to use main project's C++ compiler
2019-11-19 19:27:14 +01:00
Niels Lohmann
b2bec943d1 Merge pull request #1846 from Mike-Bal/fix_warnings
Fix msvc warnings
2019-11-19 19:24:36 +01:00
Michael Balszun
25e0175bc3 Remove unnecessary warning suppressions in test cmake file 2019-11-19 11:26:35 +01:00
Michael Balszun
5c045f7d0a Use correct accumulator type in binary_writer if size_t != ul
- Also fixes warning in msvc about possible loss of data in
  that size computation.
2019-11-19 11:06:45 +01:00
Joe Burzinski
fbb0bd7556 Update tests that generate CMake projects to use the CMAKE_CXX_COMPILER the main project was CMake'd with. Fixes #1747. 2019-11-18 21:46:34 -06:00
Niels Lohmann
e7b3b40b5a Merge branch 'release/3.7.3' into develop 2019-11-17 12:21:44 +01:00
Niels Lohmann
c5eafe74e8 🔖 set version to 3.7.3 2019-11-17 12:09:12 +01:00
Niels Lohmann
c6e1e26018 Merge pull request #1838 from nickaein/fix-quadratic-destruction
Fix quadratic destruction complexity
2019-11-15 07:02:12 +01:00
Isaac Nickaein
efa13c663d Reserve stack only for top-level items 2019-11-13 15:23:08 +03:30
Isaac Nickaein
948f98cf4a Cleanups
Make our intent more clear in destruction
2019-11-12 22:24:11 +03:30
Isaac Nickaein
0f3ec003bb Remove harmful vector::reserve during destruction (#1837) 2019-11-12 22:22:55 +03:30
Niels Lohmann
be61ad1470 🎨 fix inconsistent operator style 2019-11-11 21:37:32 +01:00
Niels Lohmann
411158d896 Merge branch 'release/3.7.2' into develop 2019-11-10 21:39:14 +01:00
Niels Lohmann
56109eacd7 🔖 set version to 3.7.2 2019-11-10 21:23:39 +01:00
Niels Lohmann
7b0c50b9a5 🔨 add path 2019-11-10 19:09:48 +01:00
Niels Lohmann
0a513a35cb Merge pull request #1436 from nickaein/iterate-on-destruction
Prevent stackoverflow caused by recursive deconstruction
2019-11-10 11:57:06 +01:00
Isaac Nickaein
7e2445a0f4 Move deep JSON test to a separate unit-test 2019-11-09 21:42:39 +03:30
Isaac Nickaein
68d0a7b246 Reduce depth in unit-test to avoid choking valgrind 2019-11-09 21:19:12 +03:30
Isaac Nickaein
eec1974218 Merge remote-tracking branch 'nlohmann/develop' into iterate-on-destruction 2019-11-09 14:50:48 +03:30
Niels Lohmann
67259d698f Merge pull request #1830 from nlohmann/whitesource/configure
Configure WhiteSource Bolt for GitHub
2019-11-08 14:04:27 +01:00
whitesource-bolt-for-github[bot]
760076abca Add .whitesource configuration file 2019-11-08 13:01:29 +00:00
Niels Lohmann
1a9de88117 🚨 fix a linter warning
Coverity detected two "Memory - illegal accesses  (OVERRUN)" issues. Resizing the buffer should silence this warning.
2019-11-07 08:00:21 +01:00
Niels Lohmann
d98bf0278d Merge branch 'release/3.7.1' into develop 2019-11-06 20:34:07 +01:00
Niels Lohmann
aacdc6bbe3 🔖 set version to 3.7.1 2019-11-06 18:37:26 +01:00
Niels Lohmann
0f6a58eeaf 👥 update contributors 2019-11-06 17:35:04 +01:00
Niels Lohmann
1e9f16dff0 🚨 fix linter errors 2019-11-05 20:25:53 +01:00
Niels Lohmann
c0ae88bf50 🚨 fix linter errors 2019-11-05 20:23:17 +01:00
Niels Lohmann
62dada05ca 🐛 fix conversion to std::valarray
closes #1824
2019-11-05 19:28:00 +01:00
Niels Lohmann
7bcaba0ca9 Merge pull request #1821 from AnthonyVH/develop
Fix for #1647
2019-11-05 19:15:54 +01:00
Niels Lohmann
1ca6f2901b Merge pull request #1826 from cbegue/develop
Add restriction for tuple specialization of to_json
2019-11-05 19:14:37 +01:00
Niels Lohmann
abccafa5c5 ⬆️ upgrade Doctest to 2.3.5 2019-11-05 19:11:54 +01:00
Anthony VH
c4923e3d05 Merge remote-tracking branch 'upstream/develop' into develop 2019-11-04 20:50:43 +01:00
Anthony VH
ec9647ae63 Moved test for #1647 regression to regressions file. 2019-11-04 20:45:24 +01:00
Camille Bégué
8b686b30eb Add restriction for tuple specialization of to_json
This commit fix the issue #1825

Signed-off-by: Camille Bégué <c.begue@samsung.com>
2019-11-04 09:57:16 +01:00
Niels Lohmann
3790bd9ae0 👷 add Xcode 10.2 2019-11-04 06:22:39 +01:00
Niels Lohmann
42e9ad32c6 🔨 remove full path 2019-11-03 21:49:22 +01:00
Niels Lohmann
e779714dd8 👷 add Xcode 10.2 2019-11-03 20:45:21 +01:00
Niels Lohmann
bf2afaeee6 🔊 add version output 2019-11-03 20:27:07 +01:00
Niels Lohmann
6a4cc29f01 📝 update examples 2019-11-03 19:40:38 +01:00
Niels Lohmann
dfe53c36da 🚨 fix UBSAN warnings 2019-11-03 13:48:25 +01:00
Niels Lohmann
0db1692f45 👥 update contributors 2019-11-02 10:24:06 +01:00
Niels Lohmann
1307862b1d Merge pull request #1694 from eli-schwartz/release-include-meson
release: add singleinclude and meson.build to include.zip
2019-11-02 09:28:51 +01:00
Niels Lohmann
4d1e4c6d93 Merge pull request #1780 from t-b/add-msvc-16-2019
appveyor.yml: Add MSVC 16 2019 support
2019-11-02 08:16:53 +01:00
Niels Lohmann
a1828bbf57 Merge pull request #1806 from cbegue/develop
Fix issue #1805
2019-11-01 19:46:19 +01:00
Camille Bégué
794a3d411a Fix issue #1805
* Add some restriction on pair partial specialization of to_json

Signed-off-by: Camille Bégué <camille.begue.pro@gmail.com>
2019-10-31 18:04:15 +01:00
Anthony Van Herrewege
ddda67a096 Don't capture json input by value (fixed #1822). 2019-10-30 16:16:34 +01:00
Anthony Van Herrewege
fb9a2643c8 Add test for #1647. 2019-10-30 15:46:31 +01:00
Anthony Van Herrewege
27d0dfc17a Fix #1647: non-member operator== breaks enum (de)serialization. 2019-10-30 14:54:52 +01:00
Niels Lohmann
f272ad533d 👥 add CODEOWNERS file 2019-10-23 21:41:12 +02:00
Niels Lohmann
f7e7a62358 📝 add comment on JSON_THROW_USER, JSON_TRY_USER, and JSON_CATCH_USER 2019-10-23 20:58:06 +02:00
Niels Lohmann
507d5676ad 🚨 fix warning 2019-10-23 20:57:10 +02:00
Niels Lohmann
00cb98a3d1 Merge pull request #1803 from flopp/spelling
Fix some spelling errors - mostly in comments & documentation.
2019-10-21 20:50:13 +02:00
Florian Pigorsch
b93d414a35 Fix some spelling errors - mostly in comments & documentation.
I did not touch the Changelog file and any third party stuff.

additonal -> additional (1)
apppend -> append (2)
constuctor -> constructor (2)
contect -> context (2)
dobulequote -> doublequote (1)
elemnts -> elements (1)
exakt -> exact (2)
exluded -> exclude (1)
explicitely -> explicitly (2)
narcissic -> narcissistic (1)
ocurred -> occurred (1)
occuring -> occurring (2)
preceeds -> preceded (1)
ot -> to (2)
wehther -> whether (2)
2019-10-19 11:59:51 +02:00
Eli Schwartz
f4332d4097 README: describe how to use json as a meson subproject
Also call out to the guidelines for using pkg-config dependencies first,
and reference it for other build systems as well.

Although the possibility of installing with a pkg-config file is
somewhat hidden away in the meson docs, it's been deemed less invasive
due to not distracting away from cmake. So it will have to do.
2019-10-17 15:38:06 -04:00
Eli Schwartz
84faa36ec5 release: add singleinclude and meson.build to include.zip
This serves as a minimal release-only way to embed json into a project.
Add meson support to this directly, to make it usable standalone as a
meson subproject.

Implements #1672
2019-10-17 15:26:51 -04:00
Niels Lohmann
0245ae5157 Merge pull request #1797 from t-b/fix-integer-truncation
iteration_proxy: Fix integer truncation from std::size_t to int
2019-10-17 21:02:48 +02:00
Niels Lohmann
4c06191836 Merge pull request #1799 from nemequ/develop
Update Hedley to v11.
2019-10-17 20:59:49 +02:00
Evan Nemerson
fbcbc76d10 Update Hedley to v11. 2019-10-16 13:39:40 -07:00
Thomas Braun
c6cbdf96a9 appveyor.yml: Add debug build on x64 and VS 2019 2019-10-16 22:34:33 +02:00
Thomas Braun
01e486bb55 appveyor.yml: Add MSVC 16 2019 support 2019-10-16 22:34:33 +02:00
Thomas Braun
35b47c2793 iteration_proxy: Fix integer truncation from std::size_t to int
Bug introduced in 0f073e26 (Allow items() to be used with custom string,
2019-09-26).
2019-10-16 20:00:05 +02:00
Thomas Braun
5541a2bd25 test/cmake_import: Pass the generator platform required by MSVC 2019 2019-10-16 17:10:19 +02:00
Thomas Braun
7a521150aa appveyor: Pass the generator platform explicitly
In a future commit we want to add support for MSVC 2019. For that
version cmake requires us to pass in the architecture not part of the
generator but explicitly.

So let's pass that in always like that. This also removes the doubling
of the platform/architecture.
2019-10-16 17:10:19 +02:00
Niels Lohmann
ed5541440a Merge pull request #1779 from t-b/avoid-using-glob-in-cmake
test/CMakeLists.txt: Use an explicit list instead of GLOB
2019-10-09 07:37:43 +02:00
Thomas Braun
eb6fe421ae test/CMakeLists.txt: Use an explicit list instead of GLOB
Using GLOB is slow and considered bad practice.

From https://cmake.org/cmake/help/latest/command/file.html:

> We do not recommend using GLOB to collect a list of source files from
> your source tree. If no CMakeLists.txt file changes when a source is
> added or removed then the generated build system cannot know when to ask
> CMake to regenerate. The CONFIGURE_DEPENDS flag may not work reliably on
> all generators, or if a new generator is added in the future that cannot
> support it, projects using it will be stuck. Even if CONFIGURE_DEPENDS
> works reliably, there is still a cost to perform the check on every
> rebuild.
2019-10-07 21:13:09 +02:00
Niels Lohmann
d187488e0d Merge pull request #1765 from crazyjul/fix/items-with-alt-string
Allow items() to be used with custom string
2019-10-05 22:11:14 +02:00
Niels Lohmann
dae0fe79af Merge pull request #1769 from chris0x44/json_pointer
Make json_pointer::back const (resolves #1764)
2019-10-03 10:35:34 +02:00
Niels Lohmann
d826282f53 Merge pull request #1767 from 0xflotus/patch-1
did you mean 'serialization'?
2019-10-01 11:32:05 +02:00
Julien Hamaide
4615f5a980 Provide default implementation for int_to_string, but allow for overloaded function 2019-10-01 10:34:21 +02:00
christian
7476f5ee0c Make json_pointer::back const (resolves #1764) 2019-10-01 00:57:27 +02:00
0xflotus
d7579b8cbf did you mean 'serialization'? 2019-09-30 18:11:44 +02:00
Julien Hamaide
0f073e26eb Allow items() to be used with custom string 2019-09-26 13:20:57 +02:00
Niels Lohmann
99d7518d21 📝 add OSS Fuzz status badge 2019-09-24 21:01:06 +02:00
Niels Lohmann
e2c531a1f7 Merge pull request #1760 from Xav83/cppcheckFixes
Cppcheck fixes
2019-09-24 20:42:38 +02:00
Xav83
87afee1c39 Runs make amalgamate on the project. 2019-09-20 11:45:38 +02:00
Xav83
13a7c60257 Correct a warning from cppcheck:
binary_writer.hpp:869: (style) Consider using std::accumulate algorithm instead of a raw loop.

910a7d2b87/checks (step):5:107

Signed-off-by: Xav83 <x.jouvenot@gmail.com>
2019-09-20 11:45:38 +02:00
Xav83
b9dfdbe6be Correct a warning from cppcheck:
binary_reader.hpp:650: (style) Unsigned expression 'mant' can't be negative so it is unnecessary to test it

910a7d2b87/checks (step):5:84

Signed-off-by: Xav83 <x.jouvenot@gmail.com>
2019-09-19 19:25:55 +02:00
Niels Lohmann
771d5dadc6 Merge pull request #1741 from tete17/Fix-SFINAE
Fix and add test's for SFINAE problem
2019-09-16 22:39:42 +02:00
Hubert Chathi
cade804c1a make CMake's version config file architecture-independent 2019-09-10 23:41:38 -04:00
Miguel Sacristan
e26a2904fc Fix and add test's for SFINAE problem 2019-09-10 21:36:23 +02:00
Niels Lohmann
06ccd43a2a Merge pull request #1722 from t-b/fix-int64-min-issue
Fix int64 min issue
2019-09-10 07:58:02 +02:00
Niels Lohmann
a6bd798bfa Merge pull request #1728 from t-b/fix-clang-sanitizer-invocation
Fix clang sanitizer invocation
2019-09-10 07:50:02 +02:00
Thomas Braun
8067c3ca5b Add serialization unit tests for extreme integer values 2019-09-03 13:55:19 +02:00
Thomas Braun
70aa8a31a2 Add regression test for dumping the minimum value of int64_t 2019-09-03 13:55:19 +02:00
Thomas Braun
6ce2f35ba8 Fix outputting extreme integer values in edge cases
For some gcc version (Ubuntu 5.5.0-12ubuntu1~16.04) the existing code
crashes when the minimum value of int64_t is outputted.

Resurrect the code from before 546e2cbf (🚨 fixed some warnings,
2019-03-13) but delegate the sign removal so that the compilers don't
complain about taking the negative value of an unsigned value.

In addition we also rewrite the expression so that we first increment
and then negate.

The definition of remove_sign(number_unsigned_t) is never called as
unsigned values are never negative.
2019-09-03 13:55:15 +02:00
Thomas Braun
6d701b29df .travis.yml: Increase the timeout to 45 minutes
The clang sanitizer tests, and there especially the unicode tests, can
hit the default timeout of 25 minutes (1500 seconds) quite easily, so
let's raise the timeout to 45 minutes (2700 seconds).
2019-09-03 13:32:25 +02:00
Thomas Braun
d5c0d52f37 external_constructor<std::valarray>: Handle empty array properly
Clang UBSAN complains with the following message when an empty std::valarray is passed in:

SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/valarray:571:14 in

2/2 Test #68: test-regression_all ..............***Failed    4.68 sec
/usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/valarray:571:14: runtime error: reference binding to null pointer of type 'const do
uble'
    #0 0x6fbe57 in std::valarray<double>::operator[](unsigned long) const /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/valarray:
571:7
    #1 0x6fbe57 in double const* std::begin<double>(std::valarray<double> const&) /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/v
alarray:1207
    #2 0x6fbe57 in void nlohmann::detail::external_constructor<(nlohmann::detail::value_t)2>::construct<nlohmann::basic_json<std::map, std::vector, s
td::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_seri
alizer>, double, 0>(nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool
, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>&, std::valarray<double> const&) /home/firma/devel/json/include/nlohmann/deta
il/conversions/to_json.hpp:157
    #3 0x5e3fe3 in void nlohmann::detail::to_json<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>
, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>, double, 0>(nlohmann::basic_json<std::map, std
::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohman
n::adl_serializer>&, std::valarray<double> const&) /home/firma/devel/json/include/nlohmann/detail/conversions/to_json.hpp:270:5
    #4 0x5e3fe3 in decltype((to_json(fp, std::forward<std::valarray<double>&>(fp0))) , ((void)())) nlohmann::detail::to_json_fn::operator()<nlohmann:
:basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double
, std::allocator, nlohmann::adl_serializer>, std::valarray<double>&>(nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std
::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>&, std::valarray<double>&) c
onst /home/firma/devel/json/include/nlohmann/detail/conversions/to_json.hpp:334
    #5 0x5e3fe3 in decltype((nlohmann::(anonymous namespace)::to_json(fp, std::forward<std::valarray<double>&>(fp0))) , ((void)())) nlohmann::adl_ser
ializer<std::valarray<double>, void>::to_json<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, st
d::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>, std::valarray<double>&>(nlohmann::basic_json<std:
:map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator
, nlohmann::adl_serializer>&, std::valarray<double>&) /home/firma/devel/json/include/nlohmann/adl_serializer.hpp:45
    #6 0x5e3fe3 in nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool,
 long, unsigned long, double, std::allocator, nlohmann::adl_serializer>::basic_json<std::valarray<double>&, std::valarray<double>, 0>(std::valarray<d
ouble>&) /home/firma/devel/json/include/nlohmann/json.hpp:1257
    #7 0x5e3fe3 in _DOCTEST_ANON_FUNC_2() /home/firma/devel/json/test/src/unit-regression.cpp:1377
    #8 0x77313e in doctest::Context::run() /home/firma/devel/json/test/thirdparty/doctest/doctest.h:5938:21
    #9 0x777ae0 in main /home/firma/devel/json/test/thirdparty/doctest/doctest.h:6016:71
    #10 0x7fae220532e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0)
    #11 0x4a6479 in _start (/home/firma/devel/json/build/test/test-regression+0x4a6479)

The important thing to note here is that a std::valarray is *not* a STL
container, so the usual containter and iterator semantics don't apply.

Therefore we have to check if the container is non-empty before.
2019-09-03 13:22:03 +02:00
Thomas Braun
61fe5f1eee input_buffer_adapter: Fix handling of nullptr input
Clang UBSAN currently complains that the char * to input_buffer_adapter
is a nullptr.

Turns out it is actually required to accept nullptr, see for example
line 415 in input_adapters.hpp

  ...
  // the address of first cannot be used: use nullptr
  ia = std::make_shared<input_buffer_adapter>(nullptr, len);
  ....

Therefore we have to handle it gracefully here. We now also ignore the
length parameter l if b is a nullptr.
2019-09-03 13:22:03 +02:00
Thomas Braun
9ea3e19121 .travis/cmake: Rework clang sanitizer invocation
- Switch to clang-7
- Adapt PATH so that llvm-symbolizer can be found for useful stacktraces
- Adapt compile flags
  "-O0" ensures much faster compile times
  "-fno-sanitize-recover=all
  -fsanitize-recover=unsigned-integer-overflow" this fails the build on
  all issues except unsigned integer overflows. Not failing in this case
  is required in combination with the sanitizer suppression file as only
  recoverable errors can be suppressed.

The UBSAN suppression file ignores errors from stl_bvector.h (which
holds std::vector<bool>).

Clang reports that error as

SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20 in

      Start 34: test-deserialization_all
28/88 Test #71: test-testsuites_default .............***Failed    0.32 sec
/usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'unsigned int'
    #0 0x628f72 in std::_Bit_iterator_base::_M_bump_down() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20
    #1 0x628d16 in std::_Bit_iterator::operator--() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:251:7
    #2 0x634aac in std::vector<bool, std::allocator<bool> >::pop_back() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:1010:7
    #3 0x61eff0 in bool nlohmann::detail::parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >::sax_parse_internal<nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> > >(nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >*) /home/firma/devel/json/include/nlohmann/detail/input/parser.hpp:439:28
    #4 0x604864 in nlohmann::detail::parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >::parse(bool, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>&) /home/firma/devel/json/include/nlohmann/detail/input/parser.hpp:116:13
    #5 0x5f8079 in nlohmann::operator>>(std::istream&, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>&) /home/firma/devel/json/include/nlohmann/json.hpp:6356:42
    #6 0x5e1d92 in _DOCTEST_ANON_FUNC_21() /home/firma/devel/json/test/src/unit-testsuites.cpp:343:9
    #7 0x7207fe in doctest::Context::run() /home/firma/devel/json/test/thirdparty/doctest/doctest.h:5938:21
    #8 0x72681a in main /home/firma/devel/json/test/thirdparty/doctest/doctest.h:6016:71
    #9 0x7f75d22362e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0)
    #10 0x4c28b9 in _start (/home/firma/devel/json/build/test/test-testsuites+0x4c28b9)

The pop_back() in parser.hpp

      assert(not states.empty());
  ->  states.pop_back();

triggers the UBSAN report. But the assertion above ensure that we only
call pop_back() on an non-empty vector, therefore this is a STL library
bug and thus must be ignored for us.
2019-09-03 13:22:03 +02:00
Thomas Braun
f0bff49ffd test/CMakeLists.txt: Remove trailing whitespace 2019-09-03 13:22:03 +02:00
Niels Lohmann
eab68e7750 👷 add test step 2019-09-02 22:15:11 +02:00
Niels Lohmann
90c1c24ccb 👷 try GitHub Actions 2019-09-02 21:35:53 +02:00
Niels Lohmann
bf4156056b ✏️ fix a typo 2019-08-27 20:18:04 +02:00
Niels Lohmann
b6ee34cc99 Merge branch 'develop' of https://github.com/nlohmann/json into develop 2019-08-27 20:03:05 +02:00
Niels Lohmann
7dccfa5355 Merge pull request #1724 from t-b/enhance-travis
Add gcc 9 and compile with experimental C++20 support
2019-08-27 19:57:23 +02:00
Thomas Braun
a4eaaa56d1 .travis.yml: Add gcc 9 and compile with experimental C++20 support 2019-08-26 12:38:36 +02:00
Niels Lohmann
fe618ac246 👷 adjust maintainer scripts 2019-07-29 18:49:21 +02:00
Niels Lohmann
a015b78e81 🔒 add security policy 2019-07-28 21:46:32 +02:00
Niels Lohmann
6291803f59 👥 update contributors 2019-07-28 21:31:17 +02:00
Niels Lohmann
53c3eefa2c Merge branch 'release/3.7.0' into develop 2019-07-28 21:23:36 +02:00
Niels Lohmann
d275d05514 📝 update documentation 2019-07-28 20:54:02 +02:00
Niels Lohmann
ddb7f70a12 📝 update documentation 2019-07-28 20:53:18 +02:00
Niels Lohmann
48e1fe03b5 🔖 set version to 3.7.0 2019-07-28 20:20:41 +02:00
Niels Lohmann
66d63abe6d Update Makefile 2019-07-28 18:40:11 +02:00
Niels Lohmann
d4fd731f1f 🔨 fix release target 2019-07-28 17:55:01 +02:00
Niels Lohmann
d80f8b09f5 🔨 adjust version 2019-07-28 15:20:07 +02:00
Niels Lohmann
7bf8a86090 🔨 adjust paths 2019-07-28 14:30:17 +02:00
Niels Lohmann
65e4b973bd 🔥 remove leftover file 2019-07-21 14:10:37 +02:00
Niels Lohmann
323cf95d8c 🚨 fix linter warning 2019-07-21 14:04:49 +02:00
Niels Lohmann
ffe0e3d70f Merge pull request #1673 from remyabel/gnuinstalldirs
Use GNUInstallDirs instead of hard-coded path.
2019-07-17 06:28:38 +02:00
Tommy Nguyen
3184e9bd8b Use GNUInstallDirs instead of hard-coded path. 2019-07-16 11:44:32 -04:00
Niels Lohmann
cf8251eb54 🚑 fix compiler errors 2019-07-14 21:19:55 +02:00
Niels Lohmann
6c7cde181c Merge branch 'develop' of https://github.com/nlohmann/json into develop 2019-07-14 20:58:29 +02:00
Niels Lohmann
a501365ea2 Merge branch 'feature/hedley' into develop 2019-07-14 20:58:08 +02:00
Niels Lohmann
8d059b96a1 Merge pull request #1670 from podsvirov/readme-package-managers-msys2
Package Manager: MSYS2 (pacman)
2019-07-13 17:58:08 +02:00
Konstantin Podsvirov
6a3cdb281e Package Manager: MSYS2 (pacman)
Add a package installation instructions for MSYS2 software distro.
2019-07-12 22:27:17 +03:00
Niels Lohmann
b17440c12f 🚨 fix compiler warnings 2019-07-12 21:05:16 +02:00
Niels Lohmann
104c5c1996 Merge branch 'feature/json_pointer_contains' into develop 2019-07-09 08:08:56 +02:00
Niels Lohmann
7a23aa1c0d Merge branch 'feature/emplace_back' into develop 2019-07-09 08:06:27 +02:00
Niels Lohmann
24fa285edb 📝 remove HEDLEY annotation from documentation 2019-07-02 21:15:52 +02:00
Niels Lohmann
947656544d 🚨 fix warnings 2019-07-02 21:06:42 +02:00
Niels Lohmann
346e9813c5 🚧 add more annotations 2019-07-02 20:25:51 +02:00
Niels Lohmann
9289a23a76 Merge pull request #1643 from kevinlul/develop
Fix json.hpp compilation issue with other typedefs with same name (Issue #1642)
2019-07-01 22:57:04 +02:00
Niels Lohmann
90798caa62 🚚 rename Hedley macros 2019-07-01 22:37:30 +02:00
Niels Lohmann
025f4cea42 🚨 fix warning 2019-07-01 22:29:21 +02:00
Niels Lohmann
897362191d 🔨 add NLOHMANN_JSON prefix and undef macros 2019-07-01 22:24:39 +02:00
Niels Lohmann
1720bfedd1 ⚗️ add Hedley annotations 2019-06-30 22:14:02 +02:00
kevinlul
e616d095ab Remove boolean regression test for #1642 2019-06-30 11:57:57 -04:00
Niels Lohmann
1be63431f3 make emplace_back return a reference #1609 2019-06-30 12:19:41 +02:00
Niels Lohmann
258fa798f1 add contains function for JSON pointers 2019-06-30 10:03:08 +02:00
kevinlul
855156b5e8 Add regression tests for #1642 2019-06-29 19:26:38 -04:00
Niels Lohmann
9a775bcb14 Merge pull request #1570 from nickaein/msvc-regression-tests
Regression tests for MSVC
2019-06-25 07:05:53 +02:00
Isaac Nickaein
5b2e2305a0 CI: Skip test-unit_all on MSVC Debug builds 2019-06-24 21:21:58 +04:30
Isaac Nickaein
3db14cbfae 📝 Improve doc on const_inter constructor 2019-06-24 15:40:01 +04:30
Isaac Nickaein
0a137b78ac Appveyor: Set timeout of unit-tests in appveyor.yml instead of CMake 2019-06-22 22:14:40 +04:30
Isaac Nickaein
f559142008 Appveyor: Set build mode explicitly 2019-06-22 21:15:17 +04:30
Isaac Nickaein
eba8244ead Avoid collision of ::max with windows.h macro 2019-06-22 21:15:13 +04:30
Isaac Nickaein
798e83a038 Workaround msvc2015 bug with explicit copy-constructor for const_iterator 2019-06-22 21:15:11 +04:30
Isaac Nickaein
d28b4b900e Add a separate build with Windows.h included 2019-06-22 21:15:07 +04:30
Isaac Nickaein
4ac0fe2628 Increase timeout of test-unicode_all in Debug build 2019-06-22 21:15:03 +04:30
Isaac Nickaein
ec43d27f9f Add Debug builds for AppVeyor 2019-06-22 21:14:51 +04:30
Niels Lohmann
39011a1759 📝 mention json type in documentation start page #1616 2019-06-22 09:54:59 +02:00
Niels Lohmann
3b82a350ed 📝 mention 302 exception in value() documentation #1601 2019-06-22 09:44:12 +02:00
Niels Lohmann
13d4f8f5ad Merge pull request #1639 from taylorhoward92/develop
Add explicit conversion from json to std::string_view in conversion unit test
2019-06-22 09:25:02 +02:00
kevinlul
f4fca2d59a Fix #1642
While in our case, only the string case was affected, to be safe and allow the library to work with other unforeseen cases, all of the cases have been wrapped with parentheses.

Thank you @DyXel and @edo9300
2019-06-16 18:22:40 -04:00
Taylor Howard
2f389cdde7 Added explicit converstion to std::string_view. Fixes failing test with GCC 8.3 2019-06-16 14:49:01 +10:00
Niels Lohmann
4fc98e0b34 Merge pull request #1625 from nickaein/fix-docs
Minor fixes in docs
2019-06-05 20:25:48 +02:00
Isaac Nickaein
0c214949f5 ✏️ Fix links to create an issue page 2019-06-04 11:27:25 +04:30
Isaac Nickaein
b22c577e83 ✏️ Fix brew instructions in README 2019-06-04 11:25:44 +04:30
Isaac Nickaein
0d55ddc5bf ✏️ Fix a typo in README 2019-06-04 11:24:22 +04:30
Niels Lohmann
17c0849a63 Merge pull request #1585 from Macr0Nerd/iss916
Added to_string and added basic tests
2019-05-24 09:20:15 +02:00
Niels Lohmann
9f2179deb1 Merge pull request #1598 from nickaein/patch-2
Fix broken links to documentation
2019-05-24 09:16:38 +02:00
Isaac Nickaein
40c3d5024a Fix broken links to documentation
Fixes #1597 and some other links
2019-05-12 22:04:01 +04:30
Macr0Nerd
26952500b8 Merge branch 'iss916' of https://github.com/Macr0Nerd/json into iss916 2019-04-26 18:15:52 -05:00
Macr0Nerd
aa4c45ee4d Added to_string (with ugly macro) and tests 2019-04-26 18:10:45 -05:00
Macr0Nerd
293cd6b794 Added to_string and added basic tests 2019-04-25 22:12:15 -05:00
Niels Lohmann
ee4028b8e4 Merge branch 'feature/fastcov' into develop 2019-04-06 09:15:43 +02:00
Niels Lohmann
cf6b6692aa Merge branch 'develop' into feature/fastcov 2019-04-06 09:03:35 +02:00
Niels Lohmann
f0bc16d899 🔨 overworked coverage targets 2019-04-06 09:02:17 +02:00
Niels Lohmann
b4b06d89b5 ⬆️ updated fastcov 2019-04-06 00:24:19 +02:00
Niels Lohmann
e65cff2a8f 🔨 small cleanup 2019-04-05 23:31:04 +02:00
Niels Lohmann
63fe1cbbcf 📝 updated README 2019-04-05 18:29:57 +02:00
Niels Lohmann
0bdadb12c7 Merge branch 'feature/circleci' into develop 2019-04-05 17:50:48 +02:00
Niels Lohmann
0a1ddd6882 ⬆️ updated fastcov 2019-04-05 07:54:46 +02:00
Niels Lohmann
4676f759e8 ⬆️ updated fastcov 2019-04-04 09:50:27 +02:00
Niels Lohmann
da279234d5 Merge branch 'develop' into feature/fastcov 2019-04-04 09:03:11 +02:00
Niels Lohmann
f05614b240 🏗️ adding anonymous namespace 2019-04-04 08:56:36 +02:00
Niels Lohmann
0da99027b7 🚨 silenced a warning 2019-04-03 17:44:09 +02:00
Niels Lohmann
1f03395e2c Merge branch 'develop' of https://github.com/nlohmann/json into develop 2019-04-03 17:28:50 +02:00
Niels Lohmann
2f9095ddab 🔨 relaxed requirements to coverage 2019-04-03 17:28:47 +02:00
Niels Lohmann
ee8732c359 Merge pull request #1555 from theodelrieu/fix/1511
Fix/1511
2019-04-03 17:24:25 +02:00
Niels Lohmann
d1ef75316e Merge pull request #1439 from onqtam/doctest
moved from Catch to doctest for unit tests
2019-04-03 17:01:48 +02:00
Théo DELRIEU
d66abda4ee tests: fix coverage 2019-04-03 12:34:15 +02:00
Théo DELRIEU
e6e6805c6c add built-in array support in get_to 2019-04-01 17:47:45 +02:00
Théo DELRIEU
2806b201a8 make sure values are overwritten in from_json overloads
Caused unexpected behaviors when using get_to with values previously
set.

Fixes !1511
2019-04-01 17:47:42 +02:00
onqtam
da5b7833a0 fixing the remaining of the pedantic gcc/clang target warnings 2019-03-31 13:57:44 +03:00
Viktor Kirilov
64873fb5b8 Merge branch 'develop' into doctest 2019-03-30 23:23:33 +02:00
Niels Lohmann
80daa19331 👷 Ninja seems not to work 2019-03-30 17:39:50 +01:00
Niels Lohmann
0a57c51a69 👷 adding concurrency 2019-03-30 17:32:52 +01:00
Niels Lohmann
a5e00f2cf7 👷 fixed path 2019-03-30 17:19:27 +01:00
Niels Lohmann
5ebe722045 👷 full workflow 2019-03-30 17:14:50 +01:00
Niels Lohmann
ecf4d5e91d 👷 trying CircleCI 2019-03-30 17:05:43 +01:00
Niels Lohmann
53001414c7 🔨 using --exclude-gcov to exclude files 2019-03-30 17:00:30 +01:00
Niels Lohmann
b12287b362 ⚗️ trying fastcov 2019-03-30 09:12:32 +01:00
Niels Lohmann
b21c04c938 🔥 removed unsupported flag 2019-03-29 17:34:58 +01:00
Niels Lohmann
c7878173f9 🔨 minor changes to maintainer targets 2019-03-29 13:10:11 +01:00
Niels Lohmann
b52c3638f5 Merge pull request #1551 from heavywatal/fix-1535-nodiscard-clang
Remove C++17 extension warning from clang; #1535
2019-03-29 09:14:25 +01:00
Niels Lohmann
d21d298397 🎨 fixed indentation 2019-03-28 14:23:26 +01:00
Niels Lohmann
23635704c3 ⬆️ added script to update cpplint 2019-03-28 14:23:07 +01:00
Niels Lohmann
191aa0fd6f 🔧 overworked maintaner targets 2019-03-28 14:22:48 +01:00
Watal M. Iwasaki
5ccdaf643f Remove C++17 extension warning from clang; #1535
- Switch off `nodiscard` for clang unless C++17 is detected.
- Detect C++ standard before the switch.
2019-03-28 14:38:58 +09:00
onqtam
b4def6dcba tabs instead of spaces... 2019-03-27 01:13:10 +02:00
onqtam
a0000c3235 finished the last of the warnings 2019-03-27 01:09:47 +02:00
onqtam
5d511a6e96 fixed a bunch of warnings from the Makefile from the root of the repo 2019-03-27 00:58:53 +02:00
Viktor Kirilov
82af0ecdc1 Merge branch 'develop' into doctest 2019-03-26 23:32:32 +02:00
Niels Lohmann
d79c16801a Merge branch 'feature/doozer' into develop 2019-03-26 10:49:56 +01:00
Niels Lohmann
24d91cf36f 📝 added Doozer to README 2019-03-26 10:49:14 +01:00
Niels Lohmann
0991824584 👷 version output 2019-03-26 10:41:05 +01:00
onqtam
0caf986505 reverted the removal of this if/else branching - this is the easiest way to get -std=c++0x support 2019-03-25 22:04:37 +02:00
Niels Lohmann
9d2f0391e0 👷 fixed timeout 2019-03-25 12:30:45 +01:00
Niels Lohmann
af9da22b87 👷 adding xenial-armhf 2019-03-25 07:15:03 +01:00
Niels Lohmann
0a67b51fce 👷 forgot path to ctest 2019-03-25 07:03:41 +01:00
Niels Lohmann
e27b282033 👷 skip certificate check 2019-03-25 06:45:35 +01:00
Niels Lohmann
cde0b24389 👷 fixed required packages 2019-03-25 06:43:14 +01:00
Niels Lohmann
f091fe31bc 👷 increased timeout 2019-03-25 06:39:41 +01:00
Niels Lohmann
28dfbedda7 👷 fixed timeout 2019-03-24 18:14:59 +01:00
onqtam
ff51a32be1 updated doctest to version 2.3.1 released today 2019-03-24 17:28:52 +02:00
onqtam
2b346099df Merge branch 'develop' of https://github.com/nlohmann/json into doctest 2019-03-24 17:21:44 +02:00
Niels Lohmann
dcbc028b5b 👷 fixed syntax 2019-03-24 09:02:46 +01:00
Niels Lohmann
842d42b135 👷 unified paths 2019-03-24 09:02:06 +01:00
Niels Lohmann
1e86976cfe 👷 fixed paths 2019-03-24 08:53:30 +01:00
Niels Lohmann
30211477b7 👷 fixed package name 2019-03-24 08:36:01 +01:00
Niels Lohmann
5e1cae0a7d 👷 install g++ 2019-03-24 08:24:50 +01:00
Niels Lohmann
c871c9a01c 👷 install correct g++ 2019-03-24 06:51:10 +01:00
Niels Lohmann
63d619e21f 👷 need to install g++ 2019-03-24 00:48:59 +01:00
Niels Lohmann
c94b764a6e 👷 fixed installation 2019-03-24 00:43:01 +01:00
Niels Lohmann
65cdccfa8a 👷 fixed syntax error 2019-03-24 00:36:46 +01:00
Niels Lohmann
a72ac18514 👷 use recent cmake 2019-03-24 00:36:05 +01:00
Niels Lohmann
4327ae0bef 👷 need more recent cmake for CentOS 2019-03-24 00:15:57 +01:00
Niels Lohmann
fabf953305 👷 fixed a typo 2019-03-24 00:12:36 +01:00
Niels Lohmann
6e3e2ee2e4 👷 fixed buildenv values 2019-03-24 00:11:20 +01:00
Niels Lohmann
bc5089e803 👷 add test output to avoid timeout 2019-03-24 00:02:41 +01:00
Niels Lohmann
7dd3e6384b 👷 added Fedora and CentOS 2019-03-23 23:42:29 +01:00
Niels Lohmann
490c6e926e 👷 using raspbian 2019-03-23 23:27:39 +01:00
Niels Lohmann
2fcca259b0 👷 added cmake 2019-03-23 23:21:17 +01:00
Niels Lohmann
72dd6f349e 👷 trying doozer 2019-03-23 23:18:27 +01:00
Niels Lohmann
baaa2a4d0f 🏁 trying to use constructors from std::allocator #1536 2019-03-21 14:09:29 +01:00
Niels Lohmann
1126c9ca74 Merge branch 'release/3.6.1' into develop 2019-03-20 21:03:43 +01:00
Niels Lohmann
efa1b9a7bb 🔖 set version to 3.6.1 2019-03-20 20:50:05 +01:00
Niels Lohmann
b33093d610 🐛 fixed regression #1530 2019-03-20 14:40:23 +01:00
Niels Lohmann
9d6ab9014f 🏁 fixed a compilation error in MSVC #1531 2019-03-20 14:13:29 +01:00
Niels Lohmann
c790b9f8c0 🐛 fixed regression #1530 2019-03-20 12:41:08 +01:00
Niels Lohmann
483a086562 ⚗️ added funding link 2019-03-20 11:42:24 +01:00
Niels Lohmann
d2a08ddafd Merge branch 'develop' of https://github.com/nlohmann/json into develop 2019-03-20 11:06:55 +01:00
Niels Lohmann
7c55510f76 🚨 fixed some warnings #1527 2019-03-20 11:06:39 +01:00
Niels Lohmann
3ac5fa31c5 💬 update issue templates 2019-03-20 01:27:37 +01:00
Niels Lohmann
51e1564c9e Merge branch 'release/3.6.0' into develop 2019-03-20 00:38:29 +01:00
Niels Lohmann
0abf0f80c9 🔖 set version to 3.6.0 2019-03-20 00:22:12 +01:00
Niels Lohmann
b37392b7ac 🔖 set version to 3.6.0 2019-03-20 00:19:07 +01:00
Niels Lohmann
002addabd8 🚨 fixed a warning 2019-03-19 23:10:21 +01:00
Niels Lohmann
a6f9b4e36d 👥 added contributors 2019-03-19 17:18:33 +01:00
Niels Lohmann
18cc7ddd62 📝 completed documentation index page 2019-03-19 16:03:02 +01:00
Niels Lohmann
e07e8e7912 📝 updated documentation 2019-03-19 15:40:23 +01:00
Niels Lohmann
710f26f95c 📝 added documentation 2019-03-19 10:06:35 +01:00
Niels Lohmann
b224c52376 🎨 cleanup 2019-03-19 09:17:14 +01:00
Niels Lohmann
37a72dac48 💚 forgot two semicolons 2019-03-18 17:23:34 +01:00
Viktor Kirilov
155d196bfa Update CMakeLists.txt 2019-03-18 17:58:35 +02:00
Viktor Kirilov
365944b0bc Merge branch 'develop' into doctest 2019-03-18 16:59:36 +02:00
Niels Lohmann
8d3f4f21bc 🔨 clean up 2019-03-18 13:53:48 +01:00
Niels Lohmann
9fc093c9e0 👷 added targets for infer and oclint 2019-03-18 00:19:28 +01:00
Niels Lohmann
22c733e6fe 📝 added documentation 2019-03-17 22:25:18 +01:00
Niels Lohmann
56f6d1d68e 💚 fix CI and #1521 2019-03-17 15:20:22 +01:00
Niels Lohmann
df0f7f2b5d 👷 overworked clang-tidy target 2019-03-17 12:02:23 +01:00
Niels Lohmann
9f26dac9b3 ⬆️ updated Doxyfile 2019-03-17 12:02:05 +01:00
Niels Lohmann
b8451c236f 🚨 fixed warnings 2019-03-17 12:01:49 +01:00
Niels Lohmann
d6c4cd3b6d 🚨 adding targets for static analyzers 2019-03-17 00:30:08 +01:00
Niels Lohmann
baf8b4be7c adding cpplint 2019-03-17 00:28:14 +01:00
Niels Lohmann
34f8b4f711 🚨 fixed more warnings 2019-03-17 00:27:44 +01:00
Niels Lohmann
02b3494711 🔥 removing unstable macOS builds on Traivs 2019-03-16 08:28:44 +01:00
Niels Lohmann
b02ee16721 🚨 fixed warnings 2019-03-15 15:55:52 +01:00
Niels Lohmann
8d6c033f80 Merge branch 'develop' of https://github.com/nlohmann/json into develop 2019-03-15 14:55:15 +01:00
Niels Lohmann
27011e3718 🚨 fixed warnings 2019-03-15 14:55:13 +01:00
Niels Lohmann
9dc3552931 Merge pull request #1514 from naszta/macrofix
Change macros to numeric_limits
2019-03-15 12:46:42 +01:00
Ferenc Nasztanovics
0067ea8f9e Change macros to numeric_limits #1483 2019-03-13 23:44:34 +01:00
Niels Lohmann
0c65ba960e Merge branch 'develop' of https://github.com/nlohmann/json into develop 2019-03-13 22:14:57 +01:00
Niels Lohmann
546e2cbf5e 🚨 fixed some warnings 2019-03-13 22:14:53 +01:00
Niels Lohmann
c6fc902184 Merge pull request #1489 from andreas-schwab/develop
Do proper endian conversions
2019-03-13 11:57:58 +01:00
Niels Lohmann
d39842e68f Merge pull request #1330 from ax3l/topic-installEmbed
CMake: Optional Install if Embedded
2019-03-13 11:13:09 +01:00
Niels Lohmann
670f42b561 🔥 removing Xcode 6.4 builder 2019-03-11 22:59:22 +01:00
Niels Lohmann
c983b67112 Merge pull request #1469 from garethsb-sony/json_pointer-append
Add operator/= and operator/ to construct a JSON pointer by appending two JSON pointers
2019-03-11 22:47:08 +01:00
Niels Lohmann
c11bead2ae 👷 removing more retired Travis images 2019-03-11 21:22:30 +01:00
Niels Lohmann
3cd1dac653 🚨 fix MSVC warning #1502 2019-03-11 15:33:23 +01:00
Niels Lohmann
cabe2357b8 Merge pull request #1492 from stac47/fix_gcc9_allocator
Fix gcc9 build error test/src/unit-allocator.cpp (Issue #1472)
2019-03-11 15:21:54 +01:00
Niels Lohmann
16d9cdce45 📝 updated documentation of CI 2019-03-11 15:19:50 +01:00
Niels Lohmann
e3729ba0a5 💚 fix compiler selection 2019-03-11 07:44:40 +01:00
Niels Lohmann
e5c7fd488d 👷 trying new Travis workers 2019-03-10 22:56:14 +01:00
Niels Lohmann
5047c7a217 🐛 added missing include #1500 2019-03-10 22:26:57 +01:00
Niels Lohmann
8eb7db7277 Merge pull request #1441 from iwanders/support-cmake-older-than-3-8-with-if
Use C++11 features supported by CMake 3.1.
2019-03-10 22:08:16 +01:00
Niels Lohmann
393410e61a Merge pull request #1495 from njlr/patch-1
Update Buckaroo instructions in README.md
2019-03-10 22:03:49 +01:00
Niels Lohmann
30edcaab3a Merge pull request #1496 from lieff/develop
fix GCC 7.1.1 - 7.2.1 on CentOS
2019-03-10 22:01:52 +01:00
lieff
7b31e56fbf fix GCC 7.1.1 - 7.2.1 on CentOS
closes https://github.com/nlohmann/json/issues/670
2019-02-25 16:38:22 +03:00
Andreas Schwab
bb22b1003f Do proper endian conversions
This fixes all testsuite failures on big endian hosts.
2019-02-25 12:09:13 +01:00
njlr
8aeee4f7e3 Update README.md
* Updates Buckaroo instructions to v2
2019-02-25 09:44:38 +00:00
garethsb-sony
d183bd0456 Tests for json_pointer::empty and json_pointer::parent_pointer 2019-02-25 09:26:08 +00:00
garethsb-sony
08de9eeaca Add json_pointer::parent_pointer (cf. std::filesystem::path::parent_path) 2019-02-25 09:26:08 +00:00
garethsb-sony
164e0e54d9 Rename private json_pointer::is_root as public json_pointer::empty for consistency with std::filesystem::path 2019-02-25 09:26:07 +00:00
Laurent Stacul
ddc9f201f4 Fix gcc9 build error test/src/unit-allocator.cpp (Issue #1472) 2019-02-22 16:05:41 +00:00
Niels Lohmann
21516f2bae Merge pull request #1491 from nickaein/patch-1
Fix typo in README.md
2019-02-22 09:50:45 +01:00
Isaac Nickaein
088a245218 Fix typo in README.ME
Fixes https://github.com/nlohmann/json/issues/1486.
2019-02-22 01:05:00 +03:30
Niels Lohmann
e326df211b Merge pull request #1474 from nickaein/develop
Implement contains() member function
2019-02-13 13:05:21 +01:00
Niels Lohmann
c55cacee1e Merge pull request #1477 from nickaein/fix-doc
Fix documentation
2019-02-13 13:03:46 +01:00
Isaac Nickaein
e93f305494 Add unit-test for contains() member function 2019-02-13 13:21:54 +03:30
Isaac Nickaein
6a5db00951 Implement contains() to check existence of a key 2019-02-13 13:21:54 +03:30
Isaac Nickaein
fb5ceb26ac Fix documentation
Remove two instance of duplicate paragraphs.
2019-02-11 17:00:48 +03:30
Niels Lohmann
46ff13d39e Merge pull request #1468 from past-due/disable_Wmismatched_tags_on_tuple
Disable Clang -Wmismatched-tags warning on tuple_size / tuple_element
2019-02-10 21:50:12 +01:00
Niels Lohmann
eee3bc0c79 Merge pull request #1464 from elvisoric/update_meson_install_step
Disable installation when used as meson subproject. #1463
2019-02-10 21:48:20 +01:00
garethsb-sony
5da757bbb3 Attempt to satisfy Coveralls by adding a test for (unchanged) operator std::string 2019-01-31 23:39:57 +00:00
garethsb-sony
c850e9d82d Add operator/= and operator/ to construct a JSON pointer by appending two JSON pointers, as well as convenience op/= and op= to append a single unescaped token or array index; inspired by std::filesystem::path 2019-01-31 19:15:50 +00:00
past-due
45819dce54 Disable -Wmismatched-tags warning on tuple_size / tuple_element 2019-01-30 12:59:50 -05:00
Elvis Oric
77d1d37290 Disable installation when used as meson subproject. #1463 2019-01-30 11:40:14 +01:00
Isaac Nickaein
372c4d2125 Merge branch 'develop' into iterate-on-destruction 2019-01-28 02:41:22 +03:30
Niels Lohmann
68ec3eb8d6 Merge pull request #1451 from Afforix/Afforix-fix-extra-semicolon
remove extra semicolon from readme
2019-01-25 13:36:18 +01:00
Niels Lohmann
de14b5ee2f Merge pull request #1455 from wythe/patch-2
docs: README typo
2019-01-25 13:36:07 +01:00
Mark Beckwith
cca6d0dbae docs: README type
Just another small typo I found in the README.
2019-01-24 10:49:45 -06:00
Patrick Boettcher
a06e7f5d80 JSON-pointer: add operator+() returning a new json_pointer 2019-01-24 16:46:51 +01:00
Matěj Plch
dc21cbb751 remove extra semicolon
in example of NLOHMANN_JSON_SERIALIZE_ENUM
2019-01-22 10:13:12 +01:00
Niels Lohmann
e89c946451 Merge branch 'feature/nodiscard' into develop 2019-01-20 15:41:30 +01:00
Niels Lohmann
6de4df23e4 🐛 fixed integer overflow in dump function #1447
Closes #1447.
2019-01-20 12:26:01 +01:00
Niels Lohmann
e17e0d031f Merge pull request #1446 from scinart/develop
attempt to fix #1445, flush buffer in serializer::dump_escaped in UTF8_REJECT case.
2019-01-20 12:18:02 +01:00
Niels Lohmann
e36593e960 🔨 trying code from https://godbolt.org/z/-tLO1K 2019-01-20 11:12:20 +01:00
scinart
20db020c1f move newly-added tests in unit-regression.cpp 2019-01-19 11:36:50 -05:00
Niels Lohmann
d359fd3a8d 🚧 trying nodiscard attribute #1433 2019-01-19 17:32:23 +01:00
Niels Lohmann
b9a39b38bf Merge pull request #1434 from pboettch/develop
allow push_back() and pop_back() calls on json_pointer
2019-01-19 17:07:36 +01:00
scinart
83e84446d6 fix typo 2019-01-18 20:55:01 -05:00
scinart
899bd94b43 flush buffer in serializer::dump_escaped case UTF8_REJECT
serializer use fixed buffer. Whenever it is nearly full, it is flushed to `output_adapter_t<char> o`
But the code forgets to flush when there is a invalid utf8 code point
So there will be buffer overflow.
2019-01-18 20:35:48 -05:00
Ivor Wanders
4fd9b52fc2 Use C++11 features supported by CMake 3.1. 2019-01-16 08:50:58 -05:00
Niels Lohmann
dffae1082f Merge pull request #1435 from pboettch/warning-fix
🚨 fixed unused variable warning
2019-01-15 22:18:13 +01:00
Niels Lohmann
851fe8a5ef Merge pull request #1430 from nicoddemus/conda-docs
Add instructions about using nlohmann/json with the conda package manager
2019-01-15 22:16:49 +01:00
onqtam
a2c074fd4d this should really fix the XCode 6/7 builds 2019-01-15 22:58:12 +02:00
onqtam
3340162efd fixing osx builds - had forgotten to define this for the object file where the test runner is compiled 2019-01-15 22:48:37 +02:00
onqtam
2f44ac1def moved from Catch to doctest for unit tests 2019-01-15 22:02:16 +02:00
Isaac Nickaein
f0883dda8f During destruction, flatten children of objects to avoid recursion 2019-01-15 20:29:51 +03:30
Isaac Nickaein
47fe4b9cee Add unit test for parsing deeply-nested array 2019-01-15 20:22:11 +03:30
Patrick Boettcher
d0c0d16110 🚨 fixed unused variable warning
Since 6503e83e74 "Improve dump_integer performance by implementing a more efficient int2ascii"
an unused variable and thus a warning existed.
2019-01-15 15:21:02 +01:00
Patrick Boettcher
9225cf2f57 allow push_back() and pop_back() calls on json_pointer
Putting pop_back() to public and creating a trivial push_back()
method allows users of nlohmann::json_pointer to manipulate an
existing json-pointer by adding or removing keys at the end.

This is useful for traversing a JSON-instance and keeping track
of its "absolute path" at any moment.

In my case for a schema-validator error-handler.
2019-01-15 14:43:46 +01:00
Bruno Oliveira
b025d66eb5 Add instructions about using nlohmann/json with the conda package manager 2019-01-15 11:06:26 -02:00
Niels Lohmann
e5753b14a8 🚨 fixed another linter warning #1400
Closes #1400.
2019-01-13 15:40:49 +01:00
Niels Lohmann
5c04cc1009 🔨 fixed includes 2019-01-13 15:31:22 +01:00
Niels Lohmann
8e9ad346d9 🚨 fixed another linter warning 2019-01-13 13:00:54 +01:00
Niels Lohmann
ad01736d55 💡 improved documentation for parsing without exceptions #1405
Closes #1405
2019-01-13 11:46:05 +01:00
Niels Lohmann
06731b14d7 ⬆️ upgraded Catch and Google Benchmark
- Catch 1.12.0 -> 1.12.2
- Google Benchmark 1.3.0 -> 1.4.1
2019-01-13 11:29:39 +01:00
Niels Lohmann
daeb48b01a Merge pull request #1411 from nickaein/develop
Improve dump_integer performance
2019-01-13 11:11:51 +01:00
Niels Lohmann
29a03f465e Merge pull request #1414 from nickaein/mydevel-appveyor-x64
Fix x64 target platform for appveyor
2019-01-12 23:09:19 +01:00
Isaac Nickaein
c9dd260a4c Add unit tests for dump_integer
Add some unit tests for formatting integers
to keep code coverage as before.
2019-01-12 08:58:30 -08:00
Isaac Nickaein
be9b4cbd60 Add benchmark for small integers
This benchmark is a sample of 1 million "small" integers
in range [-1000000 1000000) sampled from uniform distribution.
2019-01-12 08:58:30 -08:00
Isaac Nickaein
6503e83e74 Improve dump_integer performance by implementing a more efficient int2ascii
This commits implements a faster int2ascii inspired by "Fastware" talk given
by Andrei Alexandrescu.
See: https://www.youtube.com/watch?v=o4-CwDo2zpg
2019-01-12 08:58:30 -08:00
Isaac Nickaein
f16432832c Increase stack size for VS2017 Win x64 on Appveyor 2019-01-12 19:27:26 +03:30
Niels Lohmann
b39f34e046 Merge pull request #1425 from hijxf/patch-1
Updated year in README.md
2019-01-12 10:23:31 +01:00
Jef LeCompte
7f73915d4f Updated year in README.md 2019-01-11 08:54:03 -05:00
Niels Lohmann
df460c96cf Merge pull request #1423 from skypjack/patch-1
Fixed broken links in the README file
2019-01-10 13:52:52 +01:00
Michele Caini
6546cad7bf Fixed broken links in the README file 2019-01-10 08:54:53 +01:00
Niels Lohmann
847dd2a954 Merge pull request #1420 from skypjack/patch-1
Fixed broken links in the README file
2019-01-09 22:33:40 +01:00
Niels Lohmann
937b642e0e 📝 added description on how to use NuGet package #1132
Closes #1132.
2019-01-09 21:08:06 +01:00
Niels Lohmann
975dc970d1 Merge pull request #1417 from wythe/patch-1
docs: typo in README
2019-01-09 20:35:49 +01:00
Michele Caini
b8be0f64ae Fixed broken links to operator[]() and at() 2019-01-09 15:11:54 +01:00
Michele Caini
619bf9c20d Fixed broke links to RFC7159 2019-01-09 15:05:09 +01:00
Mark Beckwith
a559ff8fc6 typo in README
inintended -> unintended
2019-01-08 13:24:07 -06:00
Isaac Nickaein
2c0c2ca698 Specify target platform in generator name 2019-01-05 14:15:33 -08:00
Niels Lohmann
676c847c55 Merge pull request #1409 from yann-morin-1998/yem/cmake-version
buildsystem: relax requirement on cmake version
2019-01-01 17:17:38 +01:00
Yann E. MORIN
e8b6b7adc1 buildsystem: relax requirement on cmake version
Commit 73cc5089 (Using target_compile_features to specify C++ 11
standard) bumped the required cmake version, from 3.0 to 3.8, so
as to get the definition of target_compile_features().

However, target_compile_features() was introduced in cmake-3.1:
    https://cmake.org/cmake/help/v3.1/command/target_compile_features.html

And using cmake-3.1 is indeed sufficient to properly build.

As such, relax the minimum required version down to cmake-3.1,
so we can build on oldish, entreprise-grade distributions that
only have cmake-3.1 (or at least, don't have up to cmake-3.8).

Reported-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2018-12-31 18:52:04 +01:00
Niels Lohmann
c682b9879b 🚨 fixed PVS V567 warning
"V567 The modification of the 'position.chars_read_current_line' variable is unsequenced relative to another operation on the same variable. This may lead to undefined behavior."
2018-12-30 23:00:15 +01:00
Niels Lohmann
6f89613acd 🚨 fixed some warnings 2018-12-23 13:56:18 +01:00
Niels Lohmann
db53bdac19 Merge branch 'release/3.5.0' into develop 2018-12-22 00:01:28 +01:00
Niels Lohmann
78348afeb6 🔖 set version to 3.5.0 2018-12-21 23:52:29 +01:00
Niels Lohmann
1107f8cd82 📝 updated documentation for items() function 2018-12-21 22:51:12 +01:00
Niels Lohmann
98f4e31c3e 📝 formatted picture 2018-12-21 18:33:46 +01:00
Niels Lohmann
58c269b039 📝 updated documentation 2018-12-21 18:27:56 +01:00
Niels Lohmann
2182157dc1 📝 update documentation 2018-12-21 09:32:35 +01:00
Niels Lohmann
45f5611d9b 🚨 fixed two warnings 2018-12-20 22:41:48 +01:00
Niels Lohmann
117c1d14fb 📝 added contributors to 3.5.0 2018-12-20 22:20:47 +01:00
Niels Lohmann
d584ab269a 🎨 fixed header 2018-12-20 21:58:16 +01:00
Niels Lohmann
45a8a093d7 🚨 fixed a warning 2018-12-20 21:40:47 +01:00
Niels Lohmann
85849940ba Merge pull request #1391 from pratikpc/develop
Added Support for Structured Bindings
2018-12-20 08:58:08 +01:00
Pratik Chowdhury
ebd3f45808 Added Support for Structured Bindings
For further details, read https://github.com/nlohmann/json/issues/1388 and https://blog.tartanllama.xyz/structured-bindings/
2018-12-19 20:17:52 +05:30
Niels Lohmann
4f270e38cc Merge pull request #1342 from davedissian/bugfix/sfinae-iterator-traits
Add a SFINAE friendly iterator_traits and use that instead.
2018-12-19 08:24:18 +01:00
David Avedissian
f1080d7c39 Code review. 2018-12-18 20:44:37 +00:00
Niels Lohmann
5d390e91ff Merge pull request #1392 from mtalliance/feature/addFileInputAdapter
Feature/add file input adapter
2018-12-16 22:10:03 +01:00
Jonathan Dumaresq
c1c85b025c Forget one std::FILE 2018-12-14 07:33:28 -05:00
Jonathan Dumaresq
635a4fc344 use namespace std when possible. Change the name of private variable. 2018-12-12 16:33:25 -05:00
Jonathan Dumaresq
cf31193de2 create single json.hpp file 2018-12-12 14:46:52 -05:00
Jonathan Dumaresq
a794cfdba3 refactor unit test in case of throw, the fclose will not be called. using unique_ptr with custom destructor will ensure that 2018-12-12 14:46:17 -05:00
Jonathan Dumaresq
91ff96a737 remove the const attribute 2018-12-12 14:16:12 -05:00
Jonathan Dumaresq
b7a2642fba remove comment 2018-12-12 14:15:49 -05:00
Jonathan Dumaresq
fa7f1a524e new unified json.hpp generated with make amalgamate 2018-12-12 10:19:22 -05:00
Jonathan Dumaresq
ef283e0cf8 add tests to cover the new input adapter 2018-12-12 10:18:37 -05:00
Jonathan Dumaresq
3335da622a remove non usefull code. 2018-12-12 09:32:52 -05:00
Jonathan Dumaresq
ae48acbb23 remove non usefull code. Add small description 2018-12-12 09:28:42 -05:00
Jonathan Dumaresq
52f6fd1d91 Add the possibility of using FILE * from cstdio library to read a file. This enable the possibility of using low eand device with this library. 2018-12-11 13:17:13 -05:00
Jonathan Dumaresq
67b0daf27b Add the possibility of using FILE * from cstdio library to read a file. This enable the possibility of using low eand device with this library. 2018-12-11 09:33:30 -05:00
David Avedissian
2c23f0a346 Changes requested from code review. 2018-12-08 15:46:33 +00:00
Niels Lohmann
e73dfef6e5 Merge pull request #1382 from kjpus/patch-1
Link to issue #958 broken
2018-12-04 20:02:38 +01:00
kjpus
767a3a327d Link to issue #958 broken 2018-12-04 10:03:10 -05:00
Niels Lohmann
d53873a251 Merge pull request #1363 from theodelrieu/doc/implicit_conversions
recommend using explicit from JSON conversions
2018-12-02 17:27:46 +01:00
Niels Lohmann
7a56f5a42b Merge pull request #1380 from manu-chroma/patch-1
readme: fix typo
2018-12-02 17:25:38 +01:00
Manvendra Singh
5de184b8fb readme: fix typo 2018-12-02 01:50:57 +05:30
Niels Lohmann
ef90d62ddf 🚨 fixed warning #1364 2018-11-21 21:17:38 +01:00
Théo DELRIEU
7b961368d5 recommend using explicit from JSON conversions 2018-11-20 14:14:07 +01:00
Niels Lohmann
da81e7be22 🏁 adding parentheses around std::snprintf calls #1337 2018-11-09 21:18:02 +01:00
Niels Lohmann
f80efd3954 💄 cleanup 2018-11-09 21:10:32 +01:00
Niels Lohmann
35829928da Merge pull request #1343 from mefyl/develop
Set eofbit on exhausted input stream.
2018-11-09 21:07:36 +01:00
Niels Lohmann
f86090aafc Merge pull request #1345 from mpoquet/feature/meson-install-pkgconfig
Allow installation via Meson
2018-11-08 18:39:26 +01:00
Niels Lohmann
30e1cbb0df Merge pull request #1346 from ax3l/fix-mergePatchShadowParam
Fix merge_patch shadow warning
2018-11-08 18:38:40 +01:00
mefyl
aa10382629 Set eofbit on exhausted input stream.
Fix issue #1340.

        The eofbit is set manually since we don't go through the
	stream interface. We could maybe use the stream interface
	instead, but there are some assumptions regarding which
	exception go through, so this seems to be the most prudent
	approach for now.
2018-11-08 11:41:17 +01:00
Axel Huebl
798754dfb6 Amalgamate Headers 2018-11-08 10:35:45 +01:00
Axel Huebl
97b81da840 merge_patch: rename parameter
Avoid shadowing a member of `this` by choosing the same name as
parameter (`-Wshadow`). Instead, make name of parameter more
expressive.
2018-11-08 10:31:47 +01:00
Millian Poquet
ffe08983dd :meson: install headers + pkg-config 2018-11-08 00:25:42 +01:00
David Avedissian
f665a92330 Implement SFINAE friendly iterator_traits and use that instead. 2018-11-07 18:39:25 +00:00
Niels Lohmann
d2e6e1bf58 Merge pull request #1329 from ax3l/fix-typosWhitespaces
Fix EOL Whitespaces & CMake Spelling
2018-11-02 18:23:42 +01:00
Axel Huebl
a7567bc596 Remove EOL whitespaces in natvis 2018-11-02 10:42:48 +01:00
Axel Huebl
f049836d68 CMake: Optional Install if Embedded
When adding this library as embedded library with private
"target link", e.g. only used inside private source files, the
library does not need to be installed when the main project gets
installed.

This adds an additional option `JSON_Install` similar to the
test-build control switch in order to skip installing headers and
CMake config files if requested.

Avoids using
```cmake
add_subdirectory(path/to/nlohmann_json EXCLUDE_FROM_ALL)
```

which has further side-effects:
https://cmake.org/cmake/help/v3.0/command/add_subdirectory.html
2018-11-02 10:18:00 +01:00
Axel Huebl
689382a722 Fix EOL Whitespaces & CMake Spelling
Fix little leftover EOL whitespaces in `CMakeLists.txt` and
a spelling of CMake in README.md
2018-11-02 09:35:17 +01:00
Niels Lohmann
2f73a4d1f3 🚨 fixed a linter warning 2018-10-31 20:30:24 +01:00
Niels Lohmann
e3c28afb61 Merge branch 'release/3.4.0' into develop 2018-10-30 22:20:29 +01:00
Niels Lohmann
0f3c74d821 🔖 set version to 3.4.0 2018-10-30 22:18:45 +01:00
Niels Lohmann
7b2f8cce03 🔖 set version to 3.4.0 2018-10-30 21:30:20 +01:00
Niels Lohmann
8cee0e38d9 🚑 fixed #1319 2018-10-30 17:29:05 +01:00
Niels Lohmann
856fc31d0a 💄 fixed indentation 2018-10-29 19:44:19 +01:00
Niels Lohmann
39419cd5c4 🚨 fixed another linter warning 2018-10-29 18:51:30 +01:00
Niels Lohmann
86b5ce953a 📝 added examples for BSON functions 2018-10-28 15:09:26 +01:00
Niels Lohmann
d2e4f0b0d9 ✏️ fixed some typos 2018-10-28 14:20:20 +01:00
Niels Lohmann
f0c1459554 🐛 fixed a bug parsing BSON strings #1320 2018-10-28 09:16:40 +01:00
Niels Lohmann
24946f67f1 🚨 fixed some more linter warnings 2018-10-28 09:15:41 +01:00
Niels Lohmann
7d0dc10169 🚨 fixed a linter warning 2018-10-27 18:34:35 +02:00
Niels Lohmann
45a761bd60 Merge branch 'develop' of https://github.com/nlohmann/json into develop 2018-10-27 18:31:06 +02:00
Niels Lohmann
4e765596f7 🔨 small improvements 2018-10-27 18:31:03 +02:00
Niels Lohmann
1308ea055d Merge pull request #1315 from nlohmann/feature/convert_char
Properly convert constants to CharType
2018-10-27 16:56:00 +02:00
Niels Lohmann
0e7be06bef Merge pull request #1323 from nlohmann/feature/enum_json_mapping
Add macro to define enum/JSON mapping
2018-10-27 16:55:39 +02:00
Niels Lohmann
85aaf91b85 Merge branch 'develop' into feature/enum_json_mapping 2018-10-27 16:52:59 +02:00
Niels Lohmann
5a6bdf5934 Merge branch 'develop' into feature/convert_char 2018-10-27 16:48:48 +02:00
Niels Lohmann
037e93f5c0 Merge pull request #1320 from nlohmann/julian-becker-feature/bson
Add BSON support
2018-10-27 16:37:54 +02:00
Niels Lohmann
9f48bb6937 replaced vector by array #1323 2018-10-27 09:58:23 +02:00
Niels Lohmann
6384fe28db 🚨 fixed another linter warning 2018-10-26 23:12:41 +02:00
Niels Lohmann
ad639ad5e6 added NLOHMANN_JSON_SERIALIZE_ENUM marco #1208 2018-10-26 14:48:20 +02:00
Niels Lohmann
544150d5a5 🚨 fixed another linter warning 2018-10-26 11:10:49 +02:00
Niels Lohmann
c2e175763c 👌 added another conversion function #1315 2018-10-25 22:47:08 +02:00
Niels Lohmann
d97fa30795 👌 fixed comment #1320 2018-10-25 22:29:27 +02:00
Niels Lohmann
7ce720b700 🚨 fixed coverage 2018-10-25 18:21:50 +02:00
Niels Lohmann
19647e083c 🚨 fixed compiler warnings 2018-10-25 14:27:55 +02:00
Niels Lohmann
62126278a6 🔨 added fix for arrays 2018-10-25 13:01:18 +02:00
Niels Lohmann
1968e5c793 🎨 clean up binary formats 2018-10-24 23:39:30 +02:00
Niels Lohmann
4d1eaace8c 🔨 fixed fuzz code to avoid false positives in case of discarded values 2018-10-24 18:55:08 +02:00
Niels Lohmann
e2c5913a50 🚧 some changes to the BSON code
- added fuzz testers
- added some reference files
- made an exception text more clear
2018-10-24 15:43:37 +02:00
Niels Lohmann
bba159121f Merge branch 'feature/bson' of https://github.com/julian-becker/json into julian-becker-feature/bson 2018-10-24 15:03:15 +02:00
Niels Lohmann
f102df3cba 📝 updated documentation #1314 2018-10-24 09:28:57 +02:00
Niels Lohmann
7b501de054 Merge pull request #1314 from nlohmann/feature/codec_errors
Allow to set error handler for decoding errors
2018-10-24 08:40:58 +02:00
Niels Lohmann
20038e2703 📝 added a note to the discussion #1286 2018-10-23 23:00:43 +02:00
Niels Lohmann
87ef3f25f2 ✏️ fixed a typo #1314 2018-10-23 22:56:10 +02:00
Niels Lohmann
b49f76931f 👌 replaced static_cast to CharType by conversion function #1286 2018-10-23 17:49:04 +02:00
Niels Lohmann
2343d9caeb 💚 additional tests from the Unicode spec #1198
Thanks @abolz!
2018-10-23 17:22:13 +02:00
Niels Lohmann
951a7a6455 🚧 fixed test cases #1198 2018-10-22 18:20:45 +02:00
Niels Lohmann
c51b1e6fab 🚧 fixed an issue with ensure_ascii #1198 2018-10-22 15:53:36 +02:00
Niels Lohmann
c7af027cbb 🚧 respect ensure_ascii parameter #1198 2018-10-22 09:18:16 +02:00
Niels Lohmann
e5dce64115 💚 added tests #1198
Test every prefix of Unicode sequences against the different dump functions.
2018-10-21 23:26:25 +02:00
Niels Lohmann
c5821d91e5 🚧 overworked error handlers #1198 2018-10-21 11:49:37 +02:00
Julian Becker
ad11b6c35e BSON: Improved exception-related tests and report location of U+0000 in the key-string as part of out_of_range.409-message 2018-10-18 20:05:46 +02:00
Niels Lohmann
9294e25c98 Merge pull request #1301 from theodelrieu/fix/1299
add new is_constructible_* traits used in from_json
2018-10-18 19:18:48 +02:00
Niels Lohmann
b553a8a93c Merge pull request #1305 from koponomarenko/add-meson-info
Add Meson related info to README
2018-10-18 10:55:25 +02:00
Julian Becker
5ba812d518 BSON: fixed incorrect casting in unit-bson.cpp 2018-10-18 06:38:34 +02:00
Julian Becker
8de10c518b BSON: Hopefully fixing ambiguity (on some compilers) to call to string::find() 2018-10-17 21:47:01 +02:00
Kostiantyn Ponomarenko
f0c55ce0e0 Add Meson related info to README
Add more information about how one can get a Meson wrap file.

Signed-off-by: Kostiantyn Ponomarenko <konstantin.ponomarenko@gmail.com>
2018-10-17 21:46:45 +03:00
Julian Becker
2a63869159 Merge branch 'develop' of https://github.com/nlohmann/json into feature/bson
Conflicts:
	include/nlohmann/detail/input/binary_reader.hpp
	single_include/nlohmann/json.hpp
	src/unit-bson.cpp
2018-10-17 20:26:00 +02:00
Niels Lohmann
4b2a00641c Merge pull request #1303 from nlohmann/feature/binary_errors
Improve diagnostic messages for binary formats
2018-10-17 17:54:14 +02:00
Niels Lohmann
dbb0b63187 improved error messages for binary formats #1288
This commit is the equivalent of #1282 for CBOR, MessagePack, and UBJSON.
2018-10-17 12:15:58 +02:00
Théo DELRIEU
a946dfc19c add a note to maintainers in type_traits.hpp 2018-10-17 12:03:10 +02:00
Julian Becker
978c3c4116 BSON: throw json.exception.out_of_range.409 in case a key to be serialized to BSON contains a U+0000 2018-10-16 20:42:00 +02:00
Niels Lohmann
0671e92ced 🚧 proposal for different error handlers #1198
Proof of concept; currently only as parameter to the internal dump_escaped function; that is, not yet exposed to the dump function.
2018-10-16 20:38:50 +02:00
Julian Becker
daa3ca8a2e BSON: Adjusted documentation of binary_writer::to_bson() 2018-10-16 19:29:42 +02:00
Julian Becker
5bccacda30 BSON: throw json.exception.out_of_range.407 in case a value of type std::uint64_t is serialized to BSON. Also, added a missing EOF-check to binary_reader. 2018-10-16 19:13:07 +02:00
Théo DELRIEU
45c8af2c46 add new is_constructible_* traits used in from_json
is_compatible_* traits were used in from_json, but it made no sense
whatsoever.

It used to work because of non-SFINAE correctness + json_ref
unconstrained variadic template constructor.

SFINAE checks are becoming quite complex, we need a specification of
some sort describing:

* which concepts the library uses
* how the conversion to/from json works in detail

Having such a specification would really help simplifying the current
code (as well as having meaningful checks).

Fixes !1299
2018-10-16 14:00:34 +02:00
Niels Lohmann
dd672939a0 Merge pull request #1294 from theodelrieu/fix/json_ref_ctor
add constraints for variadic json_ref constructors
2018-10-12 17:35:41 +02:00
Théo DELRIEU
11fecc25af add constraints for variadic json_ref constructors
Fixes #1292
2018-10-12 10:54:58 +02:00
Niels Lohmann
e426219256 Merge pull request #1282 from nlohmann/feature/lines_columns
Improve diagnostic messages
2018-10-08 22:17:33 +02:00
Niels Lohmann
adfa961ed0 Merge pull request #1280 from nlohmann/feature/linter
Removed linter warnings
2018-10-08 21:05:33 +02:00
Niels Lohmann
6d34d64bfd 🚑 fixed compilation error 2018-10-08 06:54:51 +02:00
Niels Lohmann
74a31075e3 improved parse error messages 2018-10-07 22:39:17 +02:00
Niels Lohmann
6e49d9f5ff 🚑 fixed compilation error 2018-10-07 21:34:40 +02:00
Niels Lohmann
f8158997b5 📝 fixed documentation 2018-10-07 21:30:58 +02:00
Julian Becker
df0f612d1b BSON: allow and discard values and object entries of type value_t::discarded 2018-10-07 20:08:05 +02:00
Niels Lohmann
3abb788139 🚨 fixed some more clang-tidy warnings 2018-10-07 19:07:58 +02:00
Niels Lohmann
858e75c4df 🚨 fixed some clang-tidy warnings 2018-10-07 18:39:18 +02:00
Julian Becker
062aeaf7b6 BSON: Reworked the binary_writer such that it precomputes the size of the BSON-output.
This way, the output_adapter can work on simple output iterators and no longer requires random access iterators.
2018-10-07 18:02:51 +02:00
Niels Lohmann
6d09cdec34 🐛 fixed a bug in the unget function 2018-10-07 16:48:45 +02:00
Niels Lohmann
011b15dd08 added line positions to error messages
This is a follow-up to #1210.
2018-10-07 12:27:24 +02:00
Julian Becker
81f4b34e06 BSON: Improved documentation and error handling/reporting 2018-10-07 09:57:55 +02:00
Niels Lohmann
ac38e95780 Merge pull request #1277 from performous/fix-clang-detection
Thirdparty benchmark: Fix Clang detection.
2018-10-06 16:29:26 +02:00
Niels Lohmann
fa722d5ac3 🚨 fixed another linter warning 2018-10-06 16:26:47 +02:00
Niels Lohmann
ec95438a59 🚨 fixed some linter warnings 2018-10-06 13:49:02 +02:00
Niels Lohmann
f1768a540a Merge branch 'release/3.3.0' into develop 2018-10-05 12:59:41 +02:00
Niels Lohmann
cdfe6ceda6 🔖 set version to 3.3.0 2018-10-05 11:20:10 +02:00
Niels Lohmann
b968faa882 🔖 set version to 3.3.0 2018-10-05 10:59:33 +02:00
Niels Lohmann
cd518fbbab 📝 small update to pass test suite 2018-10-05 08:58:38 +02:00
Gregorio Litenstein
e8427061a0 Thirdparty benchmark: Fix Clang detection.
CMake 3.0+ refers to macOS’ Clang as AppleClang, which would fail a STREQUAL check. Fixed by changing it to MATCHES.
2018-10-05 02:01:43 -03:00
Niels Lohmann
b911654857 📝 updated contributor list 2018-10-04 22:30:18 +02:00
Niels Lohmann
bb55885215 💄 cleaned code 2018-10-04 20:42:19 +02:00
Niels Lohmann
5c7d27c338 Merge pull request #1272 from antonioborondo/fix_warning
Fix warning C4127: conditional expression is constant
2018-10-04 20:33:26 +02:00
Antonio Borondo
b6fdad9acd Remove anonymous namespace 2018-10-03 13:51:49 +01:00
Antonio Borondo
7c385a4844 Fix error: 'wide_string_input_helper' was not declared in this scope 2018-10-03 12:41:34 +01:00
Antonio Borondo
9ba3f79667 Fix error: explicit specialization in non-namespace scope 2018-10-03 12:26:24 +01:00
Antonio Borondo
8d1585f065 Change implementation to use templates 2018-10-03 11:44:02 +01:00
Antonio Borondo
ad3c216bb5 Generate header 2018-10-03 11:27:53 +01:00
Antonio Borondo
0231059290 Fix warning 2018-10-03 11:27:53 +01:00
Niels Lohmann
9f18e17063 Merge pull request #1270 from chuckatkins/add-more-cmake-docs
docs: Add additional CMake documentation
2018-10-03 10:11:27 +02:00
Niels Lohmann
53ec0a16f3 Merge pull request #1271 from chuckatkins/cleanup-deprecated-warnings
Turn off additional deprecation warnings for GCC.
2018-10-02 22:07:18 +02:00
Chuck Atkins
4c617611e2 docs: Add additional CMake documentation 2018-10-02 14:28:20 -04:00
Chuck Atkins
829571ab5c Turn off additional deprecation warnings for GCC.
In follow up from the conversation in #1269, this adds the
`-Wno-deprecate-declarations` flag to unit tests to allow them to
test deprecated APIs without all the noisy compiler warnings.
This also refactors the setting of build properties for test targets
to use `target_<...>` commands instead of `set_target_properties()`.
2018-10-02 13:01:19 -04:00
Niels Lohmann
c8231eff75 Merge pull request #1260 from chuckatkins/fix-cmake-target-alias
Fix broken cmake imported target alias
2018-10-01 17:44:50 +02:00
Chuck Atkins
02e653bdf7 docs: add a note in the readme about using the CMake imported target 2018-09-30 22:52:54 -04:00
Chuck Atkins
564506a885 cmake: add import config tests 2018-09-30 22:52:47 -04:00
Chuck Atkins
1729db85c1 cmake: fix package config to deal with versioning and namespaces 2018-09-30 09:56:33 -04:00
Niels Lohmann
910a895027 Merge pull request #1238 from theodelrieu/fix/1237
Fix issue #1237
2018-09-29 14:50:54 +02:00
Niels Lohmann
1fae82b7a7 Merge branch 'develop' into fix/1237 2018-09-29 14:50:36 +02:00
Niels Lohmann
22e55349a6 📝 added Wandbox link #1227 2018-09-29 14:33:39 +02:00
Niels Lohmann
70e587c3da 📝 added Wandbox link #1227 2018-09-29 14:33:21 +02:00
Niels Lohmann
d26f39466e Merge pull request #1231 from theodelrieu/feature/get_with_parameter
Add a get overload taking a parameter.
2018-09-29 14:30:04 +02:00
Niels Lohmann
c61a9071ae 🚨 fixed a compilation issue with ICPC #755
Closes #1222
2018-09-29 11:50:14 +02:00
Julian Becker
e8730e5e82 BSON: Reworked binary_reader::get_bson_cstr() 2018-09-29 11:50:01 +02:00
Niels Lohmann
b59a58406e Merge branch 'develop' of https://github.com/nlohmann/json into develop 2018-09-29 11:48:52 +02:00
Niels Lohmann
4e54c9a13d 🚨 fixed a compilation issue with ICPC #755
Closes #1222
2018-09-29 11:48:49 +02:00
Julian Becker
0a09db9cc2 BSON: Extend binary_reader::get_number to be able to hanlde little endian input to get rid of binary_reader::get_number_little_endian 2018-09-29 11:33:01 +02:00
Niels Lohmann
95432c34f9 Merge pull request #1262 from knilch0r/patch-1
unit-testsuites.cpp: fix hangup if file not found
2018-09-29 10:58:10 +02:00
knilch
8c1387cfb3 unit-testsuites.cpp: fix hangup if file not found
If run from the wrong directory, std::ifstream f("test/data/big-list-of-naughty-strings/blns.json"); will not find the file and thus f.eof() will never return true.
Use canonical C++ file reading loop from https://gehrcke.de/2011/06/reading-files-in-c-using-ifstream-dealing-correctly-with-badbit-failbit-eofbit-and-perror/ instead.
2018-09-28 11:33:23 +02:00
Théo DELRIEU
521fe49fec Add basic_json::get_to function.
Takes an lvalue reference, and returns the same reference.

This allows non-default constructible types to be converted without
specializing adl_serializer.
This overload does not require CopyConstructible either.

Implements #1227
2018-09-28 11:25:23 +02:00
Niels Lohmann
680a4ab672 Merge pull request #1257 from henryiii/gcc48
GCC 48
2018-09-28 10:05:17 +02:00
Henry Fredrick Schreiner
7a37ba0c02 Adding 4.8 test to travis 2018-09-27 22:31:39 +02:00
Julian Becker
ef358ae695 BSON: Fixed hangup in case of incomplete bson input and improved test coverage 2018-09-25 20:34:25 +02:00
Chris Harris
99b7c7c8ef Patch nlohmann/json for GCC 4.8
See https://github.com/nlohmann/json/pull/212 for details
2018-09-25 18:10:20 +02:00
Julian Becker
bce4816275 BSON: Added test case for the different input/output_adapters 2018-09-24 23:35:19 +02:00
Julian Becker
763705c2a7 Fix: Add missing begin() and end() member functions to alt_string 2018-09-24 19:50:28 +02:00
Niels Lohmann
e184b6ecf2 Merge pull request #1252 from koponomarenko/fix-meson-build
Add version and license to meson.build
2018-09-22 14:49:03 +02:00
Niels Lohmann
88b055c2df Merge pull request #1249 from LEgregius/clang-3.4.2-crash-workaround
#1179 Reordered the code. It seems to stop clang 3.4.2 in RHEL 7 from crash…
2018-09-22 14:14:56 +02:00
Kostiantyn Ponomarenko
8799759b85 Add version and license to meson.build 2018-09-20 21:54:10 +03:00
Théo DELRIEU
4e52277b70 Fix issue #1237
* Make the conversion operator SFINAE correct.
* Workaround a GCC bug with some traits in type_traits.hpp

The first bullet-point implies that every `get`/`get_ptr` be SFINAE
correct as well.
2018-09-20 10:33:14 +02:00
Niels Lohmann
e4bc98d036 Merge pull request #1245 from chuckatkins/fix-target-namespace-backward-compatibility
Use a version check to provide backwards comatible CMake imported target names
2018-09-19 20:46:51 +02:00
David Guthrie
4d780b091b Reordered the code. It seems to stop clang 3.4.2 in RHEL 7 from crashing intermittently. 2018-09-18 16:38:59 -04:00
Chuck Atkins
3b1a5cafad Use a version check to provide backwards comatible imported target names. 2018-09-18 13:59:19 -04:00
Niels Lohmann
99939d6340 📝 added lgtm.com badge
See https://lgtm.com/projects/g/nlohmann/json
2018-09-18 19:27:52 +02:00
Niels Lohmann
4e2f35d4c2 👷 adding Xcode 10 worker
See https://blog.travis-ci.com/2018-09-13-xcode-10-is-now-available?utm_source=twitter&utm_medium=web&utm_campaign=xcode10_gm
2018-09-18 19:22:30 +02:00
Niels Lohmann
7fa3b8865c Merge pull request #1221 from rivertam/better-error-305
Better error 305
2018-09-18 12:49:07 +02:00
Ben Berman
8f07ab6392 Replace "key-style argument" with "string argument" 2018-09-17 15:36:38 -04:00
Julian Becker
df33a90774 BSON: Bugfix for non-empty arrays 2018-09-15 14:08:38 +02:00
Julian Becker
cf485c2907 BSON: Support for arrays 2018-09-15 13:54:08 +02:00
Julian Becker
120d1d77d4 BSON: test case for a more complex document 2018-09-15 13:41:05 +02:00
Julian Becker
5ce7d6bdd7 BSON: support objects with objects as members 2018-09-15 13:03:42 +02:00
Julian Becker
83b427ad67 BSON: unsigned integers 2018-09-15 12:20:30 +02:00
Julian Becker
c0d8921a67 BSON: support objects with int64 members 2018-09-15 12:00:53 +02:00
Julian Becker
7ee361f7ad BSON: support objects with int32 members 2018-09-15 11:54:17 +02:00
Julian Becker
c5ef023171 BSON: support objects with null members 2018-09-15 11:39:12 +02:00
Julian Becker
6c447de076 BSON: Support objects with string members 2018-09-15 11:33:24 +02:00
Julian Becker
0c0f2e44b5 BSON: support doubles 2018-09-15 10:32:03 +02:00
Julian Becker
9a0dddc5d2 BSON: Object with single boolean 2018-09-15 03:08:50 +02:00
Julian Becker
5f5836ce1c BSON: Support empty objects 2018-09-15 00:43:39 +02:00
Julian Becker
f06c8fd8e3 BSON: serialization of non-objects is not supported 2018-09-15 00:20:03 +02:00
Niels Lohmann
186c747a19 Merge pull request #1230 from mandreyel/lambda-unevaluated-context-fix
Move lambda out of unevaluated context
2018-09-10 20:52:11 +02:00
mandreyel
6b5334c167 Move lambda out of unevaluated context 2018-09-10 13:34:59 +02:00
Niels Lohmann
ebb3c03293 🎨 cleanup after #1228 2018-09-09 18:19:33 +02:00
Niels Lohmann
d3428b35c5 Merge pull request #1228 from theodelrieu/remove_static_asserts
Remove static asserts
2018-09-09 18:12:43 +02:00
Théo DELRIEU
aea648bb7a remove now-useless traits. check for is_basic_json where needed 2018-09-07 14:10:39 +02:00
Théo DELRIEU
4b4bbceebf make from_json SFINAE-correct 2018-09-07 14:10:37 +02:00
Théo DELRIEU
f7971f04a5 make to_json SFINAE-correct 2018-09-07 12:18:04 +02:00
Théo DELRIEU
f7c8a2145a refactor from/to_json(CompatibleArrayType) 2018-09-07 12:18:04 +02:00
Théo DELRIEU
628f76729e do not check for compatible_object_type in compatible_array_type 2018-09-07 12:18:03 +02:00
Théo DELRIEU
29f72966c3 refactor is_compatible_type, remove conjunction & co 2018-09-07 12:18:03 +02:00
Théo DELRIEU
77967e6548 refactor is_compatible_integer_type 2018-09-07 12:18:03 +02:00
Théo DELRIEU
13760857ff refactor is_compatible_array_type 2018-09-07 12:18:02 +02:00
Théo DELRIEU
924e95c6e8 refactor is_compatible_string_type 2018-09-07 12:18:02 +02:00
Théo DELRIEU
e84195ab7b refactor is_compatible_object_type 2018-09-07 12:18:02 +02:00
Théo DELRIEU
b59c3367c9 use detected instead of has_* traits 2018-09-07 12:17:59 +02:00
Théo DELRIEU
1ea8cd128c fix void_t for older compilers 2018-09-07 12:17:33 +02:00
Niels Lohmann
eb30ff0615 🚨 fixed a compiler warning #1224 2018-09-06 07:25:19 +02:00
Ben Berman
ad053ef09c Fix tests for improved error 305(hopefully) 2018-08-30 13:21:55 -04:00
Ben Berman
bbdfe7dea6 Improve error messages for error 305
Addresses #1220
2018-08-30 12:35:51 -04:00
Niels Lohmann
d713727f22 Merge pull request #1202 from dennisfischer/develop
Export package to allow builds without installing
2018-08-25 10:56:30 +02:00
Niels Lohmann
04597c3a66 Merge pull request #1214 from devsisters/fix-1213
Fix #1213
2018-08-24 17:54:28 +02:00
Hyeon Kim
aada309f61 Fix #1213 2018-08-24 21:55:13 +09:00
Niels Lohmann
359f98d140 Merge branch 'release/3.2.0' into develop 2018-08-20 19:36:25 +02:00
Dennis Fischer
dfe607c6ff Export package to allow builds without installing 2018-08-20 09:23:12 +02:00
Niels Lohmann
9f3857ef6f 🔖 set version to 3.2.0 2018-08-18 18:46:15 +02:00
Niels Lohmann
7608a64e1e 🔨 fixed amalgamation 2018-08-18 18:14:12 +02:00
Niels Lohmann
a7b02bdce0 🔖 preparing 3.2.0 release 2018-08-18 17:48:49 +02:00
Niels Lohmann
c6a482b16c 📝 added example for sax_parse 2018-08-18 15:42:18 +02:00
Niels Lohmann
5ad52f4167 ⬆️ Catch 1.12.0 2018-08-18 12:02:12 +02:00
Niels Lohmann
3811daa8a3 📝 release preparation 2018-08-18 12:00:14 +02:00
Niels Lohmann
6899fa304c Merge branch 'develop' of https://github.com/nlohmann/json into develop 2018-08-18 08:15:06 +02:00
Niels Lohmann
57faaf42ca 🚨 fixed a compiler warning 2018-08-18 08:15:03 +02:00
Niels Lohmann
f78ac4fbd3 Merge pull request #1200 from thyu/develop
Fix -Wno-sometimes-uninitialized by initializing "result" in parse_sax
2018-08-18 08:14:04 +02:00
Tsz-Ho Yu
3004a73951 Fix -Wno-sometimes-uninitialized by initializing "result" in parse_sax
The function parse_sax() returns sometimes-uninitialized warnings in
some compilers. This commit fixes that.
2018-08-18 01:12:19 +01:00
Niels Lohmann
e33b31e6aa 🐛 fixed callback-related issue (https://github.com/nlohmann/json/issues/971#issuecomment-413678360) 2018-08-17 23:09:45 +02:00
Niels Lohmann
b5c54b41fd 📝 overworked documentation 2018-08-16 21:53:47 +02:00
Niels Lohmann
07494e06d7 🚨 fixed some compiler warnings 2018-08-16 18:20:30 +02:00
Niels Lohmann
d5b21b051c Merge pull request #1153 from theodelrieu/refactor/no_virtual_sax
Refactor/no virtual sax
2018-08-16 17:47:55 +02:00
Théo DELRIEU
0cc3db4f15 add static_asserts on SAX interface 2018-08-16 11:59:57 +02:00
Théo DELRIEU
38f8a51a8f use abstract sax class in parser tests 2018-08-16 11:59:49 +02:00
Théo DELRIEU
9bbb133094 remove no_limit constant and default values 2018-08-16 11:59:05 +02:00
Théo DELRIEU
442886d040 use templates in the sax interface instead of virtuals 2018-08-16 11:58:52 +02:00
Théo DELRIEU
f6febbe359 split meta.hpp, add detected_t (used to define concepts) 2018-08-16 11:58:42 +02:00
Niels Lohmann
3ac2d81a95 🔨 fixed a MinGW error #1193 2018-08-14 22:13:56 +02:00
Niels Lohmann
be2065dce9 🚨 fixing a MinGW warning #1192 2018-08-14 22:11:47 +02:00
Niels Lohmann
fed70f6bff 🎨 reindented code 2018-08-14 22:11:08 +02:00
Niels Lohmann
0e748f2f8c Merge pull request #1187 from devsisters/json-internal-catch
[RFC] Introduce a new macro function: JSON_INTERNAL_CATCH
2018-08-14 21:56:29 +02:00
Niels Lohmann
861ee400cc Merge pull request #1176 from grembo/develop
Fix unit tests that were silently skipped or crashed (depending on the compiler)
2018-08-14 21:48:49 +02:00
Niels Lohmann
3ce4325350 📝 updated documentation of used compilers 2018-08-01 22:31:51 +02:00
Niels Lohmann
ba4a19d4af 👷 added more CI workers 2018-08-01 20:59:58 +02:00
Niels Lohmann
043eff5ba8 👷 added more CI workers 2018-07-31 21:18:33 +02:00
Michael Gmelin
05b27e83b7 Exclude bytewise comparison in certain tests.
These tests never worked - they weren't run before
d5aaeb4.

Note that these tests would fail because of this library
ordering dictionary keys (which is legal). So changing the
input files (or modifying stored cbor/msgpack/ubjson files)
would make the tests work and they could get removed from
"exclude_packaged".

Also move parsing of files in these unit tests to within
the inner sections, so that they're only parsed
number_of_files * number_of_sections instead of
number_of_files * number_of_files * number_of_sections
(so, instead of close to 100k parses about 700).
2018-07-29 14:52:52 +02:00
Michael Gmelin
d5aaeb4cce Make section names unique in loops, as catch doesn't support duplicate
sections, see also https://github.com/catchorg/Catch2/issues/816#issuecomment-278268122

As a result, when built with gcc, loop iterations were skipped. When
built with clang, the test aborted with an assertion in catch.hpp
line 6222.

This also addresses the issues discussed here:
https://github.com/nlohmann/json/issues/1032#issuecomment-378707696

and here:
https://github.com/catchorg/Catch2/issues/1241

Please note that this introduces new problems, as some of
the unit tests fail now - the library stores keys in
lexographical order, while the cbor/msgpack/ubjson examples
store them in original order.
2018-07-29 10:44:36 +02:00
Niels Lohmann
3760a38b7e 🏁 implicit conversion is not allowed with MSVC 2018-07-21 11:47:05 +02:00
Niels Lohmann
5b14411669 🏁 trying to fix C2440 error
Error in AppVeyor:

unit-conversions.cpp(441): error C2440: 'initializing': cannot convert from 'nlohmann::json' to 'std::nullptr_t'

(https://ci.appveyor.com/project/nlohmann/json/build/2838/job/wo7im01sq6tvhe9m)
2018-07-21 10:59:00 +02:00
Niels Lohmann
347e77bdc1 🚑 fix for #1169 2018-07-21 10:31:55 +02:00
Niels Lohmann
04372a8c56 🏁 fix for #1168 2018-07-19 17:31:50 +02:00
Hyeon Kim
d0e60de433 Add new JSON_INTERNAL_CATCH macro function 2018-07-19 15:43:41 +09:00
Niels Lohmann
7bfc406ded 📝 added note about CocoaPods #1148 2018-07-05 21:18:46 +02:00
Niels Lohmann
d456a2d777 Merge pull request #1151 from sonulohani/bigObjFix
Fixed compiler error in VS 2015 for debug mode
2018-06-29 09:03:43 +02:00
Sonu Lohani
b8ad3388ec Fixed compiler error in VS 2015 for debug mode
https://github.com/nlohmann/json/issues/1114
2018-06-29 09:34:41 +05:30
Niels Lohmann
39dd775e38 🔨 cleanup after #1134 2018-06-28 21:32:32 +02:00
Niels Lohmann
86a96b059d Merge pull request #1134 from Daniel599/feature/items_iterator
fixed compile error for #1045
2018-06-28 21:21:17 +02:00
Niels Lohmann
396a914f9e 🔨 added macro to disable compiler check #1128 2018-06-26 22:47:40 +02:00
Niels Lohmann
bab5826504 Merge pull request #1144 from jrakow/cppreference-link-fix
Fix links to cppreference named requirements (formerly concepts)
2018-06-26 07:58:45 +02:00
Niels Lohmann
515cfc2d89 Merge pull request #1142 from jrakow/develop
meson: fix include directory
2018-06-24 23:33:30 +02:00
Julius Rakow
963d06a13c 📝 fix links to cppreference named requirements
"Concepts" have been renamed to "named requirements".
This is because P0898R3 Standard Library Concepts has been merged into
C++20.
Cppreference have moved their links accordingly.
2018-06-24 22:36:19 +02:00
Julius Rakow
9f00db48d9 📝 link to cppreference via HTTPS 2018-06-24 22:34:47 +02:00
Julius Rakow
ec2ebd5ec9 meson: add multiple headers target 2018-06-24 18:07:30 +02:00
Julius Rakow
0bb36bb140 meson: fix include directory 2018-06-24 18:07:30 +02:00
Niels Lohmann
62457729e8 📝 mentioned MinGW in README 2018-06-24 18:03:59 +02:00
Niels Lohmann
09c0df4a21 👷 choosing correct image 2018-06-24 17:40:16 +02:00
Niels Lohmann
1bbc4a0859 👷 using Ninja to speed up build 2018-06-24 17:10:13 +02:00
Niels Lohmann
d8fe13fc83 🔨 fixed escaping for MinGW 2018-06-24 16:57:53 +02:00
Niels Lohmann
e59b930927 👷 trying a more recent compiler 2018-06-24 16:40:47 +02:00
Niels Lohmann
937d68e2e5 👷 forgot old PATH 2018-06-24 16:37:02 +02:00
Niels Lohmann
989ad9b759 👷 using help from https://stackoverflow.com/a/48509334/266378 2018-06-24 16:35:16 +02:00
Niels Lohmann
067e288289 👷 set build type 2018-06-24 16:29:03 +02:00
Niels Lohmann
7bbc06b487 👷 forgot quotes 2018-06-24 16:18:44 +02:00
Niels Lohmann
441e5d87e6 👷 experimenting with AppVeyor and MinGW 2018-06-24 16:17:06 +02:00
Niels Lohmann
7fa4ddf93e 💄 fixed indentation 2018-06-23 17:27:40 +02:00
Niels Lohmann
bf348ca8a4 Merge pull request #1028 from gracicot/develop
Added support for string_view in C++17
2018-06-23 17:10:04 +02:00
Niels Lohmann
ed6a0686df 🔨 small refactoring to improve branch coverage
The branch coverage reported by lcov is weird. The code before and after has the same Godbolt assembler, but the code with the lambda has a better branch coverage.
2018-06-23 17:05:04 +02:00
Niels Lohmann
c8bfdfd961 👷 tryping different platforms for AppVeyor 2018-06-23 11:12:32 +02:00
Niels Lohmann
c02de445bf 🚨 fixed more compiler warnings 2018-06-23 11:00:42 +02:00
Niels Lohmann
66dd1a846d 🚨 fixed more compiler warnings 2018-06-23 10:47:55 +02:00
Niels Lohmann
850922269d 🚨 removed compiler warnings 2018-06-23 10:28:04 +02:00
Niels Lohmann
0460b90977 📝 fix for #1052 #1139 2018-06-22 22:35:48 +02:00
Niels Lohmann
85f35a1d59 📝 documentation fix 2018-06-22 22:34:42 +02:00
Niels Lohmann
e7c1638d11 💄 cleanup 2018-06-18 22:03:46 +02:00
Niels Lohmann
1c81e9f5ae Merge pull request #1130 from agrianius/develop
test (non)equality for alt_string implementation
2018-06-18 22:01:53 +02:00
Niels Lohmann
d505ed7b31 Merge pull request #1138 from theodelrieu/feature/unordered_map_conversion
Feature/unordered map conversion
2018-06-18 21:59:46 +02:00
Théo DELRIEU
2c920a1032 run make amalgamate 2018-06-18 15:14:10 +02:00
Théo DELRIEU
2b37d7ed86 from_json: add overload for std::unordered_map
Fixes #1133
2018-06-18 15:14:10 +02:00
Théo DELRIEU
299469cfd5 from_json: add missing template arguments for std::map 2018-06-18 10:52:11 +02:00
Danielc
1566ad4053 fixed compile error for #1045; to_json for iternation_proxy_internal was needed 2018-06-16 12:01:49 +03:00
Vitaliy
f574d7e084 simplify templates for operators, add more checks 2018-06-14 15:07:06 +03:00
Vitaliy
cd28d872e7 forward declarations to make new compilers happy 2018-06-11 20:50:39 +03:00
Vitaliy
3d3055909c define global operator< for const char* and alt_string 2018-06-11 19:09:57 +03:00
Vitaliy
4feb8211ca test (non)equality for alt_string implementation 2018-06-11 18:03:46 +03:00
Guillaume Racicot
14e6278c2f Merge branch 'develop' of github.com:gracicot/json into develop 2018-06-04 11:18:25 -04:00
Guillaume Racicot
7acd90b651 Fixed check for compatible string type 2018-06-04 11:18:19 -04:00
Guillaume Racicot
5676a2a076 Aligned template declaration 2018-06-03 23:51:07 -04:00
Guillaume Racicot
e0e7fa39e7 Re-added external_constructor with string compatible types 2018-06-03 23:49:13 -04:00
Guillaume Racicot
4778c02ab5 Set MSVC version from 1514 and older 2018-06-01 14:42:25 -04:00
Guillaume Racicot
714c592680 Disabled implicit conversion to string_view on MSVC 15.13 and older 2018-06-01 14:22:57 -04:00
Niels Lohmann
e830bc502f Merge pull request #1117 from TinyTinni/develop
remove stringstream dependency
2018-06-01 08:05:45 +02:00
Matthias Möller
ecadcdb593 added char cast
should fix the GCC unittest
2018-05-31 16:36:16 +02:00
Matthias Möller
48656a49f5 typo 2018-05-31 15:32:21 +02:00
Matthias Möller
64acb42aa7 remove stringstream dependency 2018-05-31 13:45:58 +02:00
Niels Lohmann
8efbf8d7bb 📝 documentation to avoid future issues like #1108 2018-05-28 18:14:44 +02:00
Niels Lohmann
e5a67fc3f8 Merge branch 'develop' of https://github.com/nlohmann/json into develop 2018-05-28 17:57:46 +02:00
Niels Lohmann
a49644ab74 🚑 adjusted Fuzzer to new parser
out_of_range exceptions where unexpected before - the parser used to crash in these situations...
2018-05-28 17:57:22 +02:00
Niels Lohmann
0efaf891e5 Merge pull request #1089 from theodelrieu/feature/map_conversion
Provide a from_json overload for std::map
2018-05-28 14:53:23 +02:00
Théo DELRIEU
c5e63fd684 Provide a from_json overload for std::map
This overload is chosen only when BasicJsonType::string_t
is not constructible from std::map::key_type.

Currently, converting a map to json treats it as an array of pairs.

fixes #1079
2018-05-28 11:06:24 +02:00
Niels Lohmann
db03d09312 Merge branch 'feature/key_ref' into develop (fixes #1098) 2018-05-27 22:26:00 +02:00
Niels Lohmann
cf9299d222 Merge branch 'feature/sax2' into develop #971 2018-05-27 18:12:59 +02:00
Niels Lohmann
3cdc4d784b 📝 added documentation 2018-05-27 18:07:53 +02:00
Niels Lohmann
adf09726b0 Merge branch 'develop' into feature/sax2 2018-05-27 14:26:13 +02:00
Niels Lohmann
481ace65c4 🔨 only calculate array index string when needed #1098 2018-05-27 12:04:22 +02:00
Niels Lohmann
1c6b332dcd 👌 mitigating cppcheck bug #1101 2018-05-26 14:10:13 +02:00
Niels Lohmann
90eb0a91e0 keys are now returned as const reference #1098 2018-05-26 13:26:40 +02:00
Niels Lohmann
1f84cc2c88 adjusted test cases 2018-05-17 16:50:37 +02:00
Niels Lohmann
717301d1bc Merge branch 'testsuite' into feature/sax2 2018-05-17 16:36:43 +02:00
Niels Lohmann
4639bb2c8f added more tests from recent nst's JSONTestSuite 2018-05-17 10:10:01 +02:00
Niels Lohmann
e94862a649 🚑 fixed error in callback logic 2018-05-06 19:00:49 +02:00
Niels Lohmann
ae213721b1 🔨 removed unget function for wstring parsers 2018-05-06 14:05:29 +02:00
Niels Lohmann
5ff2abb90d Merge branch 'develop' into feature/sax2 2018-05-06 13:29:23 +02:00
Niels Lohmann
567fe9b7a0 Merge pull request #1078 from martin-mfg/patch-1
fix typo in README
2018-05-04 17:04:35 +02:00
martin-mfg
377e956655 fix typo in readme
The README says:
> "The library itself contains of a single header file ..."

I guess "consists of a" is the wording that was intended here. Alternatively, "contains a" might also be what was intended. Either way, I think both versions work equally well and thus choose the one that I believe was intended.
2018-05-03 22:42:52 +02:00
Niels Lohmann
5da596385b Update issue templates 2018-05-03 18:35:56 +02:00
Niels Lohmann
7bbe7bb98f 🔥 removed old issue template 2018-05-03 18:35:21 +02:00
Niels Lohmann
14f01e1981 🔧 update issue templates 2018-05-03 18:32:53 +02:00
Niels Lohmann
86b0732a10 📝 added public key used for commits and releases 2018-05-03 18:11:42 +02:00
Niels Lohmann
ed69e50ad2 📄 added SPDX-License-Identifier 2018-05-03 17:41:45 +02:00
Niels Lohmann
5bc4ff9da3 Merge branch 'feature/wstring' into develop 2018-04-29 17:29:57 +02:00
Niels Lohmann
fa3e42f826 Merge branch 'develop' into feature/wstring 2018-04-29 13:16:12 +02:00
Niels Lohmann
b5d1755dfb 🔥 removed commented-out test cases #1060 2018-04-22 15:41:42 +02:00
Niels Lohmann
0ab8fab338 Merge pull request #1058 from dns13/patch-1
Fix typo
2018-04-17 23:26:00 +05:30
Jan Schöppach
65b4d8251b Fix typo in single_include, too 2018-04-17 13:02:36 +02:00
Jan Schöppach
53fb230098 Fix typo 2018-04-17 12:08:44 +02:00
Niels Lohmann
46ec2fddf8 📝 updated THANKS list 2018-04-10 18:13:37 +02:00
Niels Lohmann
b8bfd1140d Merge pull request #1048 from chuckatkins/misc-cmake-packaging-enhancements
Misc cmake packaging enhancements
2018-04-10 17:57:21 +02:00
Chuck Atkins
33a2154f8d Enable target namespaces and build dir project config
CMake convention is to use a project namespace, i.e. Foo::, for imported
targets.  When multiple targets are imported from a project, this looks
like Foo::Bar1 Foo::Bar2, etc.  This adds the nlohmann_json:: namespace to
the exported target names.

This also allows the generated project config files to be used from the
build directory instead of just the install directory.
2018-04-10 09:08:38 -04:00
Niels Lohmann
29362c6ace Merge pull request #1047 from jammehcow/patch-1
Fixed incorrect LLVM version number in README
2018-04-10 08:39:58 +02:00
Niels Lohmann
c02a3155d4 👷 added Xcode 9.3 builder
See https://blog.travis-ci.com/2018-04-09-say-bonjour-to-xcode-93-and-macos-high-sierra.
2018-04-10 08:39:28 +02:00
Niels Lohmann
8d8f890771 💩 first try on #1045 2018-04-10 08:29:07 +02:00
James Upjohn
7f20e9ddc7 Fixed incorrect version number in README
clang-900.0.39.2 is from LLVM 9.0.0, not 8.1.0
2018-04-10 17:16:44 +12:00
Chuck Atkins
031b88d315 Make the CMake install dir user-configurable 2018-04-09 11:31:25 -04:00
Guillaume Racicot
aaee18ce90 Added test for string conversion with string_view 2018-04-09 11:15:33 -04:00
Niels Lohmann
7c503c64b7 Merge pull request #1043 from coryan/patch-1
Fix trivial typo in comment.
2018-04-09 08:19:56 +02:00
Carlos O'Ryan
4286b16b71 Fix trivial typo in comment.
Not really important, but since I saw it.
2018-04-08 15:46:25 -04:00
Niels Lohmann
cf91b4f2bb Merge branch 'develop' into feature/wstring 2018-04-08 11:36:58 +02:00
Niels Lohmann
f924df1835 Merge branch 'develop' into feature/sax2 2018-04-08 11:36:44 +02:00
Niels Lohmann
acf10d9af7 Merge pull request #1041 from ax3l/topic-spack
Package Manager: Spack
2018-04-08 11:32:35 +02:00
Niels Lohmann
e1ea8369ad Merge branch 'develop' into feature/sax2 2018-04-08 09:31:59 +02:00
Niels Lohmann
40f279c59d Merge branch 'feature/issue1021' into develop 2018-04-08 09:28:37 +02:00
Niels Lohmann
18a0271a95 Merge branch 'develop' into feature/issue1021 2018-04-08 09:21:43 +02:00
Axel Huebl
1ae9896387 Package Manager: Spack
I contributed a package to the Spack package manager.

Spack is a flexible package manager that supports multiple versions,
configurations, platforms, and compilers. It is popular in
high-performance computing.
2018-04-08 01:12:49 +02:00
Niels Lohmann
83b143382e Merge pull request #1040 from ax3l/topic-debugViewMSVCcmakeMin
CMake: 3.8+ is Sufficient
2018-04-07 15:14:59 +02:00
Axel Huebl
e439a1a9a7 CMake: 3.8+ is Sufficient
The current CMake scripts depend on CMake 3.8+.
This allows us to remove previous work-arounds.
2018-04-07 13:15:44 +02:00
Niels Lohmann
495436a5d5 Merge pull request #1026 from ktonon/develop
Added public target_compile_features for auto and constexpr
2018-04-03 17:34:42 +02:00
Kevin Tonon
a35d414c39 Update CMake to latest on Travis 2018-04-03 08:28:07 -04:00
Niels Lohmann
08a7233d1b 🚑 fixed commit 1e08654 2018-04-02 22:38:44 +02:00
Niels Lohmann
1e08654f99 🔨 cleanup 2018-04-02 22:25:17 +02:00
Niels Lohmann
aa89c5e048 🔨 removing unget_character() function from input adapters #834 2018-04-02 21:10:48 +02:00
Niels Lohmann
6678eb2b4a improved test coverage #1031 2018-04-02 15:38:49 +02:00
Niels Lohmann
16c5bfeaad 👌 fixed compiler warnings #1031 2018-04-02 13:01:56 +02:00
Niels Lohmann
727dd4664b 🔨 trying to make tests run with MSVC #1031 2018-04-02 12:27:07 +02:00
Niels Lohmann
ab89ae4e50 🔨 trying to make tests run with MSVC #1031 2018-04-02 11:34:36 +02:00
Niels Lohmann
eb06d0531a 🚧 added input adapter for wide strings #1031 2018-04-01 19:12:36 +02:00
Niels Lohmann
ba6edd5634 🔨 cleanup 2018-03-30 00:38:18 +02:00
Niels Lohmann
850671b9f1 🔨 using a vector<bool> for the parser hierarchy 2018-03-29 18:45:43 +02:00
Niels Lohmann
4efa8cdb4c 💚 fixed Valgrind options #1030 2018-03-29 17:19:21 +02:00
Niels Lohmann
830c93fd09 📝 fixed example for operator> #1029 2018-03-29 17:07:55 +02:00
Guillaume Racicot
c78dbc366c Added test for conversion to string_view 2018-03-29 01:03:57 -04:00
Guillaume Racicot
53d8d57921 Amalgamate single include 2018-03-29 01:03:36 -04:00
Niels Lohmann
5f723bbec6 🔨 realized callback parser wirh SAX interface #971 2018-03-28 23:39:39 +02:00
Niels Lohmann
896a9db461 🔨 improved code #1021 2018-03-28 19:37:21 +02:00
Kevin Tonon
73cc5089e3 Using target_compile_features to specify C++ 11 standard 2018-03-28 13:11:49 -04:00
Niels Lohmann
a9baab76c2 🚑 fix for #1021 2018-03-28 18:20:55 +02:00
Niels Lohmann
4f6b2b6429 🔨 changed SAX interface 2018-03-21 20:12:06 +01:00
Niels Lohmann
2537677e4c improved test coverage 2018-03-20 23:40:01 +01:00
Niels Lohmann
9e1abb4842 improved coverage 2018-03-20 22:39:08 +01:00
Niels Lohmann
1e38ffc014 more tests 2018-03-20 20:04:11 +01:00
Niels Lohmann
25f56ff207 📝 updated documentation 2018-03-20 19:22:18 +01:00
Niels Lohmann
99ecca55c4 improved test coverage 2018-03-20 18:49:10 +01:00
Niels Lohmann
9e07e9b4ec implemented non-throwing binary reader 2018-03-19 22:48:13 +01:00
Niels Lohmann
a271ee5f16 ♻️ proper use of SAX parser for binary formats 2018-03-18 23:00:45 +01:00
Niels Lohmann
943d641054 🔨 some refactoring 2018-03-18 16:07:21 +01:00
Niels Lohmann
22929fe189 🚧 started a SAX/DOM/callback parser 2018-03-18 15:13:53 +01:00
Niels Lohmann
375b05a17d 🔨 cleanup 2018-03-17 23:31:18 +01:00
Niels Lohmann
606a25195f improved test coverage 2018-03-17 19:15:59 +01:00
Niels Lohmann
c87ffad45c ♻️ implemented a non-recursive parser 2018-03-17 14:46:50 +01:00
Guillaume Racicot
2a5506ed98 Amalgamated headers 2018-03-16 13:16:10 -04:00
Guillaume Racicot
8165707990 basic_json now supports getting many type of strings 2018-03-15 15:35:00 -04:00
Niels Lohmann
27cf05af8d Merge branch 'develop' into feature/sax2 2018-03-14 22:02:19 +01:00
Niels Lohmann
d2dd27dc3b Merge branch 'release/3.1.2' into develop 2018-03-14 21:48:03 +01:00
Niels Lohmann
8a6c8cb0f7 🔖 set version to 3.1.2 2018-03-14 21:32:03 +01:00
Niels Lohmann
afef474c0d 🔖 set version to 3.1.2 2018-03-14 21:09:27 +01:00
Niels Lohmann
a52e8355b8 oops 2018-03-14 17:32:48 +01:00
Niels Lohmann
21410d50af 🏁 moved /Wall to CMake 2018-03-14 17:21:31 +01:00
Niels Lohmann
829ed74d66 🏁 experimenting with /Wall 2018-03-14 07:38:22 +01:00
Niels Lohmann
1262d474eb 🏁 fixed an MSVC warning 2018-03-14 07:32:28 +01:00
Niels Lohmann
282bafae4f 🔨 fixed compilation error 2018-03-14 07:18:42 +01:00
Niels Lohmann
abac6a0e84 Merge branch 'develop' into feature/sax2 2018-03-13 23:58:17 +01:00
Niels Lohmann
919d1fef8f Merge pull request #1009 from nlohmann/user_string_parser
Allowing for user-defined string type in lexer/parser
2018-03-13 14:52:59 +01:00
Niels Lohmann
8557151d90 ♻️ adjusting lexer/parser in symmetry to #1006 2018-03-12 19:15:11 +01:00
Niels Lohmann
b56ac86471 📝 thanks for #1006 2018-03-12 18:44:19 +01:00
Niels Lohmann
0cab3b2c8e Merge pull request #1006 from agrianius/dump-template
dump to alternative string type, as defined in basic_json template
2018-03-12 18:41:59 +01:00
Niels Lohmann
3d4f6a2940 🔨 cleaner exception interface 2018-03-11 22:47:25 +01:00
Niels Lohmann
ad47b0fbde ♻️ refactored binary readers to use a SAX parser 2018-03-11 18:47:38 +01:00
Vitaliy Manushkin
392c033805 test refactoring 2018-03-11 00:29:04 +03:00
Vitaliy Manushkin
51349537fc add unit test: checking dump to alternative string type 2018-03-10 23:59:10 +03:00
Vitaliy Manushkin
830f3e5290 forward alternative string class from output_adapter to output_string_adapter 2018-03-10 23:58:16 +03:00
Vitaliy Manushkin
ed6b1464f9 dump to alternate implementation of string, as defined in basic_json template (changes to amalgamated code) 2018-03-10 17:36:51 +03:00
Vitaliy Manushkin
faccc37d0d dump to alternate implementation of string, as defined in basic_json template 2018-03-10 17:19:28 +03:00
Niels Lohmann
149d2fd09c 💚 improved test coverage 2018-03-10 11:24:00 +01:00
Niels Lohmann
6399cd3039 Merge branch 'develop' into feature/sax2 2018-03-10 11:07:36 +01:00
Niels Lohmann
6151dfaed7 👌 made changes proposed in #1001 2018-03-10 11:02:58 +01:00
Niels Lohmann
35e43df625 Merge branch 'develop' into feature/sax2 2018-03-09 21:56:30 +01:00
Niels Lohmann
9918523077 📝 cleanup after #1001 2018-03-09 21:31:46 +01:00
Niels Lohmann
e737de8941 Merge pull request #1001 from nlohmann/leak
Fix memory leak during parser callback
2018-03-09 21:23:00 +01:00
Niels Lohmann
aa8fc2a41c 🚑 hopefully fixed the memory leak 2018-03-08 17:11:15 +01:00
Niels Lohmann
7c1a788893 Merge branch 'develop' into feature/sax2 2018-03-08 07:39:37 +01:00
Niels Lohmann
cf60e18c89 🔥 removing failing test (work on this in branch "leak") 2018-03-08 07:39:21 +01:00
Niels Lohmann
97559bb1b2 🔨 trying to fix the leak
Part 1: properly use forwarding
2018-03-08 07:36:56 +01:00
Niels Lohmann
38345fd06c 👌 fixed some more warnings 2018-03-07 22:51:22 +01:00
Niels Lohmann
8b379948d0 🔥 replaced acceptor with SAX parser 2018-03-07 22:40:48 +01:00
Niels Lohmann
303a0c5843 Merge branch 'develop' into feature/sax2 2018-03-07 22:26:01 +01:00
Niels Lohmann
d183d34b96 💚 added another test case 2018-03-07 22:25:25 +01:00
Niels Lohmann
d2d65bb25b ♻️ refined SFINAE to fix some warnings 2018-03-07 22:01:44 +01:00
Niels Lohmann
476b2e09be 💚 added regression tests for #972 and #977 2018-03-06 20:13:31 +01:00
Niels Lohmann
62030615a0 Merge pull request #986 from theodelrieu/fix/basic_json_conversion
Fix/basic json conversion
2018-03-06 19:27:39 +01:00
Niels Lohmann
5beab80553 🔨 using the SAX-DOM parser 2018-03-06 18:17:07 +01:00
Niels Lohmann
faf2546a15 🔨 simplified SAX-DOM parser 2018-03-06 07:19:05 +01:00
Niels Lohmann
5b9d03cfdb 🔨 added SAX-DOM-Parser 2018-03-05 21:06:00 +01:00
Niels Lohmann
9d27429527 🔨 added error messages to SAX interface 2018-03-05 16:46:35 +01:00
Niels Lohmann
86991d5204 Merge branch 'develop' into feature/sax2 2018-03-05 16:16:43 +01:00
Niels Lohmann
fdecbf6e1e Merge pull request #992 from bogemic/pvs_studio_fix_misprinted_condition
fixed misprinted condition detected by PVS Studio.
2018-03-05 15:57:57 +01:00
Mike Bogdanov
fd30ad8a14 did make amalgamate 2018-03-02 11:47:35 +03:00
Mike Bogdanov
2a2ed799b1 pvs_studio fix. misprinted condition 2018-03-02 11:12:44 +03:00
Niels Lohmann
8d104e6fe3 💚 fixed test case 2018-02-28 22:40:48 +01:00
Niels Lohmann
5773e164bb 🚨 fixed a linter warning 2018-02-28 19:59:54 +01:00
Théo DELRIEU
8711ec6034 support construction from other basic_json types
Before this patch, `basic_json` types with different template arguments
were treated as `CompatibleArrayType`. Which sometimes leads to recursive
calls and stack overflows.

This patch adds a constructor and a `get` overload to deal with
different `basic_json` types.
2018-02-27 16:48:09 +01:00
Théo DELRIEU
c22f2d41f3 missing CHECK_NOTHROW in unit-udt 2018-02-27 11:09:53 +01:00
Niels Lohmann
3ff9455332 🔨 added a SAX-DOM-Parser 2018-02-26 23:39:23 +01:00
Niels Lohmann
21352c4d8e ♻️ refactored SAX parser 2018-02-26 20:08:12 +01:00
Niels Lohmann
981e226ca2 Merge branch 'develop' into feature/sax2 2018-02-26 20:07:52 +01:00
Niels Lohmann
1f3d2a3be7 📝 overworked README 2018-02-26 17:37:24 +01:00
Niels Lohmann
13ca723c38 Merge pull request #981 from wla80/develop
Make integration section concise
2018-02-26 16:51:51 +01:00
Wilson
05d3bf1699 Make integration section concise 2018-02-25 22:12:44 -08:00
Niels Lohmann
8d6b3d44d6 👌 fixed some compiler warnings 2018-02-25 18:35:16 +01:00
Niels Lohmann
8c7f46f7d0 🔨 removed a logic error and improved coverage 2018-02-25 17:10:30 +01:00
Niels Lohmann
922f7a3d0e added more tests for SAX parsing 2018-02-25 14:21:30 +01:00
Niels Lohmann
ac230e8b4b 🔨 fixed test cases to be more robust 2018-02-25 10:44:47 +01:00
Niels Lohmann
374ebacc51 added a SAX parser #971 2018-02-24 18:04:07 +01:00
Niels Lohmann
8968adcd53 Merge branch 'release/3.1.1' into develop 2018-02-13 19:36:35 +01:00
Niels Lohmann
8424d10e45 🔖 set version to 3.1.1 2018-02-13 15:59:32 +01:00
Niels Lohmann
938c861a09 🔖 set version to 3.1.1 2018-02-12 22:59:36 +01:00
Niels Lohmann
94b7a8da66 💄 fixed indentation 2018-02-12 20:46:14 +01:00
Niels Lohmann
20b5f4d89c Merge pull request #969 from theodelrieu/fix/924
Fix constraints on from_json(CompatibleArrayType)
2018-02-12 18:17:59 +01:00
Théo DELRIEU
01d6118828 Fix constraints on from_json(CompatibleArrayType)
Fixes #924
2018-02-12 15:37:33 +01:00
Niels Lohmann
b02e3bb0b6 Merge pull request #957 from theodelrieu/fix_coveralls
Make coveralls watch the include folder
2018-02-12 15:02:21 +01:00
Théo DELRIEU
41db7cd818 Make the coveralls job use the multiple header version 2018-02-12 10:23:33 +01:00
Niels Lohmann
447f5421eb 🔨 overworked release target 2018-02-11 16:50:01 +01:00
Niels Lohmann
61f0bfb15c 🔨 enforce using Python 2 for the wandbox script 2018-02-11 14:46:15 +01:00
Niels Lohmann
548f488941 🔨 overworked Makefile 2018-02-10 14:46:39 +01:00
Niels Lohmann
865ff00de0 📝 updated documentation wrt. objects #963 2018-02-09 23:37:20 +01:00
Niels Lohmann
addbbbe136 Merge branch 'develop' of https://github.com/nlohmann/json into develop 2018-02-09 23:32:37 +01:00
Niels Lohmann
0a64982e86 📝 cleanup after #954 2018-02-09 23:32:28 +01:00
Niels Lohmann
e5d538c5ea Merge pull request #954 from pfultz2/patch-1
Add a note about installing the library with cget
2018-02-09 23:28:54 +01:00
Niels Lohmann
2dda87c3b7 Merge branch 'feature/coverage_multi' into develop 2018-02-09 23:01:56 +01:00
Paul Fultz II
5731695d7b Clarify dev version and add space after the word flag. 2018-02-09 15:45:20 -06:00
Niels Lohmann
74675dd69c back to the original version 2018-02-09 22:40:52 +01:00
Paul Fultz II
50863c5a09 Latest updates based on feedback 2018-02-09 15:35:46 -06:00
Niels Lohmann
ab05df3a48 🔨 another try 2018-02-09 22:27:08 +01:00
Niels Lohmann
b455154cc9 🔨 another try 2018-02-09 22:18:51 +01:00
Niels Lohmann
1e8f4d6ab3 🔨 more trying 2018-02-09 22:11:05 +01:00
Niels Lohmann
316634e129 🔨 added quotes around parameters 2018-02-09 21:54:32 +01:00
Niels Lohmann
0111f3187e 🔨 working on #953 2018-02-09 21:30:15 +01:00
Niels Lohmann
83db7876c5 🏁 removing test case that fails on MSVC #962 2018-02-09 18:32:12 +01:00
Niels Lohmann
33a9b00ce6 🐛 fix for #962
Added out_of_range exception for UBJSON containers with sizes that exceed the target container's max_size.
2018-02-06 22:38:53 +01:00
Niels Lohmann
8b457ace25 🐛 fixing CBOR's indefinity length strings #961
Beside the fix discussed in #961, we also had to re-adjust a test case. It seems that it was failing before, and I "fixed" it to work with the broken implementation...
2018-02-06 20:43:03 +01:00
Niels Lohmann
556e30f759 Merge pull request #955 from patrikhuber/patch-1
Fix links in README.md
2018-02-06 20:18:14 +01:00
Patrik Huber
ee76436592 Change to angle brackets 2018-02-06 11:29:37 +00:00
Niels Lohmann
737cffe0cb 🔨 fixed directory for lcov coverage 2018-02-04 20:58:50 +01:00
Patrik Huber
ae688016f6 Changed links from master to develop branch 2018-02-04 12:41:46 +00:00
Niels Lohmann
2b7b39c72d 🚀 added release target #956 2018-02-04 13:29:23 +01:00
Patrik Huber
44b40d7c6a Fix links in README.md 2018-02-03 15:48:02 +00:00
Paul Fultz II
3402260983 Add a note about installing the library with cget 2018-02-02 11:13:13 -06:00
Niels Lohmann
3a887dc9fe 👷 fixed coveralls 2018-02-02 07:56:30 +01:00
Niels Lohmann
5c2a0a511e 👷 fixed coveralls 2018-02-02 07:31:57 +01:00
Niels Lohmann
b779666916 👷 re-added homebrew tests 2018-02-02 00:20:04 +01:00
Niels Lohmann
97309f0da9 Merge branch 'release/3.1.0' into develop 2018-02-02 00:06:17 +01:00
Niels Lohmann
a8fcfd9880 👷 fixed travis file 2018-02-01 22:34:14 +01:00
Niels Lohmann
f5c03999d0 🔨 fixed benchmark compilation 2018-02-01 22:26:26 +01:00
Niels Lohmann
0258484626 🔖 set version to 3.1.0
- updated documentation wrt. new repository layout
- temporarily switched off Homebrew --HEAD building (can only be switched on after release)
- set copyright date to 2018
2018-02-01 22:20:26 +01:00
Niels Lohmann
ce7d0ebf5d Merge pull request #944 from theodelrieu/fix/cmake_install
fix cmake install directory (for real this time)
2018-02-01 18:39:07 +01:00
Théo DELRIEU
14cd019861 fix cmake install directory (for real this time)
* Rename 'develop' folder to 'include/nlohmann'
* Rename 'src' folder to 'single_include/nlohmann'
* Use <nlohmann/*> headers in sources and tests
* Change amalgamate config file
2018-02-01 11:06:51 +01:00
Niels Lohmann
9958dde3da Merge pull request #950 from kaidokert/develop
Templatize std::string in binary_reader #941
2018-02-01 09:29:53 +01:00
Kaido
aed4a080bf Templatize std::string in binary_reader #941 2018-01-31 23:01:01 -08:00
Niels Lohmann
e8bf1f62f7 added define for library version #948 #943 2018-01-31 22:36:18 +01:00
Niels Lohmann
552d153842 📝 added more statistics on binary formats 2018-01-31 21:54:38 +01:00
Niels Lohmann
60e2d28eb7 🐛 fix for #947 2018-01-31 20:53:13 +01:00
Niels Lohmann
51c774f208 📝 added documentation for binary formats 2018-01-31 17:23:11 +01:00
Niels Lohmann
57e6fddd90 🚨 fixed warnings 2018-01-30 23:57:49 +01:00
Niels Lohmann
f7131715b1 Merge branch 'develop' of https://github.com/nlohmann/json into develop 2018-01-30 23:20:39 +01:00
Niels Lohmann
ce273af9b6 📝 added documentation for binary formats 2018-01-30 23:20:36 +01:00
Niels Lohmann
ae235139b9 Merge pull request #940 from kaidokert/develop
Allow overriding THROW/CATCH/TRY macros with no-exceptions #938
2018-01-29 22:04:26 +01:00
Niels Lohmann
8049442c2a 🔨 rename yytext to token_buffer (fixes #933) 2018-01-29 21:56:13 +01:00
Kaido
d0c9e5fffc Allow overriding THROW/CATCH/TRY macros with no-exceptions (redo) #938 2018-01-28 14:42:13 -08:00
Niels Lohmann
b3bd3b726b 📝 added link to OSS-Fuzz project repository 2018-01-28 21:02:02 +01:00
Niels Lohmann
52e9449563 📝 added more functions to overview 2018-01-28 20:44:45 +01:00
Niels Lohmann
cb4a9c85cb 🔨 excluded code from coverage 2018-01-28 17:55:40 +01:00
Niels Lohmann
1483d39c91 🔨 moved class json_pointer into separate file #920 2018-01-28 15:36:56 +01:00
Niels Lohmann
e95578f884 📝 documented JSON Merge Patch (RFC 7386) 2018-01-28 14:36:17 +01:00
Niels Lohmann
102c474397 🔨 clean up 2018-01-28 14:13:02 +01:00
Niels Lohmann
6855bbb902 🔨 split "parsing" directory to "input" and "output" 2018-01-28 13:15:03 +01:00
Niels Lohmann
05f49fa401 added roundtrip tests for UBJSON 2018-01-27 18:47:32 +01:00
Niels Lohmann
f0b26c8f38 added fuzzer for UBJSON input 2018-01-27 18:38:11 +01:00
Niels Lohmann
b0a68f540f added roundtrip tests for UBJSON 2018-01-27 18:37:55 +01:00
Niels Lohmann
1be3935e9d 📝 cleanup after #936 2018-01-27 17:43:44 +01:00
Niels Lohmann
7aace7c976 Merge pull request #936 from zerodefect/improvement/fix_kmin_compiler_warning
Removed compiler warning about unused variable 'kMinExp'
2018-01-27 16:51:52 +01:00
Niels Lohmann
0e2211df0e Merge pull request #925 from zerodefect/improvement/improve_readme_json_fwd
Howto installation of json_fwd.hpp (fixes #923)
2018-01-25 17:11:21 +01:00
zerodefect
95cf1fefaa Removed compiler warning about unused variable 'kMinExp'. 2018-01-25 12:51:48 +00:00
Niels Lohmann
355c1e946b 👷 added task to check amalgamation #906
- Builds and runs test cases from individual sources rather than from amalgamation.
- Checks whether amalgamation would create the same single-header file as checked in.
2018-01-23 18:00:12 +01:00
Niels Lohmann
dbfd7e532b Merge branch 'develop' of https://github.com/nlohmann/json into develop 2018-01-23 16:33:10 +01:00
Niels Lohmann
3c68a796df 🔥 deprecated iterator_wrapper #874
Also fixed some warnings from GCC.
2018-01-23 16:33:08 +01:00
Niels Lohmann
f05c3edc21 Merge pull request #930 from Pipeliner/develop
Fix a typo in README.md
2018-01-23 07:32:23 +01:00
Niels Lohmann
f5c4e9f3a1 Merge pull request #919 from theodelrieu/fix/sfinae_for_incomplete_types
fix sfinae on basic_json UDT constructor
2018-01-23 07:32:06 +01:00
Niels Lohmann
7eabb6ba36 📝 updated documentation for UBJSON functions 2018-01-22 23:23:17 +01:00
Vadim Evard
fc32b8a9bc Fix a typo in README.md 2018-01-22 13:14:39 +03:00
Niels Lohmann
3cca630836 🔨 cleanup after #915 2018-01-21 15:55:35 +01:00
Niels Lohmann
010e596001 Merge pull request #915 from abolz/dtoa
Floating-point formatting
2018-01-21 15:02:57 +01:00
Niels Lohmann
3d776b0582 📝 updated README 2018-01-21 14:13:42 +01:00
Niels Lohmann
9e5d901f55 Merge branch 'feature/ubjson' into develop 2018-01-21 14:04:29 +01:00
Niels Lohmann
327b8bb09e Merge branch 'feature/strings' into develop 2018-01-21 13:55:52 +01:00
zerodefect
d2b3fd156e Updated README.md to explain how installation of json_fwd.hpp can be achieved as part of install step. 2018-01-19 11:42:53 +00:00
Niels Lohmann
b406e3704b using Google Benchmark #921 2018-01-18 22:00:32 +01:00
Niels Lohmann
a8f711a2f1 using Google Benchmark #921 2018-01-18 21:57:21 +01:00
Niels Lohmann
6402077ac2 Merge pull request #876 from nlohmann/feature/rfc7396
JSON Merge Patch (RFC 7396)
2018-01-18 06:49:31 +01:00
Théo DELRIEU
dcee778c1e fix sfinae on basic_json UDT constructor
Avoid compiler errors when performing SFINAE checks on basic_json
and incomplete types.
2018-01-17 12:17:38 +01:00
Niels Lohmann
7456f1d87b ♻️ re-used existing UTF-8 decoder to simplfy string serialization 2018-01-16 20:42:00 +01:00
Niels Lohmann
afe4571309 🔨 cleanup + some noexcept 2018-01-16 20:41:04 +01:00
Niels Lohmann
b182308eff 🔨 cleanup 2018-01-16 20:40:24 +01:00
abolz
9b9919d460 Use max_digits10 in dump_float for float->text->float round-trip 2018-01-15 21:26:03 +01:00
abolz
810f81bbd9 Regenerate src/json.hpp 2018-01-15 21:24:59 +01:00
abolz
787204f076 Add unit-tests for detail::to_chars 2018-01-15 21:13:17 +01:00
abolz
9f7c2c04c8 Use the Grisu2 algorithm for formatting 'float's and 'double's 2018-01-15 21:07:26 +01:00
abolz
332f352033 Add an implementation of the Grisu2 algorithm for binary to decimal floating-point conversion
This is an attempt to fix #360. The algorithm produces
decimal representations which are guaranteed to roundtrip
and in ~99.8% actually produces the shortest possible
representation. So this is a nice compromise between using
a precision of digits10 and max_digits10.

Note 1:

The implementation only works for IEEE single/double precision
numbers. So the old implementation is kept for compatibility
with non-IEEE implementations and 'long double'.

Note 2:

If number_float_t is 'float', not all serialized numbers can
be recovered using strtod (strtof works, though). (There is
exactly one such number and the result is off by 1 ulp.)
This can be avoided by changing the implementation (the fix
is trivial), but then the resulting decimal numbers are not
exactly short.
2018-01-15 21:07:26 +01:00
abolz
0695ac4001 Add tests for #360 2018-01-15 21:07:25 +01:00
abolz
68a9736738 Tests: Re-enable some round-trip tests 2018-01-15 21:07:25 +01:00
abolz
6e2e466c27 Tests: Don't rely on the format used for floating-point formatting 2018-01-15 21:07:25 +01:00
abolz
107c21a488 Tests: Exponents are formatted with a leading '+' sign 2018-01-15 21:07:25 +01:00
abolz
3ae82d91a2 Tests: Floating-point formatting uses lower case 'e' 2018-01-15 21:07:24 +01:00
Niels Lohmann
92f7295063 🔨 cleanup 2018-01-15 13:21:33 +01:00
Niels Lohmann
3ac674562f 🔨 clean up 2018-01-14 22:26:20 +01:00
Niels Lohmann
d9446b0e6e Merge pull request #911 from theodelrieu/fix/cmake_install
Fix/cmake install
2018-01-14 20:08:49 +01:00
Niels Lohmann
9d6b3731b9 improved test coverage 2018-01-14 20:07:38 +01:00
Niels Lohmann
06cddd371b 🔨 removed failing amalgamation test 2018-01-14 17:22:42 +01:00
Niels Lohmann
f85f4967fe improved test coverage 2018-01-14 17:22:06 +01:00
Niels Lohmann
6965ff00c8 Merge branch 'develop' into feature/ubjson 2018-01-14 13:58:06 +01:00
Niels Lohmann
411c16cbb2 📝 overworked documentation wrt. amalgamation #906 2018-01-14 13:08:28 +01:00
Niels Lohmann
fea5f3792b 📝 it's 2018 2018-01-14 10:41:59 +01:00
Niels Lohmann
541b46132d ♻️ adjusted code to split headers 2018-01-14 10:34:43 +01:00
Niels Lohmann
0e8f01a963 Merge branch 'develop' into feature/rfc7396 2018-01-14 10:28:09 +01:00
Niels Lohmann
c772c01a48 ♻️ refactored code to split headers 2018-01-14 10:27:30 +01:00
Niels Lohmann
1b54d4a5aa Merge branch 'develop' into feature/ubjson 2018-01-14 10:10:56 +01:00
Niels Lohmann
420dcf1f25 🚧 added check whether code is amalgamated 2018-01-14 10:10:23 +01:00
Théo DELRIEU
5775084ffc cmake: add option to use/install the non-amalgamated version 2018-01-13 13:07:03 +01:00
Théo DELRIEU
84bffd5d36 move amalgamate tool to third_party folder 2018-01-13 13:05:42 +01:00
Théo DELRIEU
922b56e492 cmake: add back trailing slash to NLOHMANN_JSON_SOURCE_DIR 2018-01-13 12:27:33 +01:00
Niels Lohmann
a66b2d20c6 🚨 removed linter warnings for Python code 2018-01-13 11:15:23 +01:00
Niels Lohmann
f4a55f26b0 added amalgamate Python script 2018-01-13 10:59:49 +01:00
Niels Lohmann
241eea0c0e 📝 documentation 2018-01-12 09:23:33 +01:00
Niels Lohmann
10bad9381d 🚧 added size benchmark for binary formats 2018-01-10 23:13:48 +01:00
Niels Lohmann
3a7585e738 added more tests 2018-01-10 22:47:07 +01:00
Niels Lohmann
31bfabc4c0 🔨 optimized input format 2018-01-10 16:14:43 +01:00
Niels Lohmann
965a70e38d 🔨 optimized output format 2018-01-10 11:22:19 +01:00
Niels Lohmann
85173f5627 🔨 some clean up 2018-01-10 10:18:31 +01:00
Niels Lohmann
ce53537ba2 replaces amalgamation tool
The tool used before created a lot of duplicates inside the generated amalgamation. The new tool is a single Python file which seems to do the same job.
2018-01-09 23:15:06 +01:00
Niels Lohmann
0a2920e0fd ♻️ reorganized code 2018-01-09 18:30:02 +01:00
Niels Lohmann
b67e00b9b5 Merge pull request #700 from theodelrieu/refactor/split_it
Refactor/split it
2018-01-09 07:57:01 +01:00
Niels Lohmann
fd04967676 🐛 fixed copy-paste error 2018-01-08 21:37:51 +01:00
Niels Lohmann
fb1154c237 🚧 debug 2018-01-08 21:26:41 +01:00
Niels Lohmann
97e0d20ce9 🚧 debug 2018-01-08 21:16:20 +01:00
Niels Lohmann
ebf28a26ee 🚧 another try 2018-01-08 20:49:02 +01:00
Théo DELRIEU
7e4ee23f40 add single_header CMake target 2018-01-08 20:09:43 +01:00
Théo DELRIEU
57d822b6e2 add missing includes, put back include comments 2018-01-08 20:09:41 +01:00
Théo DELRIEU
9cab30cfce add adl_serializer.hpp 2018-01-08 20:09:38 +01:00
Théo DELRIEU
8e9714fe3d add detail/json_ref.hpp 2018-01-08 20:09:35 +01:00
Théo DELRIEU
a3473fda6a add detail/serializer.hpp 2018-01-08 20:09:33 +01:00
Théo DELRIEU
c117515e31 add detail/parsing/binary_writer.hpp 2018-01-08 20:09:29 +01:00
Théo DELRIEU
d620f76f0d add detail/parsing/binary_reader.hpp 2018-01-08 20:09:27 +01:00
Théo DELRIEU
4dbb433a79 add detail/parsing/output_adapters.hpp 2018-01-08 20:09:24 +01:00
Théo DELRIEU
ae6f66048c add detail/iterators/json_reverse_iterator.hpp 2018-01-08 20:09:21 +01:00
Théo DELRIEU
5fc9ef2b90 add detail/iterators/iteration_proxy.hpp 2018-01-08 20:09:18 +01:00
Théo DELRIEU
bf06cf6c22 add detail/iterators/iter_impl.hpp 2018-01-08 20:09:15 +01:00
Théo DELRIEU
3e65a65290 add detail/iterators/internal_iterator.hpp 2018-01-08 20:09:13 +01:00
Théo DELRIEU
51ecc31db7 add detail/iterators/primitive_iterator.hpp 2018-01-08 20:09:10 +01:00
Théo DELRIEU
9ea25685a8 add detail/parsing/parser.hpp 2018-01-08 20:09:06 +01:00
Théo DELRIEU
3a0743db97 add detail/parsing/lexer.hpp 2018-01-08 20:09:04 +01:00
Théo DELRIEU
7ab3e8d7b3 add detail/parsing/input_adapters.hpp 2018-01-08 20:09:01 +01:00
Théo DELRIEU
21881606f2 add detail/conversions/to_json.hpp 2018-01-08 20:08:58 +01:00
Théo DELRIEU
e0c02c14f0 add detail/conversions/from_json.hpp 2018-01-08 20:08:55 +01:00
Théo DELRIEU
7056b375c4 add detail/value_t.hpp 2018-01-08 20:08:52 +01:00
Théo DELRIEU
8c555db970 add detail/exceptions.hpp 2018-01-08 20:08:50 +01:00
Théo DELRIEU
f364f5ac5a add detail/meta.hpp 2018-01-08 20:08:47 +01:00
Théo DELRIEU
d686713f91 add detail/macro_{un}scope.hpp 2018-01-08 20:08:44 +01:00
Théo DELRIEU
5bffc95773 add json_fwd.hpp 2018-01-08 20:08:38 +01:00
Niels Lohmann
3d7658da89 🚧 working on AppVeyor's errors 2018-01-08 19:48:18 +01:00
Niels Lohmann
126ce2e56c 🚧 further UBJSON 2018-01-08 18:54:17 +01:00
Niels Lohmann
c9938ea838 🚧 started UBJSON implementation 2018-01-07 22:09:12 +01:00
Niels Lohmann
15b6421d07 added UTF-8 decoder capability and stress test
As described in http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt; Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/> - 2015-08-28 - CC BY 4.0
2018-01-05 23:26:22 +01:00
Niels Lohmann
78f8f837e6 added items() function #874 2018-01-05 18:34:10 +01:00
Niels Lohmann
96b40b27a5 📝 fixed Doxygen warnings
Apparently, using "\n" inside an alias is an error now, but "^^" basically means the same.
2018-01-05 18:33:42 +01:00
Niels Lohmann
337e9824ea Merge pull request #900 from Dobiasd/patch-1
fix link to the documentation of the emplace function
2018-01-04 17:11:18 +01:00
Tobias Hermann
ba2316372a fix link to the documentation of the emplace function 2018-01-03 11:06:32 +01:00
Niels Lohmann
ce1dccf347 Merge branch 'release/3.0.1' into develop 2017-12-29 20:24:49 +01:00
Niels Lohmann
92484f0caf 🔖 set version to 3.0.1 2017-12-29 18:31:13 +01:00
Niels Lohmann
ebc6849b71 added test for #894 2017-12-29 16:53:04 +01:00
Niels Lohmann
3c76ff353d 📝 updated docs after PRs 2017-12-29 16:52:09 +01:00
Niels Lohmann
d45183d426 Merge branch 'develop' of https://github.com/nlohmann/json into develop 2017-12-28 13:52:26 +01:00
Niels Lohmann
3b3b6e8e69 🚑 fix for #894
- Implemented "copy" in terms of "add".
- Added check for JSON Pointer array indices to make sure the complete reference token was processed.
- Added test suite from https://github.com/json-patch/json-patch-tests
2017-12-28 13:52:23 +01:00
Niels Lohmann
f28fc2261a Merge pull request #858 from mattismyname/develop
🔧 Fix up a few more effc++ items
2017-12-28 12:13:19 +01:00
Matthew K. Gumbel
72bff90ed9 🔧 Fix up a few more effc++ items 2017-12-24 10:03:36 -08:00
Niels Lohmann
3113a52a7d 📝 added exception 403 to documentation of at (#888)
The at function throws json::out_of_range.403 when a nonexistent object key is provided (just like the usual at function). This was not documented and users could assume json::out_of_range.404 would be thrown instead.

- Updated documentation.
- Added example code.
2017-12-23 18:38:18 +01:00
Niels Lohmann
184e9c6aa7 Merge pull request #885 from TinyTinni/develop
Includes CTest module/adds BUILD_TESTING option
2017-12-23 11:09:46 +01:00
Matthias Möller
d1cda6888e includes CTest module resp. BUILD_TESTING option 2017-12-20 17:54:45 +01:00
Niels Lohmann
88ddb12afc 📝 fix for #883
- Adjusted table to user-defined exceptions. This was forgotten in the 3.0.0 update.
- Added update function to the table.
2017-12-18 19:46:53 +01:00
Niels Lohmann
e54b6ace94 Merge pull request #882 from erengy/fix-msvc-c4819
Fix MSVC warning C4819
2017-12-17 19:52:57 +01:00
Eren Okka
ab0e8b2f3a Fix MSVC warning C4819
Replaces a U+00A0 character with regular space, and fixes a typo.
2017-12-17 18:02:55 +03:00
Niels Lohmann
1ca6ec1dc0 Merge pull request #880 from nlohmann/coverity_scan
Merge branch 'develop' into coverity_scan
2017-12-17 11:24:40 +01:00
Niels Lohmann
1856f38c85 📝 removed paragraph on version 3.0.0 2017-12-17 11:22:35 +01:00
Niels Lohmann
afebb6a3bb Merge branch 'release/3.0.0' into develop 2017-12-17 11:04:53 +01:00
Niels Lohmann
106f9f5436 ⬆️ updated git-update-ghpages script 2017-12-17 10:20:30 +01:00
Niels Lohmann
9eb5e2c271 🔖 set version to 3.0.0 2017-12-17 08:40:19 +01:00
Niels Lohmann
9e3c4ad11f 🔖 set version to 3.0.0 2017-12-17 08:31:18 +01:00
Niels Lohmann
314e4e7699 📝 improved documentation for dump and iterator_wrapper 2017-12-16 23:58:10 +01:00
Niels Lohmann
9a51fb4da2 🚨 fixed some warnings 2017-12-16 22:19:30 +01:00
Niels Lohmann
7bf007f2bc Merge pull request #879 from nlohmann/feature/algorithms
 re-added tests for algorithms
2017-12-16 12:41:07 +01:00
Niels Lohmann
980795b644 ✏️ fixed typos 2017-12-16 12:37:44 +01:00
Niels Lohmann
f3bd755cab removing <iomanip> header 2017-12-16 12:37:25 +01:00
Niels Lohmann
4c871c58f8 re-added tests for algorithms 2017-12-16 11:16:34 +01:00
Niels Lohmann
c23f5dcea6 📝 fixed year 2017-12-15 23:49:37 +01:00
Niels Lohmann
2e1b1061cd Merge pull request #875 from nlohmann/feature/spelling
Overworked library toward 3.0.0 release
2017-12-14 22:31:19 +01:00
Niels Lohmann
261caec2de 👥 added contributor image 2017-12-14 22:29:39 +01:00
Niels Lohmann
f80827d068 Merge pull request #873 from nlohmann/feature/issue872
🚨 remove C4996 warnings #872
2017-12-14 09:35:48 +01:00
Niels Lohmann
9a70c60fa5 Revert "⬆️ updated to Catch 2.0.1"
This reverts commit 920f64c01c.
2017-12-14 07:49:16 +01:00
Niels Lohmann
fb8482db76 👌 fixed some issues from the last commit #875 2017-12-13 23:44:53 +01:00
Niels Lohmann
c6e7eae394 implemented JSON Merge Patch (RFC 7396)
SQLite's json1 extension (https://www.sqlite.org/json1.html) supports JSON Merge Patch (https://tools.ietf.org/html/rfc7396). As the implementation is trivial and we already support JSON Patch, I think this could be a nice extension to the library.
2017-12-13 23:36:22 +01:00
Niels Lohmann
920f64c01c ⬆️ updated to Catch 2.0.1
Update required all CHECK_THROWS_AS macros to pass the exception type without reference, because this is now done by Catch2.
2017-12-13 22:18:05 +01:00
Niels Lohmann
293748a9a9 📝 overworked README
- Added recent contributors to thanks list.
- Linked PGP key for private mails.
- Updated compiler list.
2017-12-13 22:17:02 +01:00
Niels Lohmann
e8d9963abe 👌 cosmetic changes and overworked spelling
- All hex literals use upper case letters after the x.
- Fixed sime typos.
- Documented some more functions.
2017-12-13 22:15:53 +01:00
Niels Lohmann
a9a4ff61c6 🚨 remove C4996 warnings #872
These were the remaining direct calls to alloc.
2017-12-13 17:01:39 +01:00
Niels Lohmann
f7ae143a93 Merge pull request #870 from nlohmann/feature/issue838
💥 throwing an exception in case dump encounters a non-UTF-8 string #838
2017-12-13 06:34:11 +01:00
Niels Lohmann
8419bfbbd2 improved test coverage
As we guarantee proper UTF-8 before, we do not need to cope with it later.
2017-12-12 20:44:57 +01:00
Niels Lohmann
569d275f65 💥 throwing an exception in case dump encounters a non-UTF-8 string #838
We had a lot of issues with failing roundtrips (i.e., parse errors from serializations) in case string were stored in the library that were not UTF-8 encoded. This PR adds an exception in this case.
2017-12-11 22:38:05 +01:00
Niels Lohmann
383743c6c0 Merge pull request #868 from nlohmann/feature/issue867
📝 fixing documentation #867
2017-12-11 08:55:26 +01:00
Niels Lohmann
7de009edd1 ✏️ fixing typos #869 2017-12-10 13:07:47 +01:00
Niels Lohmann
772bb3cc20 📝 fixing documentation #867
The example in the documentation on how to "force" an array of arrays was wrong since the first release. Fixed the documentation and added checks for the README unit tests.
2017-12-10 12:32:20 +01:00
Niels Lohmann
0693945230 Merge pull request #860 from bogemic/std_iterator_conformance_cpp17
iter_impl template conformance with C++17
2017-12-08 07:55:47 +01:00
Mike Bogdanov
64d6daa76e iter_impl template conformance with C++17 2017-12-07 11:30:17 +03:00
Niels Lohmann
7c2d4f1852 👷 added Xcode 9.1 and 9.2 2017-12-06 22:32:03 +01:00
Niels Lohmann
9e2f185ac6 💄 reformatted code after PRs 2017-12-06 22:21:11 +01:00
Niels Lohmann
c5e731774a Merge pull request #856 from bogemic/std_allocator_conformance_cpp17
Std allocator conformance cpp17
2017-12-06 21:52:52 +01:00
Niels Lohmann
25d205c16d 📝 clarified difference between serialization and string value retrieval #853 2017-12-06 21:42:36 +01:00
Niels Lohmann
fa76f2efd7 Merge pull request #855 from theodelrieu/fix/cmake_include_directories
cmake: use BUILD_INTERFACE/INSTALL_INTERFACE
2017-12-06 20:47:38 +01:00
Mike Bogdanov
8890b935fd fixed merge conflicts 2017-12-06 12:24:50 +03:00
Mike Bogdanov
daba1b6a0b fixed conformance with C++17, some members of allocator are depricated and should be used via allocator_traits 2017-12-06 11:20:42 +03:00
Niels Lohmann
0e3a0b730b Merge pull request #854 from theodelrieu/fix/force_msvc_stacktrace
to/from_json: add a MSVC-specific static_assert to force a stacktrace
2017-12-05 19:36:31 +01:00
Théo DELRIEU
541ee62a05 cmake: use BUILD_INTERFACE/INSTALL_INTERFACE in target_include_directories 2017-12-05 11:27:03 +01:00
Théo DELRIEU
c9a02cbc59 to/from_json: add a MSVC-specific static_assert to force a stacktrace 2017-12-05 10:52:55 +01:00
Niels Lohmann
f4c01601fa Merge pull request #844 from TinyTinni/develop
Add .natvis for MSVC debug view
2017-12-04 21:43:22 +01:00
Matthias Möller
24fe572d98 missing new line 2017-11-30 13:37:58 +01:00
Matthias Möller
8e9a8792a9 moved natis to root dir 2017-11-30 13:26:45 +01:00
Matthias Möller
af775ddbb8 add compiler & cmake version check 2017-11-28 23:43:39 +01:00
Matthias Möller
48d7a32daa add .natvis for MSVC debug view 2017-11-26 10:31:33 +01:00
Matthias Möller
5b4855dea2 fix targetname 2017-11-26 10:29:51 +01:00
Niels Lohmann
cc937deaf6 🚑 the last commit contained a bug #821 2017-11-26 10:15:23 +01:00
Niels Lohmann
430f03512c 🚨 fixed some warnings #821 2017-11-25 22:06:18 +01:00
Niels Lohmann
ea5aed0769 Merge branch 'feature/to_array' into develop 2017-11-25 19:41:11 +01:00
Niels Lohmann
de75cf89f7 improved test coverage 2017-11-25 19:41:02 +01:00
Niels Lohmann
52ca35b2b0 Merge pull request #829 from jowr/patch-1
Updated hunter package links
2017-11-18 13:35:21 +01:00
Jorrit Wronski
7b8ddadd83 removed hunter badge 2017-11-16 21:01:27 +01:00
Jorrit Wronski
b5ddd99adf Updated hunter package links 2017-11-15 08:48:11 +01:00
Niels Lohmann
4c4f60f438 📝 fixes #820 2017-11-06 20:35:05 +01:00
Niels Lohmann
1af5601a2a Merge pull request #811 from Itja/patch-1
Typos README
2017-10-31 18:23:42 +01:00
Itja
e423aea64a Typos README
Hey, thanks for this great library which I've used in many occasions now. I know it's not much, but I wanted to contribute at least a tiny bit back to you by this PR :-) Keep up the good work!
2017-10-31 16:31:14 +01:00
Niels Lohmann
5696660eba 🔨 another try to fix #714
adding std::ios_base::binary when opening all_unicode.json.cbor
2017-10-31 15:04:14 +01:00
Niels Lohmann
c4d6626745 🚀 installed Request Info Bot 2017-10-30 16:04:34 +01:00
Niels Lohmann
6d2981db82 📝 overworked templates 2017-10-29 16:32:23 +01:00
Niels Lohmann
87df1d6708 Merge branch 'develop' of https://github.com/nlohmann/json into develop 2017-10-29 11:55:04 +01:00
Niels Lohmann
fa1425b87c 🚀 installed Sentiment Bot 2017-10-29 11:54:53 +01:00
Niels Lohmann
73d0095154 Merge pull request #807 from theodelrieu/fix/805
add forwarding references to json_ref constructor
2017-10-28 15:33:22 +02:00
Théo DELRIEU
4b46abf97c add forwarding references to json_ref constructor
fixes #805
2017-10-28 14:22:57 +02:00
Niels Lohmann
8e067c0c3c 🔨 set bidirectional iterator tag #593 2017-10-28 09:41:35 +02:00
Niels Lohmann
cea3f24ff9 📝 comment to address #561 2017-10-27 16:39:52 +02:00
Niels Lohmann
61cc07ff38 📝 some documentation 2017-10-27 16:07:04 +02:00
Niels Lohmann
734e2b73cf 🔨 cleanup 2017-10-27 11:49:24 +02:00
Niels Lohmann
7820b5eccb 📝 thanks for #795 2017-10-27 11:49:17 +02:00
Niels Lohmann
77f8e2f987 Merge pull request #795 from jseward/develop
Add transparent comparator and perfect forwarding support to find() and count()
2017-10-27 11:47:23 +02:00
Niels Lohmann
c215b77936 🚀 installed Stale Bot 2017-10-25 11:37:33 +02:00
Jamie Seward
992c836b30 Add missing spaces 2017-10-24 00:14:25 -07:00
Jamie Seward
715c98b404 Remove extra spaces 2017-10-24 00:06:22 -07:00
Jamie Seward
6c9a401ebc Remove old non-perfect forwarding find and count 2017-10-24 00:01:56 -07:00
Jamie Seward
16ffdbcb20 Remove c++17 support flag in cmake
Already covered by AppVeyor
2017-10-23 23:50:06 -07:00
Jamie Seward
73b1629a15 Remove tabs for spaces 2017-10-23 23:45:39 -07:00
Niels Lohmann
1b1bd0e3e6 #714 is still not fixed 2017-10-23 12:01:50 +02:00
Jamie Seward
33c6511dd0 Remove JSON_HAS_STRING_VIEW
Instead implement @gregmarr's PR comments that perfect forwarding should be used. Also cleaned up cpp language standard detection.
2017-10-23 00:43:26 -07:00
Niels Lohmann
89650c99dd 🚧 checking if #714 is now fixed with MSVC
Hopefully, #764 fixed this.
2017-10-22 11:16:33 +02:00
Niels Lohmann
b0c380b0f8 📝 cleanup after the last PRs 2017-10-22 09:12:35 +02:00
Niels Lohmann
be4fba7baf Merge branch 'develop' of https://github.com/nlohmann/json into develop 2017-10-22 08:53:46 +02:00
Niels Lohmann
f193427e91 🔨 some simplifications 2017-10-22 08:53:43 +02:00
Niels Lohmann
24b6e028a9 improved test coverage 2017-10-22 08:53:27 +02:00
Niels Lohmann
3094640446 Merge pull request #764 from pjkundert/develop-simplify-istream
Simplified istream handing #367
2017-10-22 08:52:28 +02:00
Niels Lohmann
ef40673acb Merge branch 'develop' into develop-simplify-istream 2017-10-22 08:52:15 +02:00
Jamie Seward
d468f8c4e6 Use consistent logic to determine if string_view exists 2017-10-21 16:36:05 -07:00
Jamie Seward
59cde1ad6e Fix for _HAS_CXX17 == 0
Copied from solution to https://github.com/nlohmann/json/issues/464
2017-10-21 16:29:37 -07:00
Jamie Seward
1a66679929 Add string_view support
This avoids unnecessary string copies on often used
find().
2017-10-21 15:20:13 -07:00
Niels Lohmann
33df3250c3 Merge pull request #793 from sonulohani/develop
Error : 'identifier "size_t" is undefined' in linux
2017-10-21 10:58:27 +02:00
Sonu Lohani
92da334862 Error : 'identifier "size_t" is undefined' in linux 2017-10-21 12:52:44 +05:30
Niels Lohmann
2e281ba64b Merge pull request #788 from jseward/develop
Fix Visual Studio 2017 warnings
2017-10-18 15:04:24 +02:00
Jamie Seward
a99fcb4e7d Add comments and newline 2017-10-17 22:53:35 -07:00
Jamie Seward
917d9d8bc3 Fix Visual Studio 2017 warnings 2017-10-16 23:23:55 -07:00
Niels Lohmann
7c8f0a4186 Merge pull request #785 from jseward/develop
Fix warning C4706 on Visual Studio 2017 - fixes #784
2017-10-16 19:48:17 +02:00
Niels Lohmann
b27a142ec0 Merge pull request #783 from eld00d/patch-1
Set GENERATE_TAGFILE in Doxyfile
2017-10-16 17:54:28 +02:00
Perry Kundert
a8cc7a1bc8 Consistently use std::char_traits int_type-->char conversion intrinsics 2017-10-16 08:06:10 -07:00
Jamie Seward
af99090742 Disable warning C4389: '==': signed/unsigned mismatch
Lots of tests have this warning.

Also moved out of for loop, doesn't need to be done every loop.
2017-10-16 01:02:48 -07:00
Jamie Seward
8ba7f69ab4 Fix whitespace 2017-10-16 00:49:59 -07:00
Jamie Seward
8a4af820c7 Fix warning C4706 2017-10-16 00:41:58 -07:00
Jamie Seward
19f8f1c075 Add missing "u8"
This causes test-udt to crash due to bad iterator
2017-10-16 00:21:38 -07:00
Jamie Seward
5ec44fe9e3 Add /W4 for MSVS 2017-10-15 22:56:38 -07:00
Nate Vargas
727ee7d03e Set GENERATE_TAGFILE in Doxyfile
Allows documentation to be linked from other projects to https://nlohmann.github.io/json using Doxygen with the tag:
TAGFILES = $(SOME_PATH)/nlohmann_json.tag=https://nlohmann.github.io/json
2017-10-14 19:06:38 -05:00
Niels Lohmann
d300a8e268 🚨 fixed warnings #776 2017-10-13 08:46:29 +02:00
Perry Kundert
0b803d0a5f Simplify the json/src/benchmarks.cpp to allow more optimal code gen.
o For some unknown reason, the complexity of the benchmark platform
  prevented some C++ compilers from generating optimal code, properly
  reflective of the real performance in actual deployment.
o Added the json_benchmarks_simple target, which performs the same
  suite of tests as json_benchmarks.
o Simplified the benchmark platform, and emit an "Average" TPS
  (Transactions Per Second) value reflective of aggregate parse/output
  performance.
2017-10-07 15:50:19 -07:00
Perry Kundert
23440eb86e Remove outdated commentary about the value of eof(), retain input type
o We assume the same character int_type as the unerlying std::istream
o There are no assumptions on the value of eof(), other than that it
  will not be a valid unsigned char value.
o To retain performance, we do not allow swapping out the underlying
  std::streambuf during our use of the std::istream for parsing.
2017-10-06 12:54:43 -07:00
Perry Kundert
45e1e3d48a Revert some unnecessary member initializer changes. 2017-10-06 07:53:31 -07:00
Perry Kundert
5e480b56d8 Further simplify character type handling 2017-10-06 07:37:49 -07:00
Perry Kundert
1b43a45bec Implement correct handling of std::streambuf int_type, eof()
o Make no assumptions about eof(), other than that it is somewhere
  outside of the valid range of char_type.
2017-10-05 16:16:41 -07:00
Perry Kundert
184dab60e6 Accelerate access to underlying std::istream streambuf 2017-10-05 16:16:41 -07:00
Perry Kundert
f775922ca8 Specify initializers for yytest, token_string using initializer-lists
o We can retain -Weffc++ and specify default initializers by using
  initializer lists.  The risks are low (of additional non-conformat
  compilers), because there is already one other such initialization
  used in the code-base.
2017-10-05 16:16:41 -07:00
Perry Kundert
546e148b24 Further performance improvements, and corrections in get_token_string
o An (-'ve valued, typically -1) EOF must never be allowed in
  token_string, as it be converted to 255 -- a legitimate value.
o Comparing against a specific eof() (-1, typically) is more costly than
  detecting +'ve/-'ve.  Since EOF is the only non-positive value allowed
  we can use the simpler test.
o Removed unnecessary test for token_string size, as it is already
  tested in the method, and must never occur in correct code; used an
  assert instead.
2017-10-05 16:16:41 -07:00
Perry Kundert
8665e25942 Rename get_string to move_string to imply side-effect 2017-10-05 16:16:41 -07:00
Perry Kundert
e0d890cc23 Corrected unnnecessary const restriction on returned std::string 2017-10-05 16:16:41 -07:00
Perry Kundert
97a388802d Improve performance by constructing yytext as a std::string
o Return its contents when necessary.  In many cases, this avoids
  construction of multiple copies of the yytext token.  Exceeds
  performance of current develop branch.
2017-10-05 16:15:46 -07:00
Perry Kundert
7c523338c5 Remove unnnecessary NUL termination of yytext (as it may contain NULs) 2017-10-05 16:01:41 -07:00
Perry Kundert
14ca1f6f09 Restore istream performance #764
o Use std::streambuf I/O instead of std::istream; does not maintain
  (unused) istream flags.
o Further simplify get/unget handling.
o Restore original handling of NUL in input stream; ignored during
  token_string escaping.
2017-10-05 16:01:41 -07:00
Perry Kundert
12efeadc2e Further simplify istream handling; use native unget 2017-10-05 16:01:41 -07:00
Perry Kundert
f585fe4eec Test to confirm parsing of multiple JSON records in a istream #367 2017-10-05 16:01:41 -07:00
Perry Kundert
90adf6ec20 Simplify get_token_string, unnecessary buffering, handle Byte Order Mark 2017-10-05 16:01:41 -07:00
Niels Lohmann
0c0851dbea 📝 comment how to integrate tsl::ordered_map (#546) 2017-10-05 20:36:18 +02:00
Niels Lohmann
bab4a15748 📝 comment how to integrate fifo_map (#485) 2017-10-05 20:33:27 +02:00
Niels Lohmann
60439aff05 📝 different cmake call 2017-10-05 19:43:59 +02:00
Niels Lohmann
73d1b55aba 🔧 executing tests in parallel 2017-10-05 19:43:39 +02:00
Niels Lohmann
615366447a 🔧 removing -Weffc++ warnings 2017-10-05 19:43:19 +02:00
Niels Lohmann
73727c989c Merge branch 'feature/coveralls' into develop 2017-10-05 19:08:28 +02:00
Niels Lohmann
75f4678b96 🔨 added filter script for branch coverage 2017-10-05 19:08:15 +02:00
Niels Lohmann
c204ac82e0 🔨 adjusted Coverity script to work without Makefile 2017-10-05 07:13:59 +02:00
Niels Lohmann
7b82e4b4c8 🔨 added Makefile target to calculate lcov coverage 2017-10-05 00:17:09 +02:00
Niels Lohmann
1b3df3a63f 🔨 trying to use Coveralls with CMake #698 2017-10-04 22:18:21 +02:00
Niels Lohmann
99ee4c1eaf 🔨 cleaned up Makefiles and docs #698 2017-10-04 19:27:35 +02:00
Niels Lohmann
5cb6d7187d 🚨 fixing last warning in #755 2017-10-04 17:28:35 +02:00
Niels Lohmann
4e81c1db47 Merge pull request #765 from nlohmann/feature/issue698
using more CMake
2017-10-04 10:39:56 +02:00
Niels Lohmann
e2045eae53 🏁 and another try 2017-10-03 18:47:08 +02:00
Niels Lohmann
a85bc358f7 🏁 another try 2017-10-03 18:21:40 +02:00
Niels Lohmann
3457e7bc5b 🏁 try to get MSVC 2017 running again 2017-10-03 17:57:40 +02:00
Niels Lohmann
54bd1b5124 Merge branch 'develop' into feature/issue698 2017-10-03 17:23:05 +02:00
Niels Lohmann
7435d54e97 🔨 clean up 2017-10-02 23:06:41 +02:00
Niels Lohmann
4912231450 Merge branch 'develop' into feature/issue698 2017-10-02 18:25:25 +02:00
Niels Lohmann
b91805e1f0 🚨 removing a compiler warning #755 2017-10-02 18:11:36 +02:00
Niels Lohmann
f89f8b2d0b Merge branch 'develop' into feature/issue698 2017-10-02 17:47:53 +02:00
Niels Lohmann
8be303d4fb 🏁 fixing a min() call for MSVC #762 2017-10-02 13:54:14 +02:00
Niels Lohmann
1df836ce40 removed call to std::signbit #761 2017-10-01 15:48:29 +02:00
Niels Lohmann
8af49d4be5 🚨 removing compiler warnings #755 2017-09-30 11:00:26 +02:00
Niels Lohmann
1a66527dca 📝 fixed documentation #745 2017-09-30 10:18:18 +02:00
Niels Lohmann
b05ea3de55 Merge pull request #753 from gregmarr/patch-1
Add info for the vcpkg package.
2017-09-26 22:36:36 +02:00
gregmarr
ec60ff3451 Add info for the vcpkg package. 2017-09-26 08:39:38 -07:00
Niels Lohmann
647711fad1 improved test coverage 2017-09-14 17:31:28 +02:00
Niels Lohmann
737816d0cd 👷 another try with Travis 2017-09-14 17:31:14 +02:00
Niels Lohmann
e75adc21a5 Merge branch 'develop' into feature/issue698 2017-09-13 18:57:25 +02:00
Niels Lohmann
b90529c36d improved test coverage 2017-09-13 18:56:54 +02:00
Niels Lohmann
82c93680d1 Merge branch 'develop' into feature/issue698 2017-09-10 22:38:23 +02:00
Niels Lohmann
e2e0ecd867 improved test coverage 2017-09-10 22:38:04 +02:00
Niels Lohmann
248db1e423 Merge branch 'develop' into feature/issue698 2017-09-10 11:42:57 +02:00
Niels Lohmann
7410763731 improved test coverage 2017-09-10 11:42:43 +02:00
Niels Lohmann
cafc2d057a Merge branch 'develop' into feature/issue698 2017-09-10 10:22:10 +02:00
Niels Lohmann
da97cf7895 improved test coverage 2017-09-10 10:21:53 +02:00
Niels Lohmann
295d65ada7 Merge branch 'develop' into feature/issue698 2017-09-10 01:13:43 +02:00
Niels Lohmann
fcba9ec537 🔨 clean up 2017-09-10 01:12:03 +02:00
Niels Lohmann
41994ba028 Merge branch 'develop' into feature/issue698 2017-09-09 16:53:37 +02:00
Niels Lohmann
b21d7810fa improved test coverage 2017-09-09 16:53:27 +02:00
Niels Lohmann
c1d6478584 Merge branch 'develop' into feature/issue698 2017-09-09 13:07:40 +02:00
Niels Lohmann
9ae6796a38 improved test coverage 2017-09-09 13:07:10 +02:00
Niels Lohmann
31ce7e1e59 Merge branch 'develop' into feature/issue698 2017-09-09 11:05:20 +02:00
Niels Lohmann
fd250ae2b1 improved test coverage 2017-09-09 11:04:58 +02:00
Niels Lohmann
5c08b84dec back to previous MSVC 2017 2017-09-06 18:26:52 +02:00
Niels Lohmann
da14286abb 👷 try to use MSVC 2017 again 2017-09-06 18:13:35 +02:00
Niels Lohmann
c607b5c2ac 📝 improved documentation 2017-09-06 17:14:06 +02:00
Niels Lohmann
91e0032853 📝 improved documentation 2017-08-29 23:46:26 +02:00
Niels Lohmann
b41b13047c 👷 removed unneccessary test 2017-08-27 11:30:36 +02:00
Niels Lohmann
15e757c42b 🔨 trying to fix memory issue with valarray 2017-08-27 10:41:39 +02:00
Niels Lohmann
0e94ba8857 👷 using the same compilers 2017-08-26 08:56:34 +02:00
Niels Lohmann
4f5c345817 👷 run sanitizer another time to check if it works 2017-08-26 08:20:37 +02:00
Niels Lohmann
8608f42187 👷 trying to use libstdc++
https://github.com/travis-ci/apt-source-whitelist/issues/372#issuecomment-320547215
2017-08-25 22:49:18 +02:00
Niels Lohmann
5e7acbf05e 👷 adjusted flags for Clang sanitizer
we are overrding the CXXFLAGS provided by travis in order to use gcc's libstdc++
2017-08-25 22:34:00 +02:00
Niels Lohmann
268f5a3d0a 👷 added option to switch off exceptions 2017-08-25 21:29:27 +02:00
Niels Lohmann
839681ff9f 👷 using Ninja 2017-08-25 21:01:07 +02:00
Niels Lohmann
3dcd360139 👷 adding status messages 2017-08-25 20:19:58 +02:00
Niels Lohmann
05b97c473a 👷 added flags for Valgrind and Clang sanitizer 2017-08-25 20:12:21 +02:00
Niels Lohmann
c87b080cc5 👷 new cmake file for test cases 2017-08-25 18:06:22 +02:00
Niels Lohmann
5b71bf09a1 Merge pull request #708 from theodelrieu/fix/from_json_tuple_pair
fix from_json implementation for pair/tuple
2017-08-24 12:40:16 +02:00
Théo DELRIEU
bb1b4c934e fix from_json implementation for pair/tuple
Introduced by 6e4910d5c5

Fixes #707
2017-08-23 10:05:43 +02:00
Niels Lohmann
e45eaf6e30 Revert "👷 using libc++ with Clang"
This reverts commit 41b2c69bdb.
2017-08-23 08:39:19 +02:00
Niels Lohmann
0b5e8f859b 🔨 cleanup
Fixed some warning in Clion.
2017-08-23 00:42:15 +02:00
Niels Lohmann
9fd031b6f4 🐛 re-added support for std::valarray #702 2017-08-22 23:28:23 +02:00
Niels Lohmann
41b2c69bdb 👷 using libc++ with Clang 2017-08-22 22:04:38 +02:00
Niels Lohmann
cd53790993 👷 using Clang 5.0 2017-08-21 20:03:24 +02:00
Niels Lohmann
e569b9736b 👷 trying to fix build error
See http://help.appveyor.com/discussions/problems/7450-build-error-on-vs-2017-image-suddenly.
2017-08-21 17:31:14 +02:00
Niels Lohmann
ba5d37ba4b 👷 added Clang 5.0 (see https://docs.travis-ci.com/user/languages/cpp/#clang) 2017-08-21 17:27:35 +02:00
Niels Lohmann
64ef100ebf Revert "💥 changed iterators to andom_access_iterator #593"
This reverts commit c77a0be5f3.
2017-08-20 20:44:44 +02:00
Niels Lohmann
8acaf5bdbc 🚨 fixing two compiler warnings 2017-08-20 19:31:07 +02:00
Niels Lohmann
c77a0be5f3 💥 changed iterators to andom_access_iterator #593
This commit changes the iterator category to andom_access_iterator and allows offsets and subscript operators for object iterators.
2017-08-16 21:35:22 +02:00
Niels Lohmann
aba8b58492 🔨 approach to un-break the changes for #462 2017-08-16 20:11:05 +02:00
Niels Lohmann
22b59693f1 💥 CBOR/MessagePack input must end with EOF #505
The CBOR and MessagePack parsers now expect the input to be read until the end. Unless the new parameter "strict" is set to false (it is true by default), an exception is raised if the parser ends prematurely. This is a breaking change as the parsers ignored unread input so far.

Furthermore, the offset/startIndex paramter introduced in #462 was removed as this behavior can be mimicked with an iterator range. For instance, instead of calling "from_cbor(vec, 5);", you can write "from_cbor({vec.begin()+5, vec.end()});".
2017-08-16 14:48:23 +02:00
Niels Lohmann
1f31a5b808 ⬆️ Catch v1.9.7 2017-08-16 10:23:39 +02:00
Niels Lohmann
f5a53de845 👷 running sanitizer job in parallel 2017-08-16 09:21:20 +02:00
Niels Lohmann
21726d8d8f 👷 run sanitizer after tests 2017-08-16 08:11:02 +02:00
Niels Lohmann
df572aca79 👷 set sanitizer to clang4 2017-08-16 07:42:57 +02:00
Niels Lohmann
4391bf5615 Merge branch 'feature/update' into develop 2017-08-16 07:39:30 +02:00
Niels Lohmann
1e360bb32b 🔨 preparation for #505
Added a parameter to control whether parsing CBOR and MessagePack must completely consume the input.
2017-08-16 07:39:11 +02:00
Niels Lohmann
002410410f Merge branch 'develop' into feature/update 2017-08-15 21:42:58 +02:00
Niels Lohmann
72afe53fa0 📝 updated documentation for update() function #661 2017-08-15 21:42:50 +02:00
Niels Lohmann
76123fab76 📝 added note wrt. #667 2017-08-15 20:49:18 +02:00
Niels Lohmann
fdff42bc3d 👷 forgot to install Cmake on OSX 2017-08-15 20:30:01 +02:00
Niels Lohmann
039e2f03bc Merge branch 'develop' into feature/update 2017-08-15 19:54:22 +02:00
Niels Lohmann
7f4722a75d Merge branch 'feature/travis_clang' into develop 2017-08-15 19:52:47 +02:00
Niels Lohmann
08805f7f14 🔨 cleanup 2017-08-13 20:57:27 +02:00
Niels Lohmann
988077e046 Merge branch 'develop' into feature/travis_clang 2017-08-13 20:27:27 +02:00
Niels Lohmann
7d19aed567 🔨 cleanup 2017-08-13 19:02:58 +02:00
Niels Lohmann
569c00eb18 👷 changed c++17 to c++1z 2017-08-10 23:41:12 +02:00
Niels Lohmann
6151b056eb 🔨 cleanup 2017-08-10 23:40:30 +02:00
Niels Lohmann
bade3b3e6c 👷 cleanup 2017-08-10 21:17:40 +02:00
Niels Lohmann
76b195d7d1 👷 fix for coverity + clang-5.0 2017-08-10 20:54:59 +02:00
Niels Lohmann
cd34358e7c 👷 removing clang from source 2017-08-10 20:37:23 +02:00
Niels Lohmann
5eb9f5fd4f 👷 clang-3.4 2017-08-10 20:31:59 +02:00
Niels Lohmann
f49356e703 👷 clang-3.4 2017-08-10 20:26:49 +02:00
Niels Lohmann
e0f8eb1710 👷 clang-4.0 2017-08-10 20:21:41 +02:00
Niels Lohmann
6dc89e47fc 👷 clang-3.9 2017-08-10 20:16:35 +02:00
Niels Lohmann
8de710bbe7 👷 added source for gcc 2017-08-10 20:12:27 +02:00
Niels Lohmann
195d773bc5 👷 added gcc 2017-08-10 20:09:39 +02:00
Niels Lohmann
e7f2d2646a 👷 removed gcc 2017-08-10 20:06:47 +02:00
Niels Lohmann
6b20f6d1ef 👷 clang-3.8 2017-08-10 20:04:36 +02:00
Niels Lohmann
82cd8c8d02 👷 another try 2017-08-10 19:59:00 +02:00
Niels Lohmann
f256587c4f 👷 clang-3.4 2017-08-10 19:56:09 +02:00
Niels Lohmann
c06b5c5c10 👷 clang-3.5 2017-08-10 19:50:36 +02:00
Niels Lohmann
3283352db3 👷 using clang++ 2017-08-10 19:45:33 +02:00
Niels Lohmann
c20dd7522f 👷 another try 2017-08-10 19:40:09 +02:00
Niels Lohmann
94dfecd487 👷 removed g++ 2017-08-10 19:31:43 +02:00
Niels Lohmann
8963aae57d 👷 clang-3.6 2017-08-10 19:24:36 +02:00
Niels Lohmann
5aceb0e029 👷 clang-3.6 2017-08-10 19:23:55 +02:00
Niels Lohmann
e7a7e4f81f 👷 fixed compiler 2017-08-10 19:18:45 +02:00
Niels Lohmann
e333562633 👷 different source 2017-08-10 19:15:16 +02:00
Niels Lohmann
eb6de822bb 👷 clang-3.7 2017-08-10 19:12:04 +02:00
Niels Lohmann
c1642affaa 👷 clang-3.8 2017-08-10 19:03:35 +02:00
Niels Lohmann
a46afd4008 Merge pull request #679 from traits/patch-1
Digraph warning
2017-08-10 11:39:13 +02:00
traits
54c67dcfec Update json.hpp 2017-08-10 09:05:00 +02:00
Niels Lohmann
99ea12f304 📝 acknowledgements for #674, #678, #682, #685, and #686 2017-08-10 06:50:34 +02:00
Niels Lohmann
d26b3f1fe5 Merge pull request #686 from WebProdPP/patch-1
Update json.hpp
2017-08-10 06:44:59 +02:00
Niels Lohmann
345846b514 Merge pull request #685 from daixtrose/patch-1
Remove duplicate word
2017-08-09 15:32:33 +02:00
WebProdPP
c9509ccf97 Update json.hpp
mistake
2017-08-09 16:13:43 +03:00
Markus Werle
86b3d06a93 remove duplicate word
s/to to/to/
2017-08-09 11:56:48 +02:00
Niels Lohmann
6e5b895f87 Merge pull request #682 from kbthomp1/fix-intel-osx
To fix compilation issue for intel OSX compiler
2017-08-09 10:16:03 +02:00
Kyle Thompson
4b55f0ebd6 To fix compilation issue for intel OSX compiler
o To prevent the compilation issue on OSX with the intel compiler suite.  The
error was found with icpc version 15.0.3.187 where the "__clang_version__" was
not defined correctly, while "__clang__" was.
2017-08-08 18:43:03 -04:00
Niels Lohmann
c90bf5e0f1 👷 removed failing builders 2017-08-08 21:26:15 +02:00
Niels Lohmann
dd008545d1 Merge branch 'develop' of https://github.com/nlohmann/json into develop 2017-08-08 19:15:49 +02:00
Niels Lohmann
054b0250be 👷 trying to install g++ to make clang work 2017-08-08 19:14:22 +02:00
traits
ab44a50d98 Digraph warning
The original version can trigger a digraph-related warning in VS2015. Is this namespace construct a typo or something deliberate?
2017-08-07 14:23:48 +02:00
Niels Lohmann
b32a6b8c75 Merge pull request #678 from DmitryKuk/develop
massage -> message
2017-08-05 13:42:43 +02:00
DmitryKuk
19437c15de massage -> message 2017-08-05 10:43:08 +03:00
Niels Lohmann
e523312fa2 improved test coverage 2017-08-03 17:47:42 +02:00
Niels Lohmann
d2c3592908 added test cases for update #661 2017-08-02 22:44:58 +02:00
Niels Lohmann
d1e13d5128 🎉 first draft for #661 2017-08-02 22:12:41 +02:00
Niels Lohmann
0ea0d7d860 Merge pull request #674 from wincent/patch-1
Fix "not constraint" grammar in docs
2017-08-01 20:21:04 +02:00
Niels Lohmann
efdfd3aa5b replaced by-value call #673 2017-08-01 19:37:25 +02:00
Greg Hurrell
391303521a Fix "not constraint" grammar in docs 2017-08-01 08:56:28 -07:00
Niels Lohmann
76ecb2bd60 Merge pull request #671 from dan-42/develop
Add documentation for integration with CMake and hunter
2017-08-01 07:15:55 +02:00
dan-42
db0b9732d4 DOC: add sort mentioning about support in hunter 2017-07-31 23:20:37 +02:00
Niels Lohmann
e60002a1b3 🔨 fixed GCC warnings in #663
https://github.com/nlohmann/json/pull/663#issuecomment-318931884
2017-07-31 23:17:14 +02:00
dan-42
966989a3f5 CONFIG: pin cmake to enable only C++ 2017-07-31 09:49:26 +02:00
Niels Lohmann
850d856aae 🔨 cleanup after #663 2017-07-30 20:30:05 +02:00
Niels Lohmann
3d67ec40a6 Merge branch 'develop' of https://github.com/nlohmann/json into develop 2017-07-30 20:01:35 +02:00
Niels Lohmann
85c768084b 🔨 using emplace 2017-07-30 20:01:31 +02:00
Niels Lohmann
67fb517ccd Merge pull request #669 from dan-42/change_installed_cmake_include_path
REFACTOR: rewrite CMakeLists.txt for better inlcude and reuse
2017-07-30 20:01:03 +02:00
Niels Lohmann
80e95844f6 Merge pull request #663 from himikof/move-construction
Support moving from rvalues in std::initializer_list
2017-07-30 20:00:46 +02:00
Niels Lohmann
aad55219f8 Merge branch 'develop' into move-construction 2017-07-30 19:49:24 +02:00
Niels Lohmann
96dd4ffa19 🔨 simplified a call 2017-07-30 18:30:34 +02:00
Niels Lohmann
7737a29518 🔨 small parser performance improvements
- replaced list of pairs by flat list in next_byte_in_range
- implemented early exit in case of parse errors
- reused memory for object keys
- direct calls to embedded objects/arrays for insertions
2017-07-30 13:25:36 +02:00
dan-42
f434942371 REFACTOR: rewrite CMakeLists.txt for better inlcude and reuse
The rewrite uses more cmake build-in automatisms and build-in generates
variables to allow better generic reuse.
* cmake  files are installed to
``` <install_prefix>/lib/cmake/nlohmann_json/ ``` for best support on
most systems
* include path is set to ``` include ```  for usage as ``` #include
<nlohmann/json.hpp> ```
2017-07-29 11:59:09 +02:00
Niels Lohmann
c819a2d732 🔨 refactored some scanner internals 2017-07-28 19:18:50 +02:00
Niels Lohmann
5851daa576 binary formats can be stored in std::string, std::ofstreams or std::ostringstream #477 2017-07-28 00:21:55 +02:00
Niels Lohmann
c136b6f200 Merge pull request #666 from effolkronium/develop
enable_testing only if the JSON_BuildTests is ON
2017-07-27 20:48:56 +02:00
Niels Lohmann
7d51214045 implemented exception-free parser #458 #582
You can now pass a boolean "allow_exceptions" to the parse functions. If it is false, no exceptions are thrown in case of a parse error. Instead, parsing is stopped at the first error and a JSON value of type "discarded" (check with is_discarded()) is returned.
2017-07-27 20:33:11 +02:00
Ilya Polishchuk
a27dd3a6f6 enable_testing only if JSON_BuildTests is ON 2017-07-27 17:50:24 +03:00
Niels Lohmann
669ebf51bc 🔨 fixed an error in MSVC 2017-07-27 06:04:35 +02:00
Niels Lohmann
3d589fd032 🔨 fixed compilation error 2017-07-26 23:59:56 +02:00
Niels Lohmann
e6aa700360 🔨 cleanup 2017-07-26 23:44:55 +02:00
Nikita Ofitserov
93bb71232d Move from rvalues eagerly to work around MSVC problem
On MSVC compiler, temporaries that are constructed during a
list initialization, are sometimes destroyed even before calling
the initializing constructor, instead of at the end of the
containing full-expression. This is clearly non-conforming to
[class.temporary].
As the impact of this bug is silently producing incorrect
JSON values, move eagerly from rvalues to be safe.

See https://stackoverflow.com/questions/24586411
2017-07-25 12:17:32 +03:00
Nikita Ofitserov
897879bccb Make detail::json_ref do less work by deferring moves/copies 2017-07-24 12:29:06 +03:00
Nikita Ofitserov
0f4978e503 Fix an actually invalid test
C++ overload resolution/list initialization rules are hard.
2017-07-24 01:08:33 +03:00
Niels Lohmann
4414f94cd5 🔨 using input/output adapters for CBOR and MessagePack
- You can now pass a reference to a vector to the to_cbor and to_msgpack functions. The output will be written (appended) to the vector. #476

- You can now pass an output stream with uint8_t character type to the to_cbor and to_msgpack functions. #477

- You can now read from uint8_t */size in the to_cbor and to_msgpack functions. An input adapter will be created from this pair, so you need to use braces. #478
2017-07-23 23:02:24 +02:00
Nikita Ofitserov
f5cae64e52 Update tests while fixing possible UB
std::initializer_list does not own the temporaries created in
its initialization. Therefore, storing it in an independent
stack variable is unsafe.
2017-07-23 23:59:34 +03:00
Nikita Ofitserov
09cda57309 Support moving from rvalues in an std::initializer_list
This commit works around an issue in std::initializer_list design.
By using a detail::json_ref proxy with a mutable value inside,
rvalue-ness of an input to list initializer is remembered and
used later to move from the proxy instead of copying.
2017-07-23 23:57:17 +03:00
Nikita Ofitserov
cf3ca3b78c Optimize json construction from rvalue string_t/array_t/object_t 2017-07-23 23:50:59 +03:00
Nikita Ofitserov
7b3cbfff23 Add some tests for std::move from std::initializer_list 2017-07-23 23:47:15 +03:00
Niels Lohmann
9b1c058810 🔨 reorganized interfaces for parse/accept functions #623
We now rely on implicit conversions to an input_adapter object in the parse/accept functions.
2017-07-23 18:11:34 +02:00
Niels Lohmann
18e0430bfe 🔨 adding destroy function to discard values 2017-07-22 22:57:22 +02:00
Niels Lohmann
5b5f0090a1 🔨 trying to fix the sanitizer error
Travis found an error with Clang 3.8's sanitizers, see https://travis-ci.org/nlohmann/json/jobs/256366699. Unfortunately, I cannot reproduce this error with clang version 6.0.0 (trunk 308825) locally. However, this seems to be an issue, because so far, we did not reset a value after moving from it.
2017-07-22 16:41:42 +02:00
Niels Lohmann
d53ef95067 🔨 fixed some warnings 2017-07-22 15:33:31 +02:00
Niels Lohmann
c7a69ae03e started working on parser with provded result reference #418
Internally, the parser now writes its result into a JSON value provided as a reference. To be usable, the public interfaces need to be extended.
2017-07-22 15:18:38 +02:00
Niels Lohmann
f513c46749 🔨 further cleanup 2017-07-22 13:35:04 +02:00
Niels Lohmann
024fec8a9b 🔨 more cleanup using clang-tidy 2017-07-21 18:26:07 +02:00
Niels Lohmann
a09193e967 🔨 cleanup
- Replaced codepoint calculation by bit operations.
- Fixed several clang-tidy warnings.
2017-07-20 23:01:16 +02:00
Niels Lohmann
21d23982ca 🐛 fix for #656
A complete rewrite of the string escape function. It now provides codepoint-to-\uxxxx escaping. Invalid UTF-8 byte sequences are not escaped, but copied as-is. I haven’t spent much time optimizing the code - but the library now agrees with Python on every single Unicode character’s escaping (see file test/data/json_nlohmann_tests/all_unicode_ascii.json).

Other minor changes: replaced "size_t" by "std::size_t"
2017-07-17 07:53:02 +02:00
Niels Lohmann
8a9133c6b2 Merge pull request #652 from olegendo/develop
Rename BuildTests to JSON_BuildTests
2017-07-15 11:39:27 +02:00
Niels Lohmann
f1fabd1ba2 📄 added code of conduct
added Contributor Covenant Code of Conduct
2017-07-13 19:16:41 +02:00
Niels Lohmann
dad4916f9e Merge pull request #654 from ryanjmulder/develop
add ensure_ascii parameter to dump. #330
2017-07-12 07:58:45 +02:00
Ryan Mulder
486f3a2d16 restore necessary comman in documentation of dump 2017-07-11 14:18:02 -04:00
Ryan Mulder
40461c6c55 update comment on dump to not indicate that ensure_ascii is true by default 2017-07-11 13:59:07 -04:00
Ryan Mulder
71597be294 add ensure_ascii parameter to dump. #330 2017-07-11 13:48:08 -04:00
Oleg Endo
cd800522e4 Rename BuildTests to JSON_BuildTests
This avoids potential conflicts with other libraries when the library is
built from source and included in a bigger cmake build.
2017-07-11 22:57:49 +09:00
Niels Lohmann
7dee868a42 Merge pull request #643 from theodelrieu/refacto/split_basic_json
Refacto/split basic json
2017-07-09 23:12:35 +02:00
Théo DELRIEU
8585d35c92 move serializer outside of basic_json 2017-07-09 21:30:34 +02:00
Théo DELRIEU
acff23efb2 move binary_{reader,writer} outside of basic_json 2017-07-09 21:30:33 +02:00
Théo DELRIEU
bb752fd30c move json_reverse_iterator outside of basic_json 2017-07-09 21:30:33 +02:00
Théo DELRIEU
0ba98b6fe0 move internal_iterator/iter_impl/iteration_proxy outside of basic_json 2017-07-09 21:30:31 +02:00
Théo DELRIEU
00d6e27194 move primitive_iterator outside of basic_json 2017-07-09 21:22:16 +02:00
Théo DELRIEU
8e681d1e57 move lexer/parser outside of basic_json 2017-07-09 21:22:15 +02:00
Théo DELRIEU
15625ca4a7 move input adapters outside of basic_json 2017-07-09 21:21:12 +02:00
Théo DELRIEU
a332142194 move json_pointer outside of basic_json 2017-07-09 21:21:09 +02:00
Théo DELRIEU
fe086d7432 forward declare basic_json, add two macros
Those macros are used to reduce template argument boilerplate
2017-07-09 16:16:42 +02:00
Niels Lohmann
d3496347fc 👷 removing Clang 3.9 and 4.0
These versions are still not working properly: https://travis-ci.org/nlohmann/json/jobs/251675281
2017-07-09 12:19:14 +02:00
Niels Lohmann
504012a3db 📝 cleanup after #650
As <iostream> is not included in json.hpp any more, all code examples need to include <iostream> now.
2017-07-09 11:51:38 +02:00
Niels Lohmann
a0e0579374 Merge pull request #650 from olegendo/develop
Don't include <iostream>, use std::make_shared
2017-07-09 11:12:46 +02:00
Niels Lohmann
1b2fabe802 👷 adding two recent Clang versions
Maybe the simple approach is working now - at least it is in https://github.com/taocpp/PEGTL/blob/master/.travis.yml
2017-07-09 11:10:18 +02:00
Oleg Endo
e3bb156f82 fix typo 2017-07-09 15:20:28 +09:00
Oleg Endo
b753cb6ee7 use std::make_shared 2017-07-09 15:19:08 +09:00
Oleg Endo
f0ca96d462 include <iosfwd> instead of <iostream>
avoid bloat caused by <iostream> and std::cout and friends in apps where
iostream are not used.
2017-07-09 15:04:49 +09:00
Niels Lohmann
f1c543cb7b 👷 added GCC7 2017-07-08 22:59:19 +02:00
Niels Lohmann
7b05e1a687 🔨 improved performance in dump for deeply nested values 2017-07-08 22:59:04 +02:00
Niels Lohmann
f697fec522 📝 fixed documentation
There was an issue in the documentation example before. Unfortunately, I did not recreate the example outputs.
2017-07-08 22:16:45 +02:00
Niels Lohmann
87bccbc335 🔨 removed exception parse_error.111
It makes no sense to have this special exception. Instead of throwing when an input adapter is created, it is better to detect a parse error in later usage when an EOF is "read" unexpectedly.
2017-07-08 21:35:13 +02:00
Niels Lohmann
b38ecb5ca9 🔨 simplified binary write
Also added some comments and improved the documentation.
2017-07-08 20:31:13 +02:00
Niels Lohmann
b3ac36db93 🔨 excluded uncovered lines
These breaks were just added to silence a GCC warning - the GCC is right about warning as it cannot know that the expect function will not return in these two scenarios.
2017-07-08 18:34:08 +02:00
Niels Lohmann
e67df7c385 Merge branch 'feature/undo_171' into develop 2017-07-08 16:34:00 +02:00
Niels Lohmann
552622343e 📝 fixed typos 2017-07-08 16:18:27 +02:00
Niels Lohmann
566f6dcf30 🔥 removing usused functions #645
It seems these functions are not required any more. The code was added in commit 7e32457 to fix issue #171. There are still regression tests for #171, so when this commit passes the CI, the functions may be removed for good.
2017-07-08 13:33:13 +02:00
Niels Lohmann
6f12749ef6 📝 added version string for Xcode 9 2017-07-08 12:55:05 +02:00
Niels Lohmann
ac42333749 ⬆️ Catch v1.9.6 2017-07-08 12:11:45 +02:00
Niels Lohmann
015c88783e 🔨 fixed a pedantic warning 2017-07-08 12:03:12 +02:00
Niels Lohmann
df2feabb72 👷 added Xcode 9 beta
See https://twitter.com/travisci/status/880550780368855040
2017-07-08 11:57:09 +02:00
Niels Lohmann
63ecbfd36b re-added test
I have no idea why this test has been removed in the first place.
2017-07-07 23:38:04 +02:00
Niels Lohmann
07b78c993c 🐛 fixed undefined behavior bug
When an empty vector was passed to the parse function, an empty iterator range was used to construct an input iterator. Unfortunately, we then cannot use the start iterator to derive a pointer from.

Found with Xcode's undefined behavior sanitizer.
2017-07-07 23:37:16 +02:00
Niels Lohmann
8b123107c0 🔨 fixed some pedantic GCC warnings 2017-07-07 22:41:22 +02:00
Niels Lohmann
32065c8045 📝 fix for #639
Removed deprecated documentation of the comparison operator.
2017-07-07 21:16:33 +02:00
Niels Lohmann
e99b783def 🔨 simplifying scanner 2017-06-22 16:40:15 +02:00
Niels Lohmann
3dc5d95422 Merge branch 'develop' of https://github.com/nlohmann/json into develop 2017-06-21 18:55:28 +02:00
Niels Lohmann
b9a8425cc8 📝 cleanup after #629 and #630 2017-06-21 18:55:25 +02:00
Niels Lohmann
5ee651c387 Merge pull request #630 from Chocobo1/doc_neq
fix typo in operator__notequal example
2017-06-21 18:54:18 +02:00
Niels Lohmann
dad6051f37 Merge pull request #629 from Chocobo1/c4819
Fix MSVC warning C4819
2017-06-21 18:54:03 +02:00
Niels Lohmann
4b5433578a added progress output for Unicode tests
Travis aborts tests if they do not produce output for 10 minutes. This commit shall fix this.
2017-06-21 18:50:11 +02:00
Chocobo1
0395f3fdfb fix typo 2017-06-21 21:41:34 +08:00
Chocobo1
66ffac9e8a Fix MSVC warning C4819
Replace unicode whitespaces by ASCII whitespace 0x20
2017-06-21 16:17:10 +08:00
Niels Lohmann
6f3bebff5c 🔨 removed unexpect function 2017-06-21 07:26:50 +02:00
Niels Lohmann
2fd214c14b 🔨 adjusted pedantic flags 2017-06-20 23:05:37 +02:00
Niels Lohmann
e7695306f1 🔨 fixed a warning 2017-06-20 22:58:02 +02:00
Niels Lohmann
84f2e64a7c improved coverage 2017-06-20 22:35:31 +02:00
Niels Lohmann
9add24ff10 🔨 fixed a warning 2017-06-20 22:20:41 +02:00
Niels Lohmann
2f007ca092 improved coverage 2017-06-20 22:03:36 +02:00
Niels Lohmann
a5c27ede32 🔨 fixed a warning 2017-06-20 21:39:36 +02:00
Niels Lohmann
7c2a187258 improved test coverage 2017-06-20 21:09:26 +02:00
Niels Lohmann
e191dd833f 🔨 fixed warning about pointer members 2017-06-20 21:09:05 +02:00
Niels Lohmann
82b95ca664 🔨 simplified error handling in parser 2017-06-20 20:14:18 +02:00
Niels Lohmann
f2cdb3d594 ⬆️ Catch v1.9.5 2017-06-20 20:13:56 +02:00
Niels Lohmann
c2044205ef 📝 updated used compilers 2017-06-20 16:12:14 +02:00
Niels Lohmann
c2db4a118d 👷 update Travis to use Ubuntu Trusty 14.04 images 2017-06-19 21:51:24 +02:00
Niels Lohmann
70b7455a13 🔨 minor change 2017-06-19 21:50:36 +02:00
Niels Lohmann
4e6f548c0b Merge pull request #624 from theodelrieu/feature/pair_tuple_conversions
add pair/tuple conversions
2017-06-19 17:31:10 +02:00
Théo DELRIEU
08d781058c add from_json support for std::array 2017-06-19 12:03:38 +02:00
Théo DELRIEU
6e4910d5c5 add pair/tuple conversions 2017-06-19 10:16:37 +02:00
Niels Lohmann
112a6f4e53 🔨 replaced lexer's error message by const char* 2017-06-18 13:03:14 +02:00
Niels Lohmann
747f7d36d1 Merge branch 'develop' of https://github.com/nlohmann/json into develop 2017-06-18 00:00:36 +02:00
Niels Lohmann
b79a1a2678 📝 update after #626 2017-06-18 00:00:31 +02:00
Niels Lohmann
7b97100ffd Merge pull request #626 from koemeet/bugfix/vs2017-min-macro-fix
[BugFix] Add parentheses around std::min
2017-06-17 23:58:13 +02:00
Steffen Brem
04a1666ef2 Add parentheses around std::min so it bypasses the macro introduced by windows.h. 2017-06-17 22:01:18 +02:00
Niels Lohmann
1fbb82de89 🔨 using std::array to buffer input 2017-06-17 20:47:53 +02:00
Niels Lohmann
889006f006 regression test for #600 2017-06-17 13:37:04 +02:00
Niels Lohmann
e1ca484bc1 📝 added note about Conan #566 2017-06-17 11:20:09 +02:00
Niels Lohmann
b27d2adcbe accept functions to check if input is valid JSON #458 2017-06-16 19:23:55 +02:00
Niels Lohmann
d415293d41 Merge pull request #615 from theodelrieu/develop
remove std::pair support
2017-06-16 18:16:20 +02:00
Théo DELRIEU
c98364834f remove std::pair support 2017-06-13 11:11:29 +02:00
Niels Lohmann
fd4a0ecabc Merge branch 'feature/ifstream' into develop 2017-06-13 08:41:14 +02:00
Niels Lohmann
88dc7c11fa 🔨 fixed a warning 2017-06-12 19:58:44 +02:00
Niels Lohmann
afb959a083 🔨 removed nonportable code 2017-06-12 19:02:08 +02:00
Niels Lohmann
ac793e957f 🔨 trying to fix #367
Code from https://stackoverflow.com/a/44503794/266378 which is hopefully working with MSVC.
2017-06-12 18:58:58 +02:00
Niels Lohmann
5fa5c17bc6 ✏️ cleanup after #595 2017-06-10 18:29:16 +02:00
Niels Lohmann
6caad48e44 Merge pull request #595 from HenryRLee/iterator_arithmetic
Issue #593 Fix the arithmetic operators in the iterator and reverse iterator
2017-06-10 18:26:48 +02:00
HenryLee
e12c2ee6a8 Merge branch 'develop' into iterator_arithmetic 2017-06-09 20:47:42 +10:00
Niels Lohmann
52f934cbbf Merge pull request #609 from theodelrieu/develop
Add pair support, fix CompatibleObject conversions (fixes #600)
2017-06-07 16:38:23 +02:00
Théo DELRIEU
cea39dfaa8 fix #600
Instead of calling CompatibleObjectType iterator-range constructor,
first convert json::value_type to CompatibleObjectType::value_type
2017-06-07 10:24:59 +02:00
HenryLee
6661ec755b Merge branch 'develop' into iterator_arithmetic 2017-06-07 18:01:46 +10:00
HenryLee
0f065edff6 Revert a change in reverse iterator to pass the test cases 2017-06-07 18:01:01 +10:00
Niels Lohmann
92ef19696a ✏️ cleanup after #598 2017-06-06 20:48:11 +02:00
Niels Lohmann
bfdf0d1ce6 Merge pull request #598 from HenryRLee/issue550
#550 Fix iterator related compiling issues for Intel icc
2017-06-06 20:41:42 +02:00
Théo DELRIEU
85de93ba93 add std::pair<CompatibleStringType, T> support 2017-06-06 13:56:16 +02:00
HenryLee
c98169d0d5 Revert "Change iterator category to random access"
This reverts commit c4ab8f827e.
2017-06-05 21:59:17 +10:00
HenryLee
fb91aa81da Merge branch 'develop' into iterator_arithmetic 2017-06-05 20:24:21 +10:00
HenryLee
2ba554e442 Merge branch 'develop' into issue550 2017-06-05 20:24:08 +10:00
Niels Lohmann
1a9d76679a 🐛 fixed the issue with GCC7 #590 2017-06-04 18:40:32 +02:00
Niels Lohmann
d19c5ced4b 🐛 skipping BOM for iterators #602
I totally forgot about byte order marks in this scenario.
2017-06-02 12:38:32 +02:00
Niels Lohmann
c043ba6978 🔥 removed failing test #529 2017-06-01 07:32:39 +02:00
HenryLee
f2e1643039 Add test cases for iterator to const iterator assignment 2017-05-31 00:50:40 +10:00
HenryLee
2d5f0c0549 Redefine the converting assignment in iterator 2017-05-31 00:50:14 +10:00
HenryLee
c09a4cbbd7 Add test cases for iterator to const iterator conversion 2017-05-31 00:31:16 +10:00
HenryLee
0a51fb22ed Fix indentation 2017-05-30 23:37:24 +10:00
HenryLee
881cd3f420 Remove the iter_impl<const basic_json> copy constructor and copy assignment 2017-05-30 20:57:22 +10:00
HenryLee
790e7ca9e9 Add struct keyword in front of internal_iterator 2017-05-30 20:27:05 +10:00
HenryLee
ce39330ff8 Add converting constructors for iterator 2017-05-30 20:23:25 +10:00
HenryLee
c4ab8f827e Change iterator category to random access 2017-05-30 19:44:55 +10:00
HenryLee
daea213b44 Use static cast in the implementation of the operators of reverse iterator 2017-05-29 23:56:21 +10:00
HenryLee
0c2ed00ebe Add missing test cases for n + it arithmetic in iterators 2017-05-29 22:39:27 +10:00
HenryLee
5b245dae06 Comment out the exception message check in operator[] of reverse iterator 2017-05-29 22:19:10 +10:00
HenryLee
e42db27d6d Fix the indentation from the latest commit 2017-05-29 20:02:58 +10:00
HenryLee
3aef1a582e Change the definition of the operator override of reverse iterator to using the result of the base class directly 2017-05-29 19:45:34 +10:00
HenryLee
a3bf0131c4 Fix some more reverse iterator arithmetic test codes 2017-05-29 19:43:45 +10:00
HenryLee
adc73d6d5f Fix the arithmetic mistakes in reverse iterator 2017-05-29 18:52:53 +10:00
HenryLee
ed62129f8e Override n + iterator operator in the iterator 2017-05-27 13:44:14 +10:00
Niels Lohmann
52adf3fd5b 🔨 fixed compilation 2017-05-22 22:59:57 +02:00
Niels Lohmann
9a576fe1d9 added test for #367 2017-05-22 22:49:39 +02:00
Niels Lohmann
c7bd01edf2 🔨 trying something #367 2017-05-22 17:06:46 +02:00
Niels Lohmann
9e507dfad5 tests and fix for #367
operator>> now works as expected.
2017-05-21 16:36:51 +02:00
Niels Lohmann
16b63d3197 🔨 working toward #367 2017-05-20 12:44:13 +02:00
Niels Lohmann
8a35fdd8f5 🔨 overworked accept() function
Fixed to make sure no token is "overlooked".
2017-05-20 12:24:13 +02:00
Niels Lohmann
9ddc69f3a9 🐛 adjusting fix for future versions #586 2017-05-20 10:49:06 +02:00
Niels Lohmann
99cb095e89 🐛 fix for #586
Also added a Travis builder with -std=c++1z
2017-05-20 10:34:49 +02:00
Niels Lohmann
0f4131d138 Merge pull request #583 from zhaohuaxishi/doxygen_error
fix doxygen error of basic_json::get()
2017-05-15 21:09:43 +02:00
Niels Lohmann
0c3ffe12cd reverting first/second experiment #350 2017-05-15 21:07:58 +02:00
郭荣飞
b8dff3bc16 remove the redundant @ref command 2017-05-14 07:59:07 +08:00
Niels Lohmann
723c875604 💬 replaced "backspace" with "backslash" #509 2017-05-13 19:56:38 +02:00
郭荣飞
dfa371c436 fix doxygen error of basic_json::get() 2017-05-13 23:13:04 +08:00
Niels Lohmann
9b764ee5d6 🏁 fix for #581 2017-05-13 12:27:37 +02:00
Niels Lohmann
978255da8c 📝 updated contribution guidelines 2017-05-13 11:57:15 +02:00
Niels Lohmann
8b88e1b266 Merge pull request #579 from Type1J/develop_feature_first_second
Fixing assignement for iterator wrapper second, and adding unit test
2017-05-13 11:37:57 +02:00
Jay Sistar
b78457b792 Making comparison operators const. 2017-05-11 13:22:47 -04:00
Jay Sistar
00d841bfda Adding equal and not equal operators to proxys. 2017-05-11 14:51:06 +00:00
Jay Sistar
d6c78dacd8 Fixing assignement for iterator wrapper second, and adding unit test 2017-05-10 17:53:27 +00:00
Niels Lohmann
5beea35443 Merge pull request #578 from Type1J/develop_feature_first_second
Adding first and second properties to iteration_proxy_internal
2017-05-10 17:25:54 +02:00
Niels Lohmann
15ef9b8a35 Merge pull request #576 from Type1J/develop
Adding support for Meson.
2017-05-10 16:32:14 +02:00
Jay Sistar
6a656ed375 Adding first and second properties to iteration_proxy_internal 2017-05-10 13:20:52 +00:00
Niels Lohmann
2afbd33472 🔨 working on #367
Test cases succeed as expected, but the example in #367 is not fully
realized yet.
2017-05-10 12:06:24 +02:00
Jay Sistar
87744fd594 Missed one. 2017-05-09 02:04:02 +00:00
Jay Sistar
0719287e44 Reducing chatter about Meson. 2017-05-09 02:01:55 +00:00
Jay Sistar
31fe2f5825 Adding support for Meson. 2017-05-08 13:35:00 +00:00
Niels Lohmann
962da00171 implemented an indentation character #520
An optional parameter for dump() allows to set the character to use for
indentation (default: space). In case a JSON value is serialized to an
output stream, its fill character is used (and can be set with
std::setfill).
2017-05-07 19:27:40 +02:00
Niels Lohmann
fba1bcdd0b 🐛 fixing #575
I forgot to consider the offset.
2017-05-07 13:41:48 +02:00
Niels Lohmann
56ac7908f1 Merge branch 'feature/manual_lexer' into develop 2017-05-05 18:27:56 +02:00
Niels Lohmann
dbcb032f22 Merge branch 'develop' into feature/manual_lexer 2017-05-05 16:48:47 +02:00
Niels Lohmann
ecf895f2d1 📝 mentioned value function on main doc page #570 2017-05-05 16:42:22 +02:00
Niels Lohmann
19d2dec8b6 📝 added badge from isitmaintained.com 2017-05-03 22:49:21 +02:00
Niels Lohmann
8b9f51179e started working on #458
a simple acceptor function
2017-04-24 17:46:21 +02:00
Niels Lohmann
cfc2e8391c 🔨 removed too long running tests 2017-04-24 15:07:43 +02:00
Niels Lohmann
6d2c0a7928 added more Unicode test cases 2017-04-23 22:54:21 +02:00
Niels Lohmann
c42273d2a0 📝 fixed documentation #565
The documentation mismatched the actual code.
2017-04-23 21:46:30 +02:00
Niels Lohmann
2df8f12c09 🏁 another fix for MSVC #464
needed for VS2015.3 with /std:c++latest
2017-04-23 20:51:29 +02:00
Niels Lohmann
734297ff45 🔨 cleanup 2017-04-23 20:32:05 +02:00
Niels Lohmann
01e05d89e9 🔨 fixed a compiler warning
Default arguments are forbidden in lambdas.
2017-04-23 18:40:17 +02:00
Niels Lohmann
b686cc6ad9 🔨 removed #ifdefs 2017-04-23 18:34:14 +02:00
Niels Lohmann
5febd04a26 🐛 fixed test suite 2017-04-23 18:22:35 +02:00
Niels Lohmann
4aedae400e added exhaustive UTF-8 tests
Creates all well-formed sequences of bytes up to length 4. Furthermore,
creates ill-formed sequences by removing required trailing bytes or
changing bytes. As the tests can take a lot of time, preprocessor
symbols are introduced.
2017-04-23 15:12:50 +02:00
Niels Lohmann
e24df7eca9 📝 improved documentation 2017-04-23 15:10:40 +02:00
Niels Lohmann
2a21146160 Merge branch 'develop' into feature/manual_lexer 2017-04-22 11:35:58 +02:00
Niels Lohmann
4b316ec528 Merge branch 'feature/insert' into develop 2017-04-22 09:58:37 +02:00
Niels Lohmann
9b32f72584 📝 fixed examples for Wandbox
As I learned in https://github.com/melpon/wandbox/issues/209, this
library is already installed at Wandbox, so we need to adjust the
examples to use `#include "json.hpp"` insteas of `#include <json.hpp>`.
2017-04-21 22:07:07 +02:00
Niels Lohmann
db9bf953f3 🔨 improved diagnostic output 2017-04-15 10:40:10 +02:00
Niels Lohmann
717106eced 🔨 templated output_adapter and used in class serializer 2017-04-14 19:49:05 +02:00
Niels Lohmann
aea47422a2 📝 updated links and output 2017-04-14 18:13:01 +02:00
Niels Lohmann
6b6e554067 🐛 added missing header
std::setw needs the iomanip header (at least with GCC).
2017-04-14 17:37:28 +02:00
Niels Lohmann
951d0920fc 🐛 fixed README example
The example with the size() operator is bad: using operator[] already
changes the size of the object. The fix makes it clearer.
2017-04-14 17:36:45 +02:00
Niels Lohmann
e2f6cf7f46 🔥 removed .test files
These files were never meant to be versioned.
2017-04-14 17:35:31 +02:00
Niels Lohmann
2d2b98a50a Merge branch 'develop' into feature/manual_lexer 2017-04-12 18:07:25 +02:00
Niels Lohmann
d4469233ac Merge branch 'develop' into feature/insert 2017-04-12 18:01:06 +02:00
Niels Lohmann
42b4cdd4d0 👷 Travis is very picky 2017-04-11 22:13:26 +02:00
Niels Lohmann
ef55626296 👷 added Clang 3.9-5.0
Taken from
https://github.com/travis-ci/docs-travis-ci-com/pull/746/files.
2017-04-11 20:37:38 +02:00
Niels Lohmann
5bea6f383a ✏️ fixed a typo 2017-04-11 18:57:53 +02:00
Niels Lohmann
4c161161f0 Merge branch 'feature/vs2017' into develop 2017-04-10 19:51:58 +02:00
Niels Lohmann
d7e57e3b73 🔨 added an output adapter for the binary writer 2017-04-09 22:13:26 +02:00
Niels Lohmann
f3e43d7c6f 🔨 some cleanup 2017-04-09 21:14:51 +02:00
Niels Lohmann
186a9fd44d 🔨 simplified interface for parser, lexer, and binary_reader
These classes are now constructed with an interface adapter. This moves
complexity from various places into the interface adapter class, or to
some factories which now implement the different flavors of input.

Furthermore, input adapters are kept in std::shared_ptr to avoid the
need of manual deletion.
2017-04-09 19:28:15 +02:00
Niels Lohmann
e48114bbd6 🔨 check for value of _HAS_CXX17 2017-04-09 14:02:04 +02:00
Niels Lohmann
628be157a2 🐛 added fix for #464 2017-04-09 13:52:04 +02:00
Niels Lohmann
c40c8ac92e 👷 excluding MSVC 2015 with "/permissive- /std:c++latest /utf-8" 2017-04-09 12:00:30 +02:00
Niels Lohmann
a9f4094580 👷 another try 2017-04-09 11:47:31 +02:00
Niels Lohmann
180d249f6c 👷 another try 2017-04-09 11:38:42 +02:00
Niels Lohmann
d3d87674c8 👷 fixed AppVeyor syntax 2017-04-09 11:00:39 +02:00
Niels Lohmann
9d9c5216d7 👷 additional flags for MSVC #464
To test a fix for issue #464 (not yet implemented), we first need to
have  an MSVC build with “/permissive- /std:c++latest /utf-8”.
2017-04-09 10:59:45 +02:00
Niels Lohmann
6f99d5b2e9 🔨 fixed test case
One test case for CBOR and MessagePack assumed little endianess.
2017-04-08 23:39:17 +02:00
Niels Lohmann
d4e49873b7 👷 experimenting with configurations 2017-04-08 21:56:42 +02:00
Niels Lohmann
97a25de938 proposal for #428
This implementation forwards the iterators to std::map::insert.
2017-04-07 18:29:09 +02:00
Niels Lohmann
d62d48fc48 🔀 merge branch 'develop' into feature/manual_lexer 2017-04-07 17:19:52 +02:00
Niels Lohmann
90273e930c 🐛 fix for #512
We totally forgot to implement the comparison operators other than ==
and != for scalar types. Consequently, comparing a JSON value with a
scalar type led to compile errors.
2017-04-07 15:44:41 +02:00
Niels Lohmann
ff72f38863 🔨 fixed another warning
Do not store eof() in a char buffer…
2017-04-06 19:54:08 +02:00
Niels Lohmann
b992acc2e7 🔨 fixed a compiler warning 2017-04-05 20:39:27 +02:00
Niels Lohmann
08fdfcca9a 🔨 implemented a binary writer 2017-04-04 23:17:43 +02:00
Niels Lohmann
c28bf823bc 🔨 added endianess check 2017-04-04 17:30:43 +02:00
Niels Lohmann
b15fc13dd1 🔨 implemented MessagePack in binary_reader 2017-04-04 16:59:19 +02:00
Niels Lohmann
3a34f2d82c Merge branch 'develop' into feature/manual_lexer 2017-04-04 15:55:40 +02:00
Niels Lohmann
782570d46f 🔨 cleanup 2017-04-03 22:58:46 +02:00
Niels Lohmann
4f6b63e492 Merge pull request #545 from theodelrieu/feature/enum_class_support
add enum class default conversions
2017-04-03 22:13:59 +02:00
Niels Lohmann
ea667db446 🔨 fixed compilation errors
TIL about C++:

executing m[key()]=val(); for a std::map executes

First key() then val() with Clang

First val() then key() with GCC

#wat
2017-04-03 21:53:23 +02:00
Niels Lohmann
89efe627fe 🔨 a lot of restructuring
- removed uncached input stream adapter; it was too slow anyway
- implemented a class binary_read which parses CBOR based on input
adapters
- in the CBOR parser, numbers are created via memcpy to avoid undefined
behavior
2017-04-02 18:46:21 +02:00
Théo DELRIEU
af9b21151c add enum class default conversions 2017-04-02 13:10:15 +02:00
Niels Lohmann
3a5cf9bd0a 🔨 improved code coverage 2017-04-01 08:34:58 +02:00
Niels Lohmann
c32d2e5b3c 🔨 removed unget() function 2017-04-01 00:36:05 +02:00
Niels Lohmann
8d393b5eff Merge branch 'develop' into feature/manual_lexer 2017-03-31 23:58:45 +02:00
Niels Lohmann
3fa0610856 🔨 added minibench to ignore list 2017-03-31 23:57:24 +02:00
Niels Lohmann
50ee0a62f5 🔨 replaced lookup-tables by switches 2017-03-31 23:24:33 +02:00
Niels Lohmann
4c821c9e9c 🔨 moved buffer size to interface 2017-03-31 17:11:51 +02:00
Niels Lohmann
d07596a0ea 📝 mentioned #540 and fixed #538 2017-03-30 17:39:02 +02:00
Niels Lohmann
7881783745 Merge pull request #540 from tinloaf/diagnostics
Properly pop diagnostics
2017-03-30 17:25:29 +02:00
Lukas Barth
0b1b6307a5 Also change the re2c file 2017-03-30 16:14:02 +02:00
Lukas Barth
40aff4182f Pop for every push 2017-03-30 16:10:03 +02:00
Niels Lohmann
60057a4728 🔨 fixed bugs introduced by merging from develop 2017-03-29 07:54:26 +02:00
Niels Lohmann
a690a9f2d2 Merge branch 'develop' into feature/manual_lexer 2017-03-29 00:57:09 +02:00
Niels Lohmann
c2e80a72d7 🔨 deprecated j << istream / j >> ostream functions #367
The implementation is non-standard. Deprecation allows a simpler API in
the future without removing any features.
2017-03-29 00:39:47 +02:00
Niels Lohmann
9578c0f700 Merge branch 'develop' into feature/manual_lexer 2017-03-28 23:47:17 +02:00
Niels Lohmann
b4dbebffcd added regression test for #464 2017-03-28 23:28:54 +02:00
Niels Lohmann
62dfdf3f5d 📝 addressed #514
NaN values never compare equal to themselves or to other NaN values.
2017-03-28 23:24:59 +02:00
Niels Lohmann
5d586b0192 🔨 cleanup 2017-03-28 23:20:45 +02:00
Niels Lohmann
19d119e18c 🔨 fixed a warning in MSVC 2017-03-28 22:10:24 +02:00
Niels Lohmann
6b12e40478 🏁 removed __builtin_expect for MSVC 2017-03-28 21:55:26 +02:00
Niels Lohmann
d025b6aaf7 Merge branch 'develop' into feature/manual_lexer 2017-03-28 21:39:36 +02:00
Niels Lohmann
19cd206d99 📝 documented Xcode 8.3 2017-03-28 21:39:16 +02:00
Niels Lohmann
a0aa6ad2b2 👷 added Xcode 8.3
https://blog.travis-ci.com/2017-03-28-xcode-83-ga-is-here
2017-03-28 20:42:12 +02:00
Niels Lohmann
d37ca2eba8 🔨 fixed test case 2017-03-28 20:29:27 +02:00
Niels Lohmann
50e251f5f6 🔨 adjusted test case to new signature of token_type_name() 2017-03-28 20:17:00 +02:00
Niels Lohmann
6a6fbea62c 🔨 some cleanup 2017-03-28 20:08:08 +02:00
Niels Lohmann
1e495945f1 🔨 fixed buffer overflow 2017-03-28 18:06:43 +02:00
Niels Lohmann
bbb6bd9de5 🔨 fixing last failing test cases 2017-03-28 17:00:03 +02:00
Niels Lohmann
b0c47abd88 🔨 rewrote string parser to cope with UTF-8 2017-03-27 22:58:44 +02:00
Niels Lohmann
f75e195db3 🔨 added code for user-defined number types 2017-03-26 18:45:04 +02:00
Niels Lohmann
3425527970 🔨 added code for locale-independent number parsing 2017-03-26 18:12:58 +02:00
Niels Lohmann
06e2a291b1 🔨 fixed number parsing 2017-03-26 17:26:41 +02:00
Niels Lohmann
3b069b4b4c 🔨 adjusted more expected exceptions 2017-03-26 16:19:07 +02:00
Niels Lohmann
99e0d8b339 🔨 fixed \uxxxx parsing 2017-03-26 15:29:08 +02:00
Niels Lohmann
f47cf152a8 Merge branch 'develop' into feature/manual_lexer 2017-03-26 13:14:14 +02:00
Niels Lohmann
d4d51460ab Merge branch 'feature/noexcept_exceptions' into develop 2017-03-26 12:54:22 +02:00
Niels Lohmann
3336194306 🔨 reverted changes that led to Travis failures 2017-03-26 12:23:10 +02:00
Niels Lohmann
53b501a785 🔨 cleanup 2017-03-25 23:31:03 +01:00
Niels Lohmann
cf7786887c 🔨 fixed check for is_nothrow_copy_constructible
We now only demand our exceptions to be is_nothrow_copy_constructible
if std::runtime_exception is.
2017-03-25 17:35:57 +01:00
Niels Lohmann
c333679a96 🔨 small refactoring
The solution with a std::runtime_error member is more elegant. It
allows to have std::exception as base class again. However, I still
have no idea why GCC thinks the copy constructor may throw...
2017-03-25 17:25:39 +01:00
Niels Lohmann
cc36c65a89 🚑 made exceptions nothrow-copy-constructible #531
To have nothrow-copy-constructible exceptions, we inherit from
std::runtime_error which can cope with arbitrary-length error messages.
Intermediate strings are built with static functions and then passed to
the actual constructor.
2017-03-25 16:22:52 +01:00
Niels Lohmann
a58ed3cd17 💄 cleanup 2017-03-25 14:47:23 +01:00
Niels Lohmann
20bcf1015b 📝 cleanup after #536 2017-03-25 14:19:05 +01:00
Niels Lohmann
dc6e9b6188 Merge branch 'develop' into feature/manual_lexer 2017-03-25 14:12:58 +01:00
Niels Lohmann
0f9585685a Merge pull request #536 from vpetrigo/feature/VS17_appveyor_support
Add Visual Studio 17 image to appveyor build matrix
2017-03-25 14:12:30 +01:00
Vladimir Petrigo
8edb0cd15c Add VS17 image to appveyor matrix 2017-03-25 14:57:58 +03:00
Niels Lohmann
a93ec07c8c Merge branch 'develop' into feature/manual_lexer 2017-03-24 19:53:19 +01:00
Niels Lohmann
3d597dda5d 📝 update after #534 2017-03-24 19:51:11 +01:00
Niels Lohmann
40160f482a 🚧 manual lexer
This commit removed the re2c lexer and replaced it by a manual version.
Its integration is not yet complete: number parsing does not respect
locales or overflows. Furthermore, parsing does not need to end with
EOF. Therefore, a lot of test cases fail. The idea is to push this
branch forward so we can conduct performance comparisons. So far, a
nice side effect are better diagnosis messages in case of parse errors.
2017-03-24 19:49:02 +01:00
Niels Lohmann
bba688f53e Merge pull request #534 from TedLyngmo/utf8_encoding_enhancement
UTF8 encoding enhancement
2017-03-24 19:38:29 +01:00
Ted Lyngmo
cea2426731 UTF8 encoding enhancement 2017-03-24 14:56:48 +01:00
Niels Lohmann
8a872927e8 Merge pull request #530 from berkus/patch-1
Fix typo
2017-03-23 13:57:54 +01:00
Berkus Decker
b14629b0a6 Fix typo 2017-03-23 14:50:41 +02:00
Niels Lohmann
54db53c230 📝 update after #527 and #525 2017-03-22 08:10:31 +01:00
Niels Lohmann
d60851168e 🚨 fixed a compiler warning #527
The result of snprintf is later used in situations where a long may
overflow.
2017-03-22 08:10:02 +01:00
Niels Lohmann
67a06834b0 Merge pull request #526 from krzysztofwos/feature/exception-base-class
Make exception base class visible in basic_json
2017-03-22 07:50:34 +01:00
Krzysztof Woś
b9c3b8d688 Exit with an error if re2c is not available
Instead of overwriting src/json.hpp with an empty file
2017-03-20 16:00:58 +09:00
Krzysztof Woś
86579209c8 Make exception base class visible in basic_json 2017-03-20 16:00:58 +09:00
Niels Lohmann
31a6c0910e 🚑 fix for #519
Added catch branch for out_of_range exception that can occur if input
file contains a number overflow.
2017-03-17 22:18:48 +01:00
Niels Lohmann
f547679de5 🚑 fix for #516 and #518
We should compare the binary serializations rather than the JSON values
themselves. This fix was already done for CBOR and apparently forgotten
for MessagePack.
2017-03-17 22:18:05 +01:00
Niels Lohmann
2d474b5273 Merge pull request #510 from alex-weej/patch-1
🎨 Namespace `uint8_t` from the C++ stdlib
2017-03-17 06:47:11 +01:00
Alexander “weej” Jones
836f1c4189 🎨 Namespace uint8_t from the C++ stdlib 2017-03-16 18:24:41 +00:00
Niels Lohmann
cd43600e6f 💄 cleanup after #508 2017-03-16 19:02:05 +01:00
Niels Lohmann
773b33e016 Merge pull request #508 from theodelrieu/feature/c_array_conversion
add to_json method for C arrays
2017-03-16 19:00:58 +01:00
Niels Lohmann
c5711f3072 🚧 a lot of minor changes
- Removed unused headers.
- Added override where needed.
- Added description for parse_error.113 exception.
- Fixed some conversion warnings.
- Integrated cbor_expect_string function for CBOR maps.
- Added documentation on the supported CBOR/MessagePack features.
- Added test to check all initial bytes for CBOR input.
2017-03-16 18:39:33 +01:00
Niels Lohmann
483a58f625 🚨 added pedantic flags for GCC
With GCC 7, there are even more diagnostic flags.
2017-03-16 18:35:45 +01:00
Théo DELRIEU
dbebf8de47 add to_json method for C arrays
If the array can be converted to basic_json::string_t, the overload
in this commit is not chosen.
2017-03-16 15:20:39 +01:00
Niels Lohmann
100bf3ef2c Merge branch 'feature/getline' into develop 2017-03-14 23:08:19 +01:00
Niels Lohmann
710f8a2686 📝 improved documentation for to-CBOR and to-msgpack functions 2017-03-14 23:08:05 +01:00
Niels Lohmann
1de80e8af4 🔨 added user-defined exception #493
Replaced old std::invalid_argument exception by parse_error.111 to have
unified exceptions in case of input stream errors.
2017-03-14 21:31:36 +01:00
Niels Lohmann
63c2c62f19 🔨 changed call from "not good()" to "fail()" #493
Also merged develop into this feature branch.
2017-03-14 21:24:53 +01:00
Niels Lohmann
95474e420d 🏁 added parentheses around max/min calls #506
When <Windows.h> is included with MSVC, a macro NOMINMAX is defined
that yields compilation errors when max/min calls are encountered. This
can be fixed by un-defining NOMINMAX, or by placing parentheses around
all min/max calls. We chose the latter.
2017-03-14 21:11:20 +01:00
Niels Lohmann
b026591e9e 🚑 added special case to fuzzers to fix #504
Since #329, NaN and inf numbers do not yield an exception, but are
stored internally and are dumped as “null”. This commit adjusts the
fuzz testers to deal with this special case.
2017-03-14 21:05:38 +01:00
Niels Lohmann
bfe4788e32 🚑 fix for #500
Removed a check that already failed in MSVC.
2017-03-14 16:14:05 +01:00
Niels Lohmann
84072fbd6d 💄 fixed indentation 2017-03-14 16:07:28 +01:00
Niels Lohmann
b8b4362ca4 🔥 removed accidentally committed binaries 2017-03-13 19:04:19 +01:00
Niels Lohmann
c5cf32e34d 🔨 added user-defined exception 406 2017-03-12 20:59:33 +01:00
Niels Lohmann
43b8285249 🔀 merge branch 'feature/exceptions_3.0.0' into develop 2017-03-12 20:34:30 +01:00
Niels Lohmann
855cdcf05c 🔀 merge branch 'develop' into feature/exceptions_3.0.0 2017-03-12 20:22:30 +01:00
Niels Lohmann
8feaf8dc94 💥 implemented new handling of NaN and INF #70 #329 #388
- If an overflow occurs during parsing a number from a JSON text, an
exception (std::out_of_range for the moment, to be replaced by a
user-defined exception #244) is thrown so that the overflow is detected
early and roundtripping is guaranteed.
- NaN and INF floating-point values can be stored in a JSON value and
are not replaced by null. That is, the basic_json class behaves like
double in this regard (no exception occurs). However, NaN and INF are
serialized to “null”.
- Adjusted test cases appropriately.
2017-03-12 18:38:05 +01:00
Niels Lohmann
9355f05888 🔨 cleaned up array from_json methods #473
Removed some code that is not needed any more. Thus, streamlining the
array from_json methods.
2017-03-12 17:05:02 +01:00
Niels Lohmann
87eafd8d6a added regression tests for #473
These tests currently pass without any adjustments to the source code.
2017-03-12 15:20:17 +01:00
Niels Lohmann
80dcf22fc3 🔨 added a check function for MsgPack strings #497
To avoid the error described in #497, I added a function
msgpack_expect_string that is executed every time a string is expected
during the parsing of a map. In case the current byte does not belong
to a MsgPack string, an exception is thrown.
2017-03-12 14:39:20 +01:00
Niels Lohmann
28dbe4e651 📝 overworked documentation for the at functions
Added all possible exceptions to the examples of the at functions.
2017-03-12 13:49:39 +01:00
Niels Lohmann
89f6068385 Merge branch 'develop' into feature/exceptions_3.0.0 2017-03-12 11:51:24 +01:00
Niels Lohmann
dfa4e83cd8 Merge branch 'feature/no_exceptions' into develop 2017-03-12 11:49:52 +01:00
Niels Lohmann
e3e941ef2b 👷 fixed a syntax error 2017-03-12 11:19:27 +01:00
Niels Lohmann
01470f388b 👷 fixed no_exceptions test case
This test case relied on logics that have been replaced by CMake with
#461. This change enables compilation and execution of the test suite
without exceptions by adding an after_success task.
2017-03-12 11:04:26 +01:00
Niels Lohmann
4d7c29923e 🚑 fix for #486
Implemented std::less<value_t> to allow using value_t as std::map key
in MSVC.
2017-03-12 10:40:36 +01:00
Niels Lohmann
4b9c2f1287 🔨 added __EXCEPTIONS to the list 2017-03-11 20:16:13 +01:00
Niels Lohmann
4e49829851 🚑 fix for #493
Added a test to check if the input stream is good() before executing
getline on it. Also added two test cases that set the failbit and
badbit before calling file_line_buffer.
2017-03-11 19:26:12 +01:00
Niels Lohmann
122afbf128 🔨 added defined() check 2017-03-11 18:43:21 +01:00
Niels Lohmann
e3e6cbecc7 🏁 added check for _CPPUNWIND
MSVC does not define __cpp_exceptions, but seems to use _CPPUNWIND when
exception support is switched on, see
https://msdn.microsoft.com/en-us/library/b0084kay.aspx.
2017-03-11 17:59:24 +01:00
Niels Lohmann
65dfc97d40 🔨 using __cpp_exceptions to detect exception support #498
I used __EXCEPTIONS to detect whether exceptions are supported.
Apparently, this is a macro that is only used by libstdc++
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64276). It’s much cleaner
to use __cpp_exceptions as it is in the standard since C++98.

Note that compiling the unit-tests with “-fno-exceptions” still does
not work, because Catch uses throw internally. However, the library’s
exceptions can be switched off by defining JSON_NOEXCEPTION.
2017-03-11 17:44:54 +01:00
Niels Lohmann
ff0b18d10c Merge branch 'feature/vector_bool' into develop 2017-03-11 17:22:14 +01:00
Niels Lohmann
c7afb34e57 🎨 cleanup after #496
Ran “make pretty” and added a note to the README file.
2017-03-11 16:01:26 +01:00
Niels Lohmann
754ce0b991 Merge pull request #496 from TedLyngmo/fix_effcplusplus_warnings
Fix -Weffc++ warnings (GNU 6.3.1)
2017-03-11 15:57:10 +01:00
Niels Lohmann
d9e2dd03bf 🔨 fixed interface for to_json function 2017-03-11 15:46:52 +01:00
Niels Lohmann
f4126e4dd8 added overload for std::less<value_t> #486
MSVC needs this overload to compile code containing a std::map that
uses nlohmann::detail::operator as key.
2017-03-11 15:44:14 +01:00
Niels Lohmann
f5f6dac800 added overload for std::vector<bool> #494
Adds a to_json function for std::vector<bool> to allow implicit
conversion from bit vectors to basic_json.
2017-03-11 15:32:44 +01:00
Ted Lyngmo
70bbf19527 Fix -Weffc++ warnings (GNU 6.3.1) 2017-03-11 15:16:26 +01:00
Ted Lyngmo
5b809b9737 Fix -Weffc++ warnings (GNU 6.3.1) 2017-03-11 15:05:21 +01:00
Ted Lyngmo
9cfb777b65 Fix -Weffc++ warnings (GNU 6.3.1) 2017-03-11 13:56:38 +01:00
Niels Lohmann
f9fe0193d5 Merge branch 'develop' into coverity_scan 2017-03-09 18:55:27 +01:00
Niels Lohmann
758c4addc1 🚑 fix for #492
The original test case relied on an invalidated iterator. This error
did not occur before, but only with GCC with -D_GLIBCXX_DEBUG. This
commit fixes the test case. The library is unaffected by this change.
2017-03-09 18:20:26 +01:00
Niels Lohmann
0f6b8aa718 📝 more documentation for the new exceptions 2017-03-08 23:30:38 +01:00
Niels Lohmann
1ab580d6e9 📝 more documentation for the new exceptions 2017-03-08 23:12:13 +01:00
Niels Lohmann
fe71e7df1f 📝 overworked documentation
Replacing references to std exceptions with user-defined exceptions.
Also changed some examples to the new exceptions.
2017-03-08 21:03:19 +01:00
Niels Lohmann
9374eaa013 🔨 added user-defined exception 501 2017-03-08 19:16:53 +01:00
Niels Lohmann
c8a6ce79ea 🚑 fixing fuzzers to work with new exceptions 2017-03-08 18:37:03 +01:00
Niels Lohmann
fc9b528ec9 🔨 changed an exception 2017-03-08 18:07:21 +01:00
Niels Lohmann
8fcd01631f improved test coverage
Tests for parse_error.109 were missing.
2017-03-08 16:39:17 +01:00
Niels Lohmann
625cf7e3f7 🔨 added user-defined exception 112 2017-03-07 20:05:34 +01:00
Niels Lohmann
757d2c6c7a 🔨 replaced at() calls in msgpack/cbor 2017-03-06 23:45:08 +01:00
Niels Lohmann
5407333224 🔨 added user-defined exception 111 2017-03-06 22:37:46 +01:00
Niels Lohmann
21ec0e7806 🔨 added user-defined exception 110 2017-03-06 21:00:13 +01:00
Niels Lohmann
a186106bde 🔨 user-defined exception 302
Also moved all exception classes into the detail namespace and
introduced them via “using” into basic_json.
2017-03-06 19:34:44 +01:00
Niels Lohmann
38c2e20ce8 added user-defined exceptions 404-405 2017-03-05 23:25:22 +01:00
Niels Lohmann
30331fa21f 🔨 added user-defined exception 403 2017-03-05 23:16:17 +01:00
Niels Lohmann
60da36aee2 🔨 added user-defined exceptions 401-402 2017-03-05 22:56:39 +01:00
Niels Lohmann
491c9780a7 🔨 added user-defined exception 311 2017-03-05 22:39:21 +01:00
Niels Lohmann
6751d650be 🔨 added user-defined exception 311 2017-03-05 22:31:08 +01:00
Niels Lohmann
9e560ca40c 🔨 added user-defined exceptions 313-315 2017-03-05 19:58:26 +01:00
Niels Lohmann
144cf6a4c7 🔨 added user-defined exceptions 310 2017-03-05 19:48:11 +01:00
Niels Lohmann
5cca44c161 🔨 added user-defined exceptions 309 2017-03-05 19:42:05 +01:00
Niels Lohmann
70b2c3f45e 🔨 added user-defined exceptions 308 2017-03-05 19:35:24 +01:00
Niels Lohmann
2a9393af00 🔨 added user-defined exceptions 307 2017-03-05 19:26:44 +01:00
Niels Lohmann
bb740c43fb 🔨 added user-defined exceptions 306 2017-03-05 19:15:56 +01:00
Niels Lohmann
aa842b4a27 🔨 added user-defined exceptions 305 2017-03-05 19:08:12 +01:00
Niels Lohmann
f473f74fb0 🔨 added user-defined exceptions 303-304 2017-03-05 18:56:35 +01:00
Niels Lohmann
068c7acda9 🔨 added user-defined exceptions 301 2017-03-05 18:40:09 +01:00
Niels Lohmann
0c40c8e3be 🔨 added user-defined exceptions 2xx 2017-03-03 14:34:57 +01:00
Niels Lohmann
a4274d7766 🔨 added user-defined exceptions 205-206 2017-03-03 14:00:42 +01:00
Niels Lohmann
875b2da95d 🔨 added user-defined exceptions 203-204 2017-03-03 13:38:14 +01:00
Niels Lohmann
9381f6c4da 🔨 added user-defined exceptions 201-202
Started implementing exceptions for invalid iterators.
2017-03-03 13:19:45 +01:00
Niels Lohmann
e291c6c3d2 Merge branch 'develop' into feature/exceptions_3.0.0 2017-03-03 12:59:37 +01:00
Niels Lohmann
a1354184ce 📝 fixed typo #481 2017-03-03 12:56:54 +01:00
Niels Lohmann
0c6b1f8a24 Merge branch 'develop' into feature/exceptions_3.0.0 2017-03-03 12:54:45 +01:00
Niels Lohmann
776758d7a2 🔨 added user-defined exception 109
This exception occurs when a JSON pointer contains an array index that
can not be converted into a number.
2017-03-03 12:54:37 +01:00
Niels Lohmann
b86d2148ef 🔨 added user-defined exceptions 106-108
These exceptions occur when JSON pointers are malformed.
2017-03-03 11:56:58 +01:00
Niels Lohmann
06c788e4fd 📝 added missing word 2017-03-03 10:01:16 +01:00
Niels Lohmann
01d3a006b1 ⬆️ updated Catch to v1.8.1 2017-03-02 18:13:19 +01:00
Niels Lohmann
06815d274e 🔨 added user-defined exceptions 104 and 105
These exceptions are thrown in case of parse errors in JSON patch
documents.
2017-03-02 17:55:13 +01:00
Niels Lohmann
c085e3bac2 🔨 started with user-defined exceptions #301 #244
Added class hierarchy for user-defined exceptions (#244). Integrated
parse exceptions 101-103. Parse exceptions include the byte count of
the last read character to locate the position of the error (#301).
2017-03-01 21:28:44 +01:00
Niels Lohmann
7b8fd864e2 🔥 removed deprecated constructor #480
The constructor basic_json(std::istream&, const parser_callback_t) has
been deprecated since version 2.0.0. This commit removes it together
with its code example, deprecation macro, and test cases. The code now
also compiles with -W-deprecated-declarations.
2017-03-01 17:49:03 +01:00
Niels Lohmann
6b3912d936 📝 added note to 3.0.0 wiki page #474
I created a wiki page
https://github.com/nlohmann/json/wiki/Road-toward-3.0.0 to describe the
transition toward version 3.0.0. On this page, all API-breaking changes
shall be documented.
2017-03-01 17:26:32 +01:00
Niels Lohmann
f84ac523aa 📝 added a note to ordered maps
The library does not preserve the insertion order of object keys. There
are frequent requests to change the library in this aspect. The README
and the contribution guidelines now contain links to containers that
can be used to replace std::map to preserve the insertion order.
2017-03-01 10:15:07 +01:00
Niels Lohmann
41f9b32554 🔀 merge branch 'feature/serialization_class' into develop (#418)
Moved all dump()-related functions into a class "serializer". This fix includes a lot of performance improvements yielding a 7% speedup for serialization. Details on the individual steps can be found in the commit messages.

Individual benchmark numbers:

before:

dump jeopardy.json                            5   374555228 ns/op
dump jeopardy.json with indent                5   430953700 ns/op
dump numbers/floats.json                      5   622938509 ns/op
dump numbers/signed_ints.json                20    82177979 ns/op

after:

dump jeopardy.json                            5   335449757 ns/op -11%
dump jeopardy.json with indent                5   375467773 ns/op -13%
dump numbers/floats.json                      5   584611852 ns/op -7%
dump numbers/signed_ints.json                20    68289574 ns/op -17%
2017-02-28 21:04:16 +01:00
Niels Lohmann
d69242c6ba 💄 cleanup
- Added comments for the serializer class.
- Added test case for resizing of the indentation string.
- Using std::none_of to check if “.0” needs to be added to
floating-point number.
2017-02-28 19:20:50 +01:00
Niels Lohmann
059f21aada 💄 fixed a warning
snprintf returns an int, but we later assign it a difference_type which
is usually a long.
2017-02-28 17:24:03 +01:00
Niels Lohmann
224f99070b micro-optimization of dump()
A lot of small changes to avoid memory allocations:

- The locale is only queried once rather than with every number
serialization.
- The indentation string is recycled between different calls.
- The string escape function avoids a copy if no escaping is necessary.
- The string escape and the space function use a complete switch case
instead of cascaded ifs.

Cachegrind measures some 15% performance improvement.
2017-02-28 16:28:22 +01:00
Niels Lohmann
fc48b8ac2b 🐛 fixed a logical error
Treated the size of the range as the number of thousand separators.
This logical error yielded a negative value for written_bytes and
eventually an infinite loop, as written_bytes was converted to an
unsigned value.
2017-02-28 11:45:38 +01:00
Niels Lohmann
af070744ae 🔨 integrating numtostr into serializer class
By merging numtostr into serializer, we can write directly to the
output stream. As a consequence, all stream calls are now unformatted.
2017-02-27 22:10:57 +01:00
Niels Lohmann
54ef5f7b47 🔨 moved serialization functions to serializer class
The class is currently just a wrapper for an std::ostream and collects
all functions related to serialization. The next step should be
recycling of variables to avoid repetitive initialization for each
recursive dump call.
2017-02-27 21:22:39 +01:00
Niels Lohmann
9c4919ff34 " micro-optimizations for dump()"
This reverts commit 909b439b03.
For some strange reason, the test suite crashes when compiled
with GCC.
2017-02-27 16:19:07 +01:00
Niels Lohmann
909b439b03 micro-optimizations for dump()
numtostr now directly writes to a stream. Return value of snprintf is
reused to avoid finding end of string. Cachegrind suggests a 1%
performance increase.
2017-02-27 14:58:10 +01:00
Niels Lohmann
0f04e42dd5 micro-optimizations for dump()
All ‘<<‘ calls have been replaced by write()/put() calls. The
indentation strings needs not to be resized. Cachegrind measures 1%
performance improvement.
2017-02-27 01:22:24 +01:00
Niels Lohmann
b1441f3485 micro-optimizations for dump()
Indentation string is recycled to avoid allocations. Comma-separation
in objects does not need an if any more. Cachegrind measures 1%
performance improvement.
2017-02-26 20:58:00 +01:00
Niels Lohmann
bd0326cbc1 micro-optimizations for dump()
Added separate code paths for normal output and pritty-printed output.
This allowed to remove most of the ifs along the way. Benchmarks and
cachegrind suggest a 10% performance improvement.
2017-02-26 16:55:54 +01:00
Niels Lohmann
ae155c4734 💄 cleanup 2017-02-26 14:45:41 +01:00
Niels Lohmann
bf4d744d1a more tests for meta() call 2017-02-26 14:34:58 +01:00
Niels Lohmann
d1b30250d6 added missing tests 2017-02-26 11:50:52 +01:00
Niels Lohmann
f1cd15ce7e avoid copying a string 2017-02-26 11:22:18 +01:00
Niels Lohmann
9ff0cc0f02 📝 updated documentation 2017-02-25 16:43:15 +01:00
Niels Lohmann
03f06e1993 Merge branch 'develop' into coverity_scan 2017-02-25 16:38:18 +01:00
Niels Lohmann
1b5867bdcf 🔀 merge branch 'release/2.1.1' into develop 2017-02-25 16:37:28 +01:00
Niels Lohmann
27c65b860b 🔖 version 2.1.1 2017-02-25 16:34:38 +01:00
Niels Lohmann
0234e53e23 📝 added section on used third-party tools 2017-02-22 20:48:52 +01:00
Niels Lohmann
b49ce351eb 💄 fixed some warnings 2017-02-22 20:48:29 +01:00
Niels Lohmann
a646c9c599 🔀 merge branch 'cotire' of https://github.com/tusharpm/json into tusharpm-cotire 2017-02-22 19:45:10 +01:00
Niels Lohmann
8cec55a271 🚧 fixed more warnings 2017-02-22 18:14:29 +01:00
Niels Lohmann
345a106d73 💄 cleanup 2017-02-22 16:56:56 +01:00
Niels Lohmann
967f9144d4 🚧 overworked fix for #465 2017-02-21 19:11:34 +01:00
Niels Lohmann
7d14f167b8 🚑 fix for #465 2017-02-20 22:48:27 +01:00
Niels Lohmann
b04543ecc5 🎨 fixed newlines 2017-02-20 21:56:10 +01:00
Niels Lohmann
1a6d7f5bca 🚧 try to fix some warnings in MSVC 2017-02-20 18:32:11 +01:00
Niels Lohmann
f7075be93a 🐛 reverted change for #464 2017-02-20 18:15:50 +01:00
Niels Lohmann
f2dfa09aec 🐛 fix for #464 2017-02-20 18:05:52 +01:00
Niels Lohmann
83a9c60dbd 🔨 refactored code to avoid using strcpy/strlen/strcat (#463) 2017-02-20 17:37:34 +01:00
Niels Lohmann
716485a965 🚧 removed decay (#448) 2017-02-20 16:27:16 +01:00
Niels Lohmann
7a4a16a7db 💄 updated header list 2017-02-20 16:20:45 +01:00
Niels Lohmann
1f72c38861 🚑 fix for #448 2017-02-19 21:26:53 +01:00
Niels Lohmann
83f1d2c81b added start index for from_cbor and from_msgpack (#462) 2017-02-19 21:17:05 +01:00
Niels Lohmann
4151f2d297 added test with thousands_sep 2017-02-19 20:08:01 +01:00
Niels Lohmann
5b53f03e7c Merge branch 'develop' into TurpentineDistillery-feature/locale_independent_num_to_str 2017-02-19 19:24:55 +01:00
Niels Lohmann
9a9d0ba3df 🚧 fixing warning C4293 (#453) 2017-02-19 17:47:20 +01:00
Tushar Maheshwari
5436407b7e 👷 Add cmake logic to Travis config
- get CMake for XCode 8.1 image
2017-02-19 13:38:08 +05:30
Tushar Maheshwari
85ce4d7b53 cmake compile time reduce using cotire
- Add prefix header
  - Include catch.hpp
  - Include json.hpp
    - Replace private with public for all json_unit files
- Move `unit.cpp` to an object library
- cotire issue: strip whitespace from CMAKE_INCLUDE_SYSTEM_FLAG_CXX
2017-02-19 13:35:54 +05:30
Niels Lohmann
d1479e47bb 💄 added assertion message 2017-02-18 11:01:03 +01:00
Niels Lohmann
513eb3ab5f 🚧 clean up 2017-02-18 11:00:18 +01:00
Niels Lohmann
0200f2dc62 🚧 fixing warning C4267 (#453) 2017-02-17 19:14:21 +01:00
Niels Lohmann
6408402ad2 🔀 merge #378 (for #362 and #454) 2017-02-16 09:24:45 +01:00
Niels Lohmann
057b1e606b 🔀 merged #415 (fix for #414) 2017-02-16 08:50:20 +01:00
Niels Lohmann
2c17c1b1b2 💄 cleanup 2017-02-16 08:01:01 +01:00
Niels Lohmann
973402c11e 🚧 replaced throws (#440) and _MAX/_MIN macros (#451) 2017-02-15 22:44:18 +01:00
Niels Lohmann
b9f3149451 🚑 fix for #452 2017-02-15 21:30:28 +01:00
Mihai STAN
6bf93b3d06 Merge remote-tracking branch 'upstream/develop' into develop 2017-02-15 15:00:25 +02:00
Niels Lohmann
82fb613763 📝 update after #302 2017-02-14 07:28:30 +01:00
Niels Lohmann
22b9a301d6 Merge pull request #450 from nlohmann/TurpentineDistillery-feature/locale_independent_str_to_num
TurpentineDistillery feature/locale independent str to num
2017-02-14 07:18:35 +01:00
Niels Lohmann
c95ff863bf ⬆️ updated Catch to v1.7.2 2017-02-13 18:55:11 +01:00
Niels Lohmann
265c5b5207 🔨 more work on the number parser 2017-02-13 18:51:23 +01:00
Niels Lohmann
b84705d557 improved test coverage 2017-02-12 20:14:43 +01:00
Niels Lohmann
c8191c8172 🔨 further cleanup 2017-02-12 18:50:17 +01:00
Niels Lohmann
c2d55109c1 🔨 make lexer distinguishes number types 2017-02-11 16:54:25 +01:00
Niels Lohmann
9f5dccbab5 💄 cleanup 2017-02-11 15:55:53 +01:00
Niels Lohmann
926af6d50b 🔀 merge branch 'develop' into TurpentineDistillery-feature/locale_independent_str_to_num 2017-02-11 15:17:47 +01:00
Niels Lohmann
ed8516dc39 👷 added Codacy badge 2017-02-09 17:38:02 +01:00
Niels Lohmann
c485d46cea 📝 screenshoots look ugly 2017-02-08 20:00:46 +01:00
Niels Lohmann
6fd77cea4a 📝 added screenshots 2017-02-08 19:22:19 +01:00
Niels Lohmann
0ffa18aab8 📝 listing projects using the library 2017-02-08 19:16:38 +01:00
Niels Lohmann
662a9b8f3c ✏️ fixed more typos 2017-02-08 18:19:41 +01:00
Niels Lohmann
4746a4c536 💄 minor change 2017-02-08 17:56:43 +01:00
Niels Lohmann
163f8397fd ✏️ fixed a typo #446 2017-02-05 17:11:26 +01:00
Niels Lohmann
8d88a1da2a 🔀 merged #379 and fixed conflicts 2017-02-05 13:13:41 +01:00
Niels Lohmann
d284c86dd1 uncommented some tests 2017-02-04 21:00:41 +01:00
Niels Lohmann
922fe693e1 ⬆️ updated Catch to v1.7.0 2017-02-04 15:30:28 +01:00
Niels Lohmann
1cfdc2a753 🐛 fixed test compilation 2017-02-04 08:25:55 +01:00
Niels Lohmann
77d6f70602 📝 acknowledgments for #442 and #445 2017-02-03 18:28:22 +01:00
Niels Lohmann
d6afaa8e16 📝 fixing a documentation issue #442 2017-02-03 18:15:37 +01:00
Niels Lohmann
5976caf032 improved test compilation speed #445 2017-02-03 18:09:55 +01:00
Niels Lohmann
16af771277 added roundtrip test for the Big List of Naughty Strings 2017-02-01 17:34:39 +01:00
Niels Lohmann
bf8fdac99a 👷 dropped Doozer.io support 2017-02-01 16:41:05 +01:00
Niels Lohmann
7bb7033383 Merge branch 'develop' into coverity_scan 2017-02-01 16:03:51 +01:00
Niels Lohmann
c75865d88c 🐛 fixed -Weffc++ warnings 2017-02-01 15:13:21 +01:00
Niels Lohmann
b210f2dbf4 💄 minor refactoring 2017-01-29 21:40:37 +01:00
Niels Lohmann
0164b10e10 added missing tests found by mutate++ 2017-01-29 17:18:58 +01:00
Niels Lohmann
affa3bf4e9 Merge pull request #439 from jaredgrubb/patch-2
README: adjust boost::optional example
2017-01-29 08:18:44 +01:00
Jared Grubb
f2873e6d3a README: adjust boost::optional example
The "from_json" example for boost::optional is not complete and should also handle the 'none' case.
2017-01-29 02:46:58 +00:00
Niels Lohmann
c7f366520c Merge branch 'develop' into coverity_scan 2017-01-28 18:43:48 +01:00
Niels Lohmann
f642934b18 🔀 merge branch 'release/2.1.0' into develop 2017-01-28 18:43:01 +01:00
Niels Lohmann
6746a57524 📝 updated slides 2017-01-28 18:41:30 +01:00
Niels Lohmann
eb08e8b09b 📝 updated documentation 2017-01-28 18:20:12 +01:00
Niels Lohmann
4b5c61075f 📄 changes to let Github detect the license 2017-01-28 18:17:57 +01:00
Niels Lohmann
38e4935db0 📝 added example and documentation for the meta function 2017-01-28 17:12:29 +01:00
Niels Lohmann
cdde1a9436 🔖 set version to 2.1.0 2017-01-28 16:46:03 +01:00
Niels Lohmann
d870826811 🔖 set version to 2.1.0 2017-01-28 16:03:35 +01:00
Niels Lohmann
2f6260751c 📝 fixed #434 2017-01-27 18:50:52 +01:00
Niels Lohmann
42fa3f0568 🔀 merge pull request #435 (based on #338, #355, and #423)
conversion from/to user-defined types
2017-01-27 06:22:10 +01:00
Niels Lohmann
cd9701b123 💄 cleanup 2017-01-26 20:51:30 +01:00
Niels Lohmann
1305e03557 📝 fixed documentation 2017-01-26 19:39:34 +01:00
Niels Lohmann
77bb7af5d9 📝 added more documentation 2017-01-26 07:29:37 +01:00
Niels Lohmann
4d3053cd42 💄 some cleanup 2017-01-25 22:21:07 +01:00
Niels Lohmann
94d9b7bc86 📝 overworked documentation (re-added constructor examples) 2017-01-25 21:59:54 +01:00
Niels Lohmann
ec03c9c53e 📝 overworked docs #435 2017-01-25 19:01:31 +01:00
Mihai STAN
6198439f59 fix #414 - comparing to 0 literal
Overload comparison operators for all types that could be converted
to nullptr.
2017-01-24 22:33:37 +02:00
Niels Lohmann
4139bb6572 📝 adjusted test count 2017-01-24 15:20:20 +01:00
Niels Lohmann
c154f3133d 🚧 rephrased assertions 2017-01-24 15:02:35 +01:00
Niels Lohmann
50a3f3b301 📝 added nicer example 2017-01-24 14:55:51 +01:00
Niels Lohmann
781fd09f2d 📝 cleanup 2017-01-24 14:45:32 +01:00
Niels Lohmann
daf8dcdb32 📝 overworked README 2017-01-24 14:37:25 +01:00
Niels Lohmann
250e5bf43d 💄 overworked documentation and indentation 2017-01-24 13:47:33 +01:00
Niels Lohmann
030cf674ef 🚧 fixed a warning 2017-01-24 12:49:38 +01:00
Niels Lohmann
3857e55290 💄 ran "make pretty" 2017-01-24 12:43:43 +01:00
Théo DELRIEU
9f103d19d7 add implicit conversions test (operator T()) 2017-01-22 14:23:24 +01:00
Théo DELRIEU
9f8b270ed9 fix some warnings 2017-01-22 14:07:28 +01:00
Théo DELRIEU
9c6ef74a28 add static_asserts/remove the need for CopyConstructible in get 2017-01-21 19:12:40 +01:00
Théo DELRIEU
ba0b35f414 use typename U = uncvref_t where appropriate 2017-01-21 19:12:40 +01:00
Théo DELRIEU
37fd20b2eb put uncvref_t, enable_if_t, value_t and operator<(value_t) in detail 2017-01-21 19:12:40 +01:00
Théo DELRIEU
7d771c71ed put back type_name in basic_json
This can however not be done easily for value_t, since
external_constructor depends on it, as is operator< which was moved
outside basic_json too.
This is not really an issue, since all basic_json classes share the same
enum
2017-01-21 19:12:40 +01:00
Théo DELRIEU
f997758cad remove useless forward declaration of primitive_iterator_t 2017-01-21 19:12:40 +01:00
Théo DELRIEU
40ba5a8b7b remove inline keyword from anonymous namespace (not needed) 2017-01-21 19:12:40 +01:00
Théo DELRIEU
7f359017d2 rename template argument Json -> BasicJsonType 2017-01-21 19:12:40 +01:00
Théo DELRIEU
708eb9613b disable reserve tests when exceptions are disabled 2017-01-21 19:12:40 +01:00
Théo DELRIEU
889b269a4f rename template argument: BasicJson -> Json 2017-01-21 16:14:23 +01:00
Théo DELRIEU
a6b028286b move conjunction/disjunction to the top of detail 2017-01-21 16:14:23 +01:00
Théo DELRIEU
d566bb81c4 use switchs where appropriate 2017-01-21 16:14:23 +01:00
Théo DELRIEU
1e20887cff use JSON_THROW 2017-01-21 16:14:22 +01:00
Théo DELRIEU
447c6a670f run make re2c 2017-01-21 16:14:22 +01:00
Théo DELRIEU
3e15b551e0 run make pretty 2017-01-21 16:14:22 +01:00
Théo DELRIEU
fbac056c38 add readme 2017-01-21 16:14:22 +01:00
Théo DELRIEU
b56117b148 add noexcept tests 2017-01-21 16:14:22 +01:00
Théo DELRIEU
af94e712c7 add basic doxygen documentations 2017-01-21 16:14:22 +01:00
Théo DELRIEU
1d87097741 remove some boilerplate 2017-01-21 16:14:22 +01:00
Théo DELRIEU
e60e458a7e move static_const to the detail namespace 2017-01-21 16:14:22 +01:00
Théo DELRIEU
794dae8911 apply changes to json.hpp.re2c 2017-01-21 16:14:22 +01:00
Théo DELRIEU
68081cd112 remove useless file 2017-01-21 16:14:22 +01:00
Théo DELRIEU
07bc82d3a7 put const to the left 2017-01-21 16:14:22 +01:00
Théo DELRIEU
f1482d1f01 more tests in unit-udt 2017-01-21 16:14:22 +01:00
Théo DELRIEU
f2c71fafda minor message/comments tweak 2017-01-21 16:14:22 +01:00
Théo DELRIEU
63e4249e9f use a priority_tag instead of int and longs with sfinae-dispatch 2017-01-21 16:14:22 +01:00
Théo DELRIEU
b8012876a5 add noexcept checks, and some missing noexcepts 2017-01-21 16:14:22 +01:00
Théo DELRIEU
1554baa01d attempting to fix coverage. testing that reserve is called 2017-01-21 16:14:22 +01:00
Théo DELRIEU
a9d5ae4fad put back a specialization for containers with a reserve method 2017-01-21 16:14:22 +01:00
Théo DELRIEU
e247e01a6e use static_casts to silence MSVC warnings
Those warnings are not "fixed", but that's intentional.
Truncations are expected when ArithmeticType is not the same type than
number_unsigned_t (or another basic_json template argument)
2017-01-21 16:14:22 +01:00
Théo DELRIEU
d0d8070422 add static_asserts
remove some useless trailing return types and && to help MSVC
2017-01-21 16:14:22 +01:00
Théo DELRIEU
e678c075dd check for is_number_unsigned before is_number_integer 2017-01-21 16:14:22 +01:00
Théo DELRIEU
cb3d455bd2 do not const_cast when calling get_ptr 2017-01-21 16:14:22 +01:00
Théo DELRIEU
3494014ba0 new unit-udt.cpp tests 2017-01-21 16:14:22 +01:00
Théo DELRIEU
1f25ec5d36 add some constexpr + noexcept 2017-01-21 16:14:22 +01:00
Théo DELRIEU
29f9fe6ae9 remove one has_to/from_json template parameter 2017-01-21 16:14:22 +01:00
Théo DELRIEU
5839795725 remove useless helpers 2017-01-21 16:14:22 +01:00
Théo DELRIEU
b4cea6825d remove is_compatible_array_type_impl trait 2017-01-21 16:14:22 +01:00
Théo DELRIEU
b2543e06d8 removed is_compatible_float_type trait 2017-01-21 16:14:22 +01:00
Théo DELRIEU
be6b417c87 tweak SFINAE checks for internal types (see commit body)
only check for public types (iterators, json_pointer)

for private ones (m_array.iterator, primitive_iterator) simply double
parentheses on relevant Catch checks
2017-01-21 16:14:22 +01:00
Théo DELRIEU
317883b21b cleanup, details in body
removes:
- is_basic_json_compatible_type traits
- a useless operator=
- void_t
- disjunction

changes:
- is_compatible_object_type's first argument is BasicJson
2017-01-21 16:14:22 +01:00
Théo DELRIEU
4e8089b9de remove old get/get_impl overloads (doc removal is of course temporary) 2017-01-21 16:14:22 +01:00
Théo DELRIEU
7e6a6f978e replace constructor by from/to_json: array_t 2017-01-21 16:14:22 +01:00
Théo DELRIEU
c847e0eea2 replace constructor by from/to_json: array_t
- tweaked a bit how `get<container<json>>` is handled
- added a from_json overload for forward list
2017-01-21 16:14:22 +01:00
Théo DELRIEU
6d427acdde replace constructor by from/to_json: unscoped enum types
this also means that one can do: j.get<unscoped_enum>();
2017-01-21 16:14:22 +01:00
Théo DELRIEU
f00898331e replace constructor by from/to_json: number_integer_t 2017-01-21 16:14:22 +01:00
Théo DELRIEU
a32de3b528 replace constructor by from/to_json: number_unsigned_t
This commit forces a design change in custom JSONSerializer, which might
be temporary
2017-01-21 16:14:21 +01:00
Théo DELRIEU
d257149f36 replace constructor by from/to_json: number_float_t 2017-01-21 16:14:21 +01:00
Théo DELRIEU
bbe40641a3 replace constructor by from/to_json: string_t 2017-01-21 16:14:21 +01:00
Théo DELRIEU
6b89785fba replace constructor by from/to_json: boolean_t 2017-01-21 16:14:21 +01:00
Théo DELRIEU
c833b22b7b move type_name outside of basic_json, make it a friend 2017-01-21 16:14:21 +01:00
Théo DELRIEU
d359684f2b move enum class value_t outside of basic_json 2017-01-21 16:14:21 +01:00
Niels Lohmann
034d5ed97e 💄 some cleanup 2017-01-21 16:14:21 +01:00
Niels Lohmann
be1d3de49b 💄 moved changes to re2c file and ran make pretty 2017-01-21 16:14:21 +01:00
Théo DELRIEU
aa2679a8ce fix tests, avoid instantiating JSONSerializer when it will not be used 2017-01-21 16:14:21 +01:00
Théo DELRIEU
d5ee5830ed add more tests 2017-01-21 16:14:21 +01:00
Théo DELRIEU
1c21c87e6f use u8 prefix in unit-udt.cpp 2017-01-21 16:14:21 +01:00
Théo DELRIEU
7e750ec1fa fix msvc, by doubling parenthesis on catch assertions 2017-01-21 16:14:21 +01:00
Théo DELRIEU
3d405c6883 add support for enum classes 2017-01-21 16:14:21 +01:00
Théo DELRIEU
8e43d476d3 add more tests to unit-udt.cpp 2017-01-21 16:14:21 +01:00
Théo DELRIEU
f5cb089f89 add an enum constructor (quickfix) 2017-01-21 16:14:21 +01:00
Théo DELRIEU
1eafac7220 remove explicit keyword on udt-constructor 2017-01-21 16:14:21 +01:00
Théo Delrieu
c0c72b5b62 rewrite unit-udt: basic usage 2017-01-21 16:14:21 +01:00
Théo DELRIEU
60e6f822fa add support for non-default-constructible udt 2017-01-21 16:14:21 +01:00
Théo DELRIEU
e5999c6c82 add a few tests 2017-01-21 16:14:21 +01:00
Théo Delrieu
74bb11d92c remove some useless checks, format a bit, added some comments 2017-01-21 16:14:21 +01:00
Théo DELRIEU
907484fb43 format biggest lines 2017-01-21 16:14:21 +01:00
Théo Delrieu
47bc402113 only use conjunction & co when needed to avoid MSVC crashing 2017-01-21 16:14:21 +01:00
Théo DELRIEU
ee19acaf05 add is_compatible_basic_json_type trait 2017-01-21 16:14:21 +01:00
Théo Delrieu
9b401972a0 add a macro for has_xxx types 2017-01-21 16:14:21 +01:00
Théo DELRIEU
e2dbe7a69f correctly constrain basic_json udt constructor 2017-01-21 16:14:21 +01:00
Théo DELRIEU
0d91113ccf add negation, disjunction, and conjunction from C++17 2017-01-21 16:14:21 +01:00
Théo DELRIEU
88819449c2 remove constraints on JSONSerializer instances, constrain correctly new methods 2017-01-21 16:14:21 +01:00
Théo DELRIEU
23bd2bce35 add is_compatible_* traits 2017-01-21 16:14:21 +01:00
Théo DELRIEU
178441cdfd add basic test for custom serializer 2017-01-21 16:14:21 +01:00
Théo DELRIEU
2bc685f6b4 to_json and from_json takes both two arguments now
the first is the basic_json type, the second the user-defined type
2017-01-21 16:14:21 +01:00
Théo DELRIEU
837b81d672 renamed unit-constructor3.cpp to unit-udt.cpp 2017-01-21 16:14:21 +01:00
Théo DELRIEU
33abccf847 add template arguments for JSONSerializer 2017-01-21 16:14:21 +01:00
Théo DELRIEU
7dc268ef42 add first version for alternate implementation 2017-01-21 16:14:21 +01:00
Théo DELRIEU
4cdc61e493 move most SFINAE trickery in to/from_json_fn 2017-01-21 16:14:21 +01:00
Théo DELRIEU
03b391c37b remove has_destructor and has_json_traits, use decltype instead 2017-01-21 16:14:21 +01:00
Théo DELRIEU
12b4555b13 use uncvref_t<T> instead of remove_cv_t<remove_reference_t<T>>> 2017-01-21 16:14:21 +01:00
Théo DELRIEU
877d96c1d8 rename __static_const to _static_const (reserved identifier) 2017-01-21 16:14:21 +01:00
Théo DELRIEU
d54d6bb84c add alias templates to reduce boilerplate 2017-01-21 16:14:21 +01:00
Théo DELRIEU
fe628b585b anonymous namespace renamed to detail 2017-01-21 16:14:21 +01:00
Théo Delrieu
b443edf49e add first version support for user-defined types 2017-01-21 16:14:20 +01:00
Niels Lohmann
ce0b3fe5a3 🚧 made type_name() public 2017-01-21 16:12:17 +01:00
Niels Lohmann
145188f264 renaming did not help 2017-01-19 19:23:56 +01:00
Niels Lohmann
69be3fa842 📝 small documentation update 2017-01-19 18:19:20 +01:00
Niels Lohmann
5e3f9c8969 📄 help Github find the license 2017-01-19 17:09:55 +01:00
Niels Lohmann
e951d198f4 🔀 merge pull request #430 from vjon/patch-1
Fix documentation error
2017-01-19 07:42:29 +01:00
Jonathan Lee
046f6da82f Fix documentation error
Move comparison before "j.clear()" function call, such that the intended return value "true" is actually correct.
2017-01-18 11:43:14 -08:00
Niels Lohmann
bae8e70137 🔀 merge branch 'feature/noexceptions_2' into develop 2017-01-18 20:41:17 +01:00
Niels Lohmann
87c5e32e1f 🐛 fixed escaping 2017-01-16 22:46:49 +01:00
Niels Lohmann
a00149f8ee 🐛 fixed logic error 2017-01-16 22:36:58 +01:00
Niels Lohmann
1ab26ab367 option to switch off exceptions 2017-01-16 22:11:07 +01:00
Niels Lohmann
74cbd30cd0 📄 it's 2017 2017-01-16 20:04:47 +01:00
Niels Lohmann
a7f3938391 added Big List of Naughty Strings 2017-01-16 20:03:50 +01:00
Niels Lohmann
a9b4cb8bf8 🔀 merge branch 'feature/release_information' into develop #397 2017-01-12 21:37:31 +01:00
Niels Lohmann
3a9ccfac22 🚧 cleanup 2017-01-12 21:35:27 +01:00
Niels Lohmann
98ad3c3ac1 Merge branch 'develop' into feature/release_information 2017-01-12 21:30:08 +01:00
Niels Lohmann
0f03543861 ⬆️ upgraded to Catch 1.6.0 2017-01-11 22:23:02 +01:00
Niels Lohmann
e9bbf5aaba 🐛 forgot to remove a test case 2017-01-08 09:31:40 +01:00
Niels Lohmann
dd45ba6f89 🚧 renamed version() to meta() 2017-01-08 09:19:44 +01:00
Alex Astashyn
c236b596c9 Merge upstream/develop into feature/locale_independent_str_to_num 2017-01-04 19:20:16 -05:00
Alex Astashyn
949061079a Merge upstream/develop into feature/locale_independent_num_to_str 2017-01-04 18:55:19 -05:00
Niels Lohmann
e1b89dd1d6 Merge branch 'develop' into feature/release_information 2017-01-04 20:06:23 +01:00
Niels Lohmann
9f6c86f233 🐛 fix for #417 2017-01-04 18:54:44 +01:00
Niels Lohmann
4765070318 📝 added documentation wrt. UTF-8 strings #406 2017-01-04 18:07:46 +01:00
Niels Lohmann
cdd3b5a68c 🚑 fix for #416 2017-01-03 23:52:01 +01:00
Niels Lohmann
767637877b 💄 cleanup 2017-01-03 22:37:07 +01:00
Niels Lohmann
f8d640b185 👷 better support for OSS-Fuzz 2017-01-03 22:35:31 +01:00
Niels Lohmann
245a69d554 💄 ran clang-tidy 2017-01-03 21:33:23 +01:00
Niels Lohmann
ea4d71ee21 Merge branch 'develop' into feature/release_information 2017-01-02 17:26:00 +01:00
Niels Lohmann
0f36541d65 Merge branch 'develop' into coverity_scan 2017-01-02 16:39:52 +01:00
Niels Lohmann
9755cc75b1 🔀 merge branch 'release/2.0.10' into develop 2017-01-02 16:38:23 +01:00
Niels Lohmann
7e2c4b3ead 📝 updated online link 2017-01-02 16:37:29 +01:00
Niels Lohmann
69c615e127 🔖 version bump to 2.0.10 2017-01-02 10:00:44 +01:00
Niels Lohmann
4d3bf433b4 🔖 updated ChangeLog 2017-01-02 09:56:21 +01:00
Niels Lohmann
8b46eb8ec0 📄 it's 2017 already 2017-01-02 09:40:00 +01:00
Niels Lohmann
6a20790056 📝 updated test count 2017-01-02 09:36:30 +01:00
Niels Lohmann
60b3703c62 🔖 version bump to 2.0.10 2017-01-02 09:35:57 +01:00
Niels Lohmann
d173517212 💄 clean up 2017-01-02 09:21:26 +01:00
Niels Lohmann
a3063c2419 🚧 added target to build all fuzzers 2017-01-01 21:51:36 +01:00
Niels Lohmann
db33629990 💄 cleanup after #410 2017-01-01 21:34:58 +01:00
Niels Lohmann
712529cd32 🔀 merge pull request #400 from andoma/develop
Add Doozer build badge
2017-01-01 19:47:33 +01:00
Niels Lohmann
09b91406c6 🔀 merge pull request #410 from Daniel599/feature/clang_sanitize
Feature/clang sanitize
2017-01-01 19:45:11 +01:00
Niels Lohmann
ab7d55e7ae 👷 removed failing test suites 2017-01-01 19:38:54 +01:00
Niels Lohmann
cf9bf2d913 🚑 fix for #411 and #412 2017-01-01 15:28:01 +01:00
Daniel Cohen
ff3221a375 #394 fixed memory leak in unit-allocator, found by clang's fsanitize 2016-12-30 15:21:25 +02:00
Niels Lohmann
328eb55dc4 🚧 started working on #397 2016-12-30 14:02:51 +01:00
Daniel Cohen
010ea126f3 going to try clang_sanitize with libstdc++ with g++-6 implementation
Conflicts:
	.travis.yml
	Makefile
2016-12-30 14:24:22 +02:00
Niels Lohmann
d7029c37aa improved test coverage 2016-12-30 13:04:33 +01:00
Niels Lohmann
f7575dee94 Merge branch 'develop' into feature/release_information 2016-12-30 12:29:01 +01:00
Niels Lohmann
42a8c64499 🔖 added version information 2016-12-30 12:28:52 +01:00
Niels Lohmann
f0edab2363 🚑 fix for #408 2016-12-29 17:00:02 +01:00
Niels Lohmann
383a29a924 🚑 fix for #407 2016-12-29 16:14:15 +01:00
Niels Lohmann
871cebaf84 🚑 fix for #405 2016-12-29 15:39:16 +01:00
Niels Lohmann
8381cd6020 🚑 removed unsafe call to strerror #403 2016-12-28 14:19:08 +01:00
Niels Lohmann
e4c2829aea 🔀 merge branch 'feature/fuzzer' into develop 2016-12-28 12:26:00 +01:00
Niels Lohmann
1dd99d04b6 Merge branch 'develop' into feature/fuzzer 2016-12-28 12:19:12 +01:00
Niels Lohmann
888f5b9f60 🚚 renamed test files to allow windows build 2016-12-28 12:18:48 +01:00
Niels Lohmann
55be721615 Merge branch 'develop' into feature/fuzzer 2016-12-28 12:11:51 +01:00
Niels Lohmann
acb7e0558d 🚑 fixed bugs detected by AFL-Fuzz 2016-12-28 12:09:15 +01:00
Niels Lohmann
e3b036348b 🚧 added targets for parallel AFL fuzzing 2016-12-25 16:36:43 +01:00
Niels Lohmann
1399abc583 🚧 added MessagePack fuzz target 2016-12-25 16:18:56 +01:00
Niels Lohmann
e4cc62e653 🐛 fixed Makefile to work with proper CBOR files 2016-12-25 16:07:10 +01:00
Niels Lohmann
6de9d4035a 🐛 fixed AFL driver to also read binary data 2016-12-25 16:06:56 +01:00
Niels Lohmann
dbdcb3fec8 🐛 fixed bug in CBOR/MessagePack deserialization 2016-12-25 16:06:36 +01:00
Niels Lohmann
6e129fbfb7 📝 some small documentation fixes 2016-12-25 14:39:08 +01:00
Niels Lohmann
f87f4c06f9 🚧 cleanup 2016-12-22 12:10:52 +01:00
Niels Lohmann
33be4e7f1f 🚧 cleanup 2016-12-22 12:08:36 +01:00
Niels Lohmann
a084e90f39 🔨 split AFL test in driver and test file 2016-12-22 11:09:26 +01:00
Niels Lohmann
048330b14b ⬆️ Catch v1.5.9 2016-12-22 09:37:15 +01:00
Niels Lohmann
22a6b956e8 📄 added license for Catch 2016-12-22 09:36:34 +01:00
Niels Lohmann
ad241a2260 🔨 moved third-party code into separate folder 2016-12-22 09:35:53 +01:00
Niels Lohmann
6e8791912f 🚧 added fuzzer from OSS-Fuzz 2016-12-22 09:09:40 +01:00
Niels Lohmann
69ed19e483 added libFuzzer 2016-12-22 09:08:50 +01:00
Niels Lohmann
09fd1a04b8 Merge branch 'develop' into coverity_scan 2016-12-21 16:19:26 +01:00
Niels Lohmann
7107072f71 👷 clang for fedora 2016-12-21 10:33:36 +01:00
Niels Lohmann
2cf0f299ad 👷 using clang where GCC is too old 2016-12-21 10:13:59 +01:00
Niels Lohmann
937cca762f 👷 forgot to install make 2016-12-21 09:54:11 +01:00
Niels Lohmann
91e45a8dd0 👷 the cmake of trusty is too old 2016-12-21 09:47:31 +01:00
Niels Lohmann
f78671de8e 👷 Fedora has no package "build-essential" 2016-12-21 09:33:16 +01:00
Niels Lohmann
2e5208d5cd 👷 there is no cmake in the osx image 2016-12-21 09:19:53 +01:00
Niels Lohmann
c6fbd305b0 👷 trying more doozer workers 2016-12-21 09:17:17 +01:00
Niels Lohmann
38597ac628 👷 added more builders 2016-12-20 23:04:07 +01:00
Andreas Smas
57b32d9773 Add Doozer build badge 2016-12-20 21:38:01 +01:00
Niels Lohmann
73b28e8f92 👷 fixing build command 2016-12-20 19:16:52 +01:00
Niels Lohmann
1178a8152a 👷 using cmake with Doozer 2016-12-20 19:13:19 +01:00
Niels Lohmann
0fffbb8488 👷 trying Doozer 2016-12-20 19:06:15 +01:00
Niels Lohmann
ab64419bb6 Merge branch 'develop' into coverity_scan 2016-12-18 18:17:51 +01:00
Niels Lohmann
9952a3c456 👷 trying to fix coverity task 2016-12-18 18:17:26 +01:00
Niels Lohmann
03b78fee63 Merge branch 'develop' into coverity_scan 2016-12-16 21:42:34 +01:00
Niels Lohmann
0e55af23fc 🔀 Merge branch 'release/2.0.9' into develop 2016-12-16 21:35:28 +01:00
Niels Lohmann
57afd293aa 🔖 updated documentation 2016-12-16 21:34:37 +01:00
Niels Lohmann
a507b9b46a 🔖 updated documentation 2016-12-16 21:25:20 +01:00
Niels Lohmann
36dc786106 🔖 updated Changelog 2016-12-16 21:09:14 +01:00
Niels Lohmann
706be50596 📝 updated number of tests 2016-12-16 20:54:43 +01:00
Niels Lohmann
303e873ae8 🔖 bumped version to 2.0.9 2016-12-16 20:45:46 +01:00
Niels Lohmann
f6f7fed99a 🚨 removed some warnings 2016-12-16 18:57:19 +01:00
Niels Lohmann
f24e4f680e 🎨 cleanup after PR #395 2016-12-14 22:30:09 +01:00
Niels Lohmann
fe00b368ae 🔀 merge pull request #395 from Bosswestfalen/develop
Replace class iterator and const_iterator by using a single template class to reduce code.
2016-12-14 21:56:43 +01:00
Niels Lohmann
2f94c30bad added a regression test for #380 / #390 2016-12-13 21:46:07 +01:00
Niels Lohmann
4e2fb1a533 Merge pull request #390 from qwename/integer-overflow
🔀 fix issue #380: Signed integer overflow check
2016-12-13 21:26:53 +01:00
Niels Lohmann
dfafd2c259 👷 can't get clang sanitizer to work #394
See https://travis-ci.org/nlohmann/json/jobs/183684093 for a failing
build.
2016-12-13 21:23:59 +01:00
Bosswestfalen
92e28c3153 added missing changes in json.hpp.re2c 2016-12-13 20:30:56 +01:00
Niels Lohmann
c3fac19692 👷 another try for sanitizers #394 2016-12-13 19:41:36 +01:00
Niels Lohmann
3f089cab2b 👷 moved instructed build to "before_script" #394 2016-12-13 18:24:16 +01:00
Niels Lohmann
9b5411db57 👷 clang 3.9.0 is not working #394 2016-12-13 17:55:41 +01:00
Niels Lohmann
f5d4a9c4eb 👷 added Clang 3.9.0 and sanitizer build #394 2016-12-13 17:51:46 +01:00
Yixin Zhang
703d4baf8b Fixed conversion warnings
Use static_cast on digit.
2016-12-12 21:12:08 -05:00
Yixin Zhang
bd6422f583 Ran make pretty 2016-12-12 21:12:08 -05:00
Yixin Zhang
1e981115c9 Fix issue #380: Signed integer overflow check
Instead of checking something like `x * y + z > max` where `x * y` can
overflow, check for `x > (max - z) / y` instead.
2016-12-12 21:12:08 -05:00
Alex Astashyn
6fba52b6da Merged upstream/develop into feature/locale_independent_str_to_num 2016-12-12 20:27:15 -05:00
Alex Astashyn
5cad2006eb Tweaked check for preserved sign; added LCOV_EXCL_LINE 2016-12-12 20:15:57 -05:00
Alex Astashyn
65b9b0c429 Disabling snprintf pre-check, since can't get locale-specific behavior to manifest in AppVeyor 2016-12-12 19:50:21 -05:00
Alex Astashyn
0f8de48ddb Disabling strtod pre-check, since can't get locale-specific behavior to manifest in AppVeyor 2016-12-12 19:48:14 -05:00
Alex Astashyn
cd0b651d43 Tweaked check for preserved sign; added LCOV_EXCL_LINE 2016-12-12 19:46:47 -05:00
Niels Lohmann
79fa8b2f41 🚑 fix to address #389 2016-12-12 23:19:43 +01:00
Bosswestfalen
dd3f4f9b92 Replaced class iterator and class const_iterator with aliases of template <typename U> iter_impl. iter_impl has operator const_iterator to create an const_iterator from an iterator. 2016-12-12 19:26:45 +01:00
Niels Lohmann
447e01427d 🚨 fixed some warnings 2016-12-12 18:21:17 +01:00
Niels Lohmann
b8776e8613 🚑 fix for #393 2016-12-12 17:39:56 +01:00
Niels Lohmann
f6c21a1f20 📝 added note to example files 2016-12-12 08:25:08 +01:00
Niels Lohmann
5402458ff5 🚑 fixed an AddressSanitizer warning 2016-12-12 08:13:26 +01:00
Niels Lohmann
a25d570040 📝 added TOC to README #383 2016-12-11 19:42:36 +01:00
Niels Lohmann
ea7b40687b 📝 updated FAQ of the contribution guidelines #382 2016-12-11 16:36:39 +01:00
Niels Lohmann
b2991950a5 📝 added not wrt re2c version #390 2016-12-11 16:21:53 +01:00
Niels Lohmann
e906933f39 🔀 Merge branch 'feature/messagepack' into develop 2016-12-11 16:11:59 +01:00
Niels Lohmann
a59eb4868a 🔀 Merge branch 'develop' into feature/messagepack 2016-12-11 16:11:43 +01:00
Niels Lohmann
a9d7d315a5 📝 cleanup after #391 2016-12-11 16:06:52 +01:00
Niels Lohmann
446019aefd 🔀 merge pull request #391 from jaredgrubb/jgrubb-clang-doc-warning
Clang: quiet a warning
2016-12-11 16:04:27 +01:00
Niels Lohmann
6fa4f96ba3 📝 fixed two documentation warnings 2016-12-11 16:03:23 +01:00
Niels Lohmann
dc6fc3e079 📝 clean up and added documentation for #358 2016-12-11 13:36:08 +01:00
Niels Lohmann
fdce38fa79 fixed a test case 2016-12-11 00:39:26 +01:00
Niels Lohmann
e8c903294f more test cases for CBOR and msgpack 2016-12-11 00:05:29 +01:00
Niels Lohmann
41673e8fed 🐛 fixed CBOR code and added test cases 2016-12-10 23:12:57 +01:00
Jared Grubb
98d6e6e523 Clang: quiet a warning 2016-12-10 13:19:56 -08:00
Niels Lohmann
7e5d6af5c1 🔨 refactored msgpack code 2016-12-10 21:30:18 +01:00
Niels Lohmann
f1b95d78f9 🔨 refactored CBOR code to a switch 2016-12-10 19:29:45 +01:00
Niels Lohmann
d99c230f51 implemented indefinite-length CBOR types (#387) 2016-12-10 18:32:56 +01:00
Alex Astashyn
01930357f7 Tweaking unit test, as digits grouping is failing to be invoked in CI 2016-12-08 22:39:38 -05:00
Alex Astashyn
343c9f9baa Addressing compiler warnings 2016-12-08 22:36:18 -05:00
Alex Astashyn
1c029b97c0 Still trying to invoke locale-specific behavior in CI 2016-12-08 22:13:05 -05:00
Alex Astashyn
38499e84fc Removed unused struct; fixed comments 2016-12-08 21:38:14 -05:00
Niels Lohmann
6b84c4155c 🔨 refactored get_from_vector function
Snippet from http://stackoverflow.com/a/41031865/266378
2016-12-08 09:37:23 +01:00
Alex Astashyn
50f0484ad5 Added unit test for issue #378 2016-12-07 20:23:25 -05:00
Alex Astashyn
27d9740ad6 Tweaks to unit-test for issue #379 2016-12-07 19:55:07 -05:00
Alex Astashyn
0a4a6a8399 Refactored to avoid using exceptions, as there are plans to support exceptionless mode 2016-12-07 19:53:27 -05:00
Niels Lohmann
81a4272444 more test cases for CBOR 2016-12-07 23:14:37 +01:00
Niels Lohmann
3a0f5398a2 more CBOR test cases 2016-12-07 22:50:10 +01:00
Niels Lohmann
b7e0c12966 CBOR support for half-precision floats 2016-12-07 21:43:59 +01:00
Niels Lohmann
17c9b17a7e test cases from RFC 7049 #384 2016-12-07 21:25:22 +01:00
Niels Lohmann
aab9bbbb93 🐛 fix for CBOR (small integers) 2016-12-07 21:24:42 +01:00
Niels Lohmann
de289ea336 💚 another approach to the AppVeyor error 2016-12-07 19:15:05 +01:00
Niels Lohmann
81c43dca6a 💚 more AppVeyor fixes 2016-12-07 16:51:15 +01:00
Niels Lohmann
3f14a09e73 💚 another try to fix the AppVeyor build 2016-12-07 16:43:55 +01:00
Niels Lohmann
74571d531c 💚 still fixing the AppVeyor error 2016-12-07 16:34:02 +01:00
Niels Lohmann
2c7946f2bc 💚 hopefully fixed an error on AppVeyor 2016-12-07 16:21:22 +01:00
Niels Lohmann
8f6bfe5b32 🔨 refactored function to get numbers from byte vector 2016-12-07 14:47:06 +01:00
Niels Lohmann
474da6b28f :white_check_mark: more msgpack test cases 2016-12-07 13:47:08 +01:00
Niels Lohmann
be973e52bb more msgpack test cases 2016-12-07 09:19:46 +01:00
Niels Lohmann
a1693bfe48 Merge branch 'develop' into feature/messagepack 2016-12-07 08:39:57 +01:00
Alex Astashyn
6774457733 Trying to coerce setlocale to make snprintf use commas as delimiter some more 2016-12-06 22:59:12 -05:00
Alex Astashyn
d169598c6c simplified code a bit based on @gregmarr's suggestions 2016-12-06 22:20:48 -05:00
Alex Astashyn
d2e9ce270a Trying to coerce setlocale to make snprintf use commas as delimiter; the behavior appears to be compiler/platform-specific 2016-12-06 22:18:20 -05:00
Alex Astashyn
6e8da7d8c4 Added unit-test for issue #379 (locale-independent str-to-num) 2016-12-06 19:45:48 -05:00
Alex Astashyn
7a081244a5 Refactored preprocessing with a lambda instead of do{...}while(0) 2016-12-06 19:41:31 -05:00
Alex Astashyn
0c87d5d6b3 Refactored preprocessing with a lambda instead of do{...}while(0) 2016-12-06 19:41:05 -05:00
Alex Astashyn
d643360575 Bugfix: when working with C formatting functions we need to query C locales (localeconv) rather than std::locale 2016-12-06 00:43:12 -05:00
Alex Astashyn
738d462955 Bugfix: when working with C formatting functions we need to query C locales (localeconv) rather than std::locale 2016-12-06 00:23:58 -05:00
Alex Astashyn
82b82fd487 Addressing msvc-specific compilation issues. 2016-12-05 20:33:28 -05:00
Alex Astashyn
509447b4d5 Small bufix related to creation of fmt string for snprintf 2016-12-05 19:03:39 -05:00
Alex Astashyn
e41a956782 Alternative handling of integer types relying on strto[u]ll 2016-12-04 13:23:39 -05:00
Alex Astashyn
2197856395 Fixed suffixing .0 and modified the unit tests accordingly 2016-12-04 01:38:23 -05:00
Alex Astashyn
21cae35930 Added locale-independent numtostr 2016-12-04 01:27:22 -05:00
Alex Astashyn
c75efedc6e stylistic changes 2016-12-03 23:19:43 -05:00
Alex Astashyn
4eafaab816 Improved overflow detection; removed debugging output statements. 2016-12-03 22:54:36 -05:00
Alex Astashyn
6b78b5c2be Added strtonum for locale-independent number parsing 2016-12-03 19:05:09 -05:00
Niels Lohmann
f9a19af7a8 Merge branch 'develop' into coverity_scan 2016-12-02 20:30:20 +01:00
Niels Lohmann
bc28942101 🔖 Merge branch 'release/2.0.8' into develop 2016-12-02 20:07:43 +01:00
Niels Lohmann
44c0f811b1 🔖 version 2.0.8 2016-12-02 20:05:53 +01:00
Niels Lohmann
6c24caf282 📝 updated ChangeLog 2016-12-02 19:04:36 +01:00
Niels Lohmann
4adb8a81bf 📝 version bump 2016-12-02 18:39:35 +01:00
Niels Lohmann
60b7299fe1 📝 updated README 2016-12-02 18:02:38 +01:00
Niels Lohmann
8f563a5f81 Merge branch 'feature/emplace' into develop 2016-12-01 21:22:23 +01:00
Niels Lohmann
5c811b91f1 Merge branch 'develop' into feature/emplace 2016-12-01 21:17:40 +01:00
Niels Lohmann
ba3c5e1a25 more test cases 2016-11-29 09:49:05 +01:00
Niels Lohmann
c46b4ea990 more test cases 2016-11-29 08:37:27 +01:00
Niels Lohmann
e717492019 Merge branch 'feature/issue365' into develop 2016-11-29 07:46:14 +01:00
Niels Lohmann
bd252b2a09 Merge branch 'develop' into feature/issue365 2016-11-28 23:24:52 +01:00
Niels Lohmann
50f647c866 Merge branch 'develop' into feature/messagepack 2016-11-28 23:24:35 +01:00
Niels Lohmann
7b6bd585c1 Merge branch 'develop' into feature/emplace 2016-11-28 23:23:56 +01:00
Niels Lohmann
d563c21afe 📝 update documentation of Travis builders 2016-11-28 23:23:45 +01:00
Niels Lohmann
ee0f23fdc6 🚧 bug fixes and more tests 2016-11-28 23:20:03 +01:00
Niels Lohmann
286025497f 👷 removed retired images (https://blog.travis-ci.com/2016-11-17-retiring-some-osx-images/) 2016-11-28 22:16:33 +01:00
Niels Lohmann
aeb4f87a27 added return value for emplace (#349) 2016-11-28 18:33:46 +01:00
Niels Lohmann
6ecff31b7f Merge branch 'develop' into feature/emplace 2016-11-28 18:00:10 +01:00
Niels Lohmann
bc238124ee 🚧 further simplifications 2016-11-27 21:42:21 +01:00
Niels Lohmann
4c232fe12b 👷 added precondition for individual tests 2016-11-27 19:11:58 +01:00
Niels Lohmann
a820d688eb 🔨 refactored number-to-vector calls 2016-11-27 19:11:32 +01:00
Niels Lohmann
56843eb7ba Merge branch 'feature/individual_tests' into feature/messagepack 2016-11-27 18:28:23 +01:00
Niels Lohmann
93589e630c CBOR roundtrip tests 2016-11-27 17:47:56 +01:00
Niels Lohmann
2477b09cb9 🐛 Clang 3.9.0 seems to not work right now 2016-11-27 17:29:19 +01:00
Niels Lohmann
f860f323be 🚧 falling back to single unit test for coveralls 2016-11-27 17:09:05 +01:00
Niels Lohmann
71c1232e32 🐛 fixed YAML 2016-11-27 16:46:33 +01:00
Niels Lohmann
36c79113fb 🚧 fixing coveralls and valgrind targets 2016-11-27 16:45:24 +01:00
Niels Lohmann
e1f98fbfc0 🚧 splitting tests into several binaries 2016-11-27 16:19:26 +01:00
Niels Lohmann
a73f43a7a2 🚧 CBOR support (#358) 2016-11-27 00:10:04 +01:00
Niels Lohmann
eef408e5fb tests for CBOR 2016-11-27 00:09:24 +01:00
Niels Lohmann
87e088990b Merge branch 'develop' into feature/messagepack 2016-11-26 18:17:18 +01:00
Niels Lohmann
a8522f391a Merge branch 'develop' into feature/issue365 2016-11-26 12:45:50 +01:00
Niels Lohmann
2773038cf9 added improvements (#365) 2016-11-26 12:43:23 +01:00
Niels Lohmann
a791af30b4 Merge branch 'feature/filenotfound' into develop 2016-11-25 17:39:38 +01:00
Niels Lohmann
1ed510c232 Merge branch 'develop' into feature/filenotfound 2016-11-25 17:39:24 +01:00
Niels Lohmann
f194db9aa6 added assertion for warning from #368 2016-11-24 22:07:35 +01:00
Niels Lohmann
c39c36e6ad 💄 fixed indentation 2016-11-24 22:05:29 +01:00
Niels Lohmann
472d0045ba 📝 updating README after fixing #299 2016-11-24 21:56:21 +01:00
Niels Lohmann
1407bbf94c 💄 fixed indentation 2016-11-24 21:54:05 +01:00
Niels Lohmann
8014637ad1 added a test for EOF error (#367) 2016-11-24 21:53:41 +01:00
Niels Lohmann
dfc49e7afe 🐛 fixed a bug if parser was called with a stream at EOF (#367) 2016-11-24 21:45:10 +01:00
Niels Lohmann
2819b555c8 Merge branch 'develop' into coverity_scan 2016-11-24 20:01:55 +01:00
Niels Lohmann
4bd3b1b0ef Merge branch 'develop' into feature/issue365 2016-11-24 18:25:00 +01:00
Niels Lohmann
e3450cac72 📈 removing more variance of the benchmarks 2016-11-24 18:24:26 +01:00
Niels Lohmann
c3a610d32a 🔧 ignoring Clion files 2016-11-24 17:45:01 +01:00
Niels Lohmann
739f8eefb7 Merge branch 'develop' into coverity_scan 2016-11-24 17:26:11 +01:00
Niels Lohmann
25548f85c9 👷 trying Coverity with Clang 3.6 (#299) 2016-11-24 17:25:05 +01:00
Niels Lohmann
4bb41d065b 🐛 parsing erroneous files yields an exception (#366) 2016-11-23 16:57:01 +01:00
Niels
5f4becb0f5 Merge branch 'develop' into feature/issue365 2016-11-23 08:48:54 +01:00
Niels
ed611119d9 📈 reducing benchmark variance (#365) 2016-11-23 08:47:40 +01:00
Niels
6cc2d58d69 🐛 hopefully fixing the crashes on Linux (#365) 2016-11-22 20:13:47 +01:00
Niels
f620d74919 added performance fixes (#365) 2016-11-22 07:26:11 +01:00
Niels
869f4c68d4 📝 updated thanks section 2016-11-22 07:25:40 +01:00
Niels
c34b41acd6 🐛 fixes crash in dump from static object (#359)
Merge branch 'feature/issue359' into develop
2016-11-22 06:57:58 +01:00
Niels
abce5c25bb 📝 cleaned comments and updated README 2016-11-21 23:38:17 +01:00
Niels
43dbe02d5b 🐛 fixing #359 2016-11-21 21:53:10 +01:00
Niels
edc81f3bc1 💚 restored test call 2016-11-16 22:49:25 +01:00
Niels
d362a07239 💚 moved sample.json to standard test suite to run it with Valgrind 2016-11-16 22:49:16 +01:00
Niels
a9744f3937 💚 is sample.json killing AppVeyor? 2016-11-16 22:08:21 +01:00
Niels
0c9ab9427f 💚 added verbose message to check AppVeyor build 2016-11-16 22:02:38 +01:00
Niels
05e916717b Merge branch 'develop' into feature/messagepack 2016-11-16 19:16:36 +01:00
Niels
693bfe439b Merge branch 'develop' into feature/emplace 2016-11-16 19:16:16 +01:00
Niels
0d72767b3e ⬆️ updated to Catch v1.5.8 2016-11-16 19:15:54 +01:00
Niels
56667af823 🎨 stating the name of the library in the license 2016-11-16 19:08:25 +01:00
Niels
0a908ce8e2 Merge branch 'develop' into feature/messagepack 2016-11-16 09:04:37 +01:00
Niels
b0f896558f Merge branch 'develop' into feature/emplace 2016-11-16 09:04:25 +01:00
Niels
425b9834a8 🐛 removed the wrong compiler 2016-11-16 08:25:08 +01:00
Niels
56671a88c6 🍎 removed Xcode 8.0 due to repeated problems 2016-11-16 08:01:48 +01:00
Niels
5316f0fff2 🍎 added Xcode 8.1 build for travis 2016-11-16 06:42:26 +01:00
Niels
1be73b903e proposal for emplace/emplace_back (#349) 2016-11-11 19:29:14 +01:00
Niels
d1e73ce954 hid an expensive test case 2016-11-11 17:31:37 +01:00
Niels
543745a10e starting to integrate MessagePack (#358) 2016-11-11 17:11:13 +01:00
Niels
9ca00e4880 readded missing header 2016-11-03 07:27:32 +01:00
Niels
e385417047 documented and cleaned up headers (#314) 2016-11-02 21:27:19 +01:00
Niels
6d2b5e3771 Merge branch 'release/2.0.7' into develop 2016-11-02 20:52:42 +01:00
Niels
700977d73e version bump 2016-11-02 20:52:15 +01:00
Niels
79015b9d0a Merge branch 'feature/jsontestsuite' into develop 2016-11-02 17:03:17 +01:00
Niels
3716a2fbe8 Merge branch 'develop' into feature/jsontestsuite 2016-11-02 17:03:12 +01:00
Niels
737d43724f Merge branch 'feature/issue329' into develop 2016-11-02 16:59:23 +01:00
Niels
59c8343851 cleanup 2016-11-02 15:44:46 +01:00
Niels
94c16b2c31 fixed coverage 2016-11-01 17:01:04 +01:00
Niels
8f70525374 more test coverage 2016-10-30 17:46:00 +01:00
Niels
7adccde714 improved coverage and updated README 2016-10-30 17:10:11 +01:00
Niels
8d1e65f297 evaluated i-tests (#344) 2016-10-30 16:07:17 +01:00
Niels
7b4e6cf705 added implementation-specific tests (#344) 2016-10-30 12:08:29 +01:00
Niels
a8136c578a fixed BOM handling #344 2016-10-29 21:08:30 +02:00
Niels
b820bb3b1f fixed a lot of unicode errors (#344)
BOMs currently yield an error.
2016-10-29 19:35:17 +02:00
Niels
b03bbe724d added n test cases (#344) 2016-10-29 14:02:33 +02:00
Niels
7da182472d Merge branch 'develop' into feature/jsontestsuite 2016-10-29 13:37:17 +02:00
Niels
42ea4fb751 fixed a bug for short input files (#344)
For input files with less than 5 bytes, the parser had a bug so that
refilling the input buffer led to erasing it.
2016-10-29 13:32:36 +02:00
Niels
2fdba9de19 added "y" cases 2016-10-26 23:45:11 +02:00
Niels
a2808322c6 add test files from https://github.com/nst/JSONTestSuite 2016-10-26 18:57:56 +02:00
Niels Lohmann
a29fcae409 fixed Cmake link 2016-10-26 09:20:40 +02:00
Niels
3ebe28970a small fixes 2016-10-23 17:25:07 +02:00
Niels
79d9fdc016 user-defined string literals exploit string length (#340) 2016-10-22 18:57:58 +02:00
Niels
e310850353 cleanup after #336 2016-10-16 23:46:24 +02:00
Niels Lohmann
8057782bb8 Merge pull request #336 from seeekr/patch-1
fix minor grammar/style issue in README.md
2016-10-16 23:40:17 +02:00
Denis Andrejew
cb2d41e3a0 fix minor grammar/style issue in README.md 2016-10-16 02:46:43 +02:00
Niels
542a48a16a Merge branch 'release/2.0.6' into develop 2016-10-15 16:48:08 +02:00
Niels
606098f45d release 2.0.6 2016-10-15 16:47:45 +02:00
Niels
d91067220f added missing overflow check for #329 2016-10-13 21:00:48 +02:00
Niels
67b9f1936d cleanup after closing #324 2016-10-12 22:05:45 +02:00
Niels Lohmann
bb9d87ad55 Merge pull request #324 from vpetrigo/has_mapped_improve
make has_mapped_type struct friendly
2016-10-12 21:59:56 +02:00
Niels
e7a60d8961 Merge branch 'feature/issue323' into develop 2016-10-12 21:21:59 +02:00
Niels
470197bd0b improve test coverage 2016-10-10 21:58:31 +02:00
Niels
d3e7f9da67 code cleanup for #323 2016-10-10 20:38:50 +02:00
Niels
97280bbcfc added missing header 2016-10-09 16:32:01 +02:00
Vladimir Petrigo
e9fde3e116 make has_mapped_type struct friendly 2016-10-08 16:50:23 +03:00
Niels
54bf5f20e9 adjusted README 2016-10-08 14:33:10 +02:00
Niels
2fa8ea0f74 started fixing #323 2016-10-08 14:27:28 +02:00
Niels
a0ef5a194c addressed #319, #321, and #318 2016-10-06 23:27:43 +02:00
Niels Lohmann
04b11d78ff Merge pull request #318 from ChristophJud/include_dir_relocation
Include dir relocation
2016-10-06 22:35:36 +02:00
Niels Lohmann
8173c370f6 Merge pull request #321 from vasild/develop
Fix usage examples' comments for std::multiset
2016-10-06 22:33:58 +02:00
Niels
b6550b35c3 fix after #313 2016-10-04 18:20:36 +02:00
Vasil Dimov
b5128b1610 Fix usage examples' comments for std::multiset 2016-10-04 18:53:44 +03:00
Niels Lohmann
963efb1f09 Merge pull request #313 from 5tefan/develop
trivial documentation fix
2016-10-02 11:29:49 +02:00
Niels
d6005e59a5 added fuzzing results 2016-10-02 11:23:47 +02:00
Christoph Jud
e1b6a23049 relocation of install-include directory for other packages 2016-09-26 12:15:03 +02:00
Stefan Codrescu
be61091401 trivial documentation fix 2016-09-16 18:15:36 -06:00
Niels
e4366688f7 v2.0.5 2016-09-14 23:42:12 +02:00
Niels
5dfd2c9bdf Merge branch 'release/2.0.5' into develop 2016-09-14 23:07:14 +02:00
Niels
5879eb0be3 Merge branch 'release/2.0.5' 2016-09-14 23:06:53 +02:00
Niels
3d104f1d43 version bump 2016-09-14 23:06:39 +02:00
Niels
6bbcdc1ec5 fixes #310 2016-09-14 22:48:12 +02:00
Niels
7b6cba23f3 results for #307 2016-09-12 21:23:12 +02:00
Niels
24c588cd25 Merge branch 'release/2.0.4' into develop 2016-09-11 23:37:30 +02:00
Niels
f209be1142 Merge branch 'release/2.0.4' 2016-09-11 23:37:11 +02:00
Niels
768d66560e version bump 2016-09-11 23:36:59 +02:00
Niels
15925469c6 Travis updated their Xcode 2016-09-11 22:50:40 +02:00
Niels
f922426ec3 fixed #304 2016-09-11 22:40:51 +02:00
Niels
2daab5a4c2 fixed #306 2016-09-11 22:30:08 +02:00
Niels
8ea0ee502d clang 3.9.0 is not working yet 2016-09-03 13:08:17 +02:00
Niels
fa0299f03a moved cmake into clang 2016-09-03 12:30:10 +02:00
Niels
36745ed296 install from tarball 2016-09-03 10:34:52 +02:00
Niels
f0455b401d forgot sh call 2016-09-03 09:44:10 +02:00
Niels
e0d809312b the cmake in apt is too old 2016-09-03 09:17:30 +02:00
Niels
bfd6678800 clang 3.9.0 needs a newer cmake 2016-09-03 08:47:07 +02:00
Niels
9639f0dfb3 Clang 3.9.0 has been released 2016-09-03 00:37:45 +02:00
Niels
625370a1ad Merge branch 'develop' 2016-09-02 16:05:38 +02:00
Niels
357baeff5a release 2.0.3 2016-09-01 08:07:52 +02:00
Niels
42be2edd4c fixed test coverage 2016-09-01 00:29:42 +02:00
Niels
c8d01fa7b9 Merge branch 'release/2.0.3' into develop 2016-08-31 21:27:50 +02:00
Niels
2c82f25272 Merge branch 'release/2.0.3' 2016-08-31 21:27:32 +02:00
Niels
df9fd6237e release 2.0.3 2016-08-31 21:27:23 +02:00
Niels
776880bc49 Merge branch 'feature/iterator_range_parsing' into develop 2016-08-31 20:23:24 +02:00
Niels
740b66f225 cleanup 2016-08-31 20:23:21 +02:00
Niels
58cbf4b3ef added another test case 2016-08-31 18:23:46 +02:00
Niels
ae7aaed4ac Merge branch 'develop' into feature/iterator_range_parsing 2016-08-31 18:07:18 +02:00
Niels
442058f8ed interface cleanup 2016-08-31 17:07:35 +02:00
Niels
afba1d3fcb forgot to run re2c 2016-08-30 23:51:14 +02:00
Niels
941714c99c template changes did not work with MSVC 2016-08-30 23:49:06 +02:00
Niels
a485aa8d27 cleanup and improvement of branch coverage 2016-08-30 23:44:15 +02:00
Niels
6e6e1c9b1f implemented idea from #290 2016-08-30 18:26:07 +02:00
Niels
f76f9efe58 Merge branch 'develop' into feature/iterator_range_parsing 2016-08-30 18:20:13 +02:00
Niels Lohmann
463ffb21bc Merge pull request #300 from t-b/fix_warning_in_test_case
unit-constructor1.cpp: Fix floating point truncation warning
2016-08-29 22:52:18 +02:00
Niels
29c5f32d42 fixed performance degradation (#272) 2016-08-29 22:36:33 +02:00
Thomas Braun
e0ff1a837c unit-constructor1.cpp: Fix floating point truncation warning 2016-08-25 00:24:33 +02:00
Niels Lohmann
87dea32e81 using AppVeyor badge for develop branch 2016-08-24 21:31:11 +02:00
Niels Lohmann
bd3bd37e96 removed coverity badge (build is broken, see #299) 2016-08-24 21:29:28 +02:00
Niels
04c6c886eb another experiment 2016-08-24 21:02:33 +02:00
Niels Lohmann
8b833c452a experiment: changed order of parse functions 2016-08-24 07:12:56 +02:00
Niels
1d66ab9f7a fixed lexer issue which required null byte at the end of contiguous storage containers #290 2016-08-23 22:38:05 +02:00
Niels
a79d634ccb integrated proposals for #290 2016-08-22 21:40:07 +02:00
Niels
6d1254baba Merge branch 'develop' into feature/iterator_range_parsing 2016-08-22 20:54:55 +02:00
Niels
b688119aa4 reverted .travis file 2016-08-22 20:54:32 +02:00
Niels
29a4ef6c5c no execution for special cases 2016-08-22 20:50:12 +02:00
Niels
71af209ea9 fix for YAML file 2016-08-22 20:44:36 +02:00
Niels
79fd4dfbd8 do not build for special cases 2016-08-22 20:40:25 +02:00
Niels
8fbf635dd3 Merge branch 'develop' into coverity_scan 2016-08-21 23:20:05 +02:00
Niels
cda84ba323 Merge branch 'develop' into feature/iterator_range_parsing 2016-08-21 23:15:27 +02:00
Niels
034244a291 Merge branch 'feature/coverage' into develop 2016-08-21 22:48:02 +02:00
Niels
1e896eb91e improved code coverage 2016-08-21 22:38:56 +02:00
Niels
94331a355d removed LCOV_EXCL_LINE 2016-08-21 21:50:13 +02:00
Niels
aa7f5ad8b1 minor changes 2016-08-21 21:48:15 +02:00
Niels
585a39a235 improved branch coverage 2016-08-21 14:39:54 +02:00
Niels
b4571360df more on #290 2016-08-21 12:35:40 +02:00
Niels
eef8059003 allowing parsing from contiguous containers 2016-08-20 20:29:33 +02:00
Niels
6f3554f040 Merge branch 'develop' into feature/iterator_range_parsing 2016-08-20 18:51:11 +02:00
Niels
0cf7ebaa57 mentioning the CII 2016-08-18 18:43:27 +02:00
Niels
d2564c6100 added cppcheck target for travis 2016-08-18 18:29:19 +02:00
Niels
039cedaf8e changes to address #295 2016-08-17 23:14:28 +02:00
Niels
628a5eae50 reset build file 2016-08-17 22:33:26 +02:00
Niels
f40f81c87e forgot a semicolon 2016-08-17 21:44:53 +02:00
Niels
c0922c7aac /Wall 2016-08-17 21:43:28 +02:00
Niels
35f22e8596 checking MSVC compiler flags 2016-08-17 21:38:19 +02:00
Niels
a78eaa27b5 fixed unit tests 2016-08-17 21:31:59 +02:00
Niels
5e67f7af01 added a first version of a parser for #290 2016-08-15 22:44:14 +02:00
Niels
f791c5fd2e Merge branch 'develop' into feature/iterator_range_parsing 2016-08-15 21:46:02 +02:00
Niels
ca80a71c28 added notes from the CII Best Practices badge 2016-08-15 21:45:49 +02:00
Niels
dfc2c1abe5 added assertion for contiguous memory 2016-08-14 23:38:20 +02:00
Niels
92ee1d56eb cleanup 2016-08-14 21:59:41 +02:00
Niels
4871e39415 spell fix 2016-08-14 17:52:21 +02:00
Niels
7b42c973bd fix for MSVC 2016-08-14 17:34:58 +02:00
Niels
c9e5d56c9c fix for MSVC 2016-08-14 17:30:53 +02:00
Niels
01386b3977 cleanup 2016-08-14 17:23:15 +02:00
Niels
b76f5506d7 added a parser for continguous containers 2016-08-14 14:18:25 +02:00
Niels
03de590372 improved documentation for #289 2016-08-11 20:52:48 +02:00
Niels
37fdcd893d Merge branch 'feature/travis' into develop 2016-08-10 22:50:11 +02:00
Niels
46174879ef clean up 2016-08-10 22:41:09 +02:00
Niels
5db41313ba valgrind + full unit tests takes too long 2016-08-10 21:33:03 +02:00
Niels
1c4ca6d7b1 rubygems -> ruby 2016-08-10 21:00:36 +02:00
Niels
d02e67d4a9 coveralls with lcov 2016-08-10 20:56:26 +02:00
Niels
ce30526ee8 fixed Valgrind call 2016-08-10 19:35:27 +02:00
Niels
efe1d52629 added coverity, coveralls, and valgrind 2016-08-10 18:54:19 +02:00
Niels
a2e923de32 removed clang 3.5.x 2016-08-10 18:38:31 +02:00
Niels
4d90331718 a test 2016-08-10 17:42:33 +02:00
Niels
997bc5d1ab more clang versions 2016-08-10 16:56:05 +02:00
Niels
31963723d3 no directory change 2016-08-10 16:35:57 +02:00
Niels
407e8dbb8e fixed YAML error 2016-08-10 16:25:35 +02:00
Niels
b1c1fe9d39 added Clang 3.8 2016-08-10 16:22:53 +02:00
Niels
b76861dde5 commit to re-fix issue #195 2016-08-09 23:05:42 +02:00
Niels
6150ffb9dc more compilers 2016-08-09 22:49:08 +02:00
Niels
be05dbe618 moved sources 2016-08-09 22:33:31 +02:00
Niels
4b37082e36 more GCC versions 2016-08-09 22:29:01 +02:00
Niels
117fd59abd first try 2016-08-09 22:18:13 +02:00
Niels
ff612e0e39 reverted last commit 2016-08-09 18:33:06 +02:00
Niels
0b34ddd47a another try for coveralls 2016-08-09 18:19:54 +02:00
Niels
fa4fd334b2 accidentially deleted env 2016-08-05 08:56:58 +02:00
Niels
d3c6ed08d6 set build-root 2016-08-05 08:40:42 +02:00
Niels
00046f6ff1 fix for coveralls 2016-08-05 08:18:19 +02:00
Niels
38f562af2a reorganization into smaller test units 2016-08-04 22:51:08 +02:00
Niels
2d3374c8b2 removed codecov 2016-08-04 22:10:30 +02:00
Niels
bd75ef9f27 added check-fast flag 2016-08-04 22:05:16 +02:00
Niels
ff592c6d50 adjusted warning flags 2016-08-04 22:05:05 +02:00
Niels
91b6e223d9 adjusted capacity test cases 2016-08-04 22:04:55 +02:00
Niels
d80329034e split test suite in one file per test case 2016-08-04 21:55:47 +02:00
Niels
3944ecd470 chose correct flags 2016-08-04 07:40:04 +02:00
Niels
be5cf0e3ba forgot to pass CPPFLAGS 2016-08-04 07:33:44 +02:00
Niels
5541e6f6f9 split unit tests 2016-08-04 07:24:46 +02:00
Niels
263e6af48d switch off assertions for benchmarks 2016-07-31 23:03:14 +02:00
Niels
4444ef9396 version bump 2016-07-31 14:39:15 +02:00
Niels
c1a5a30285 Merge branch 'develop' into coverity_scan 2016-07-31 14:38:52 +02:00
Niels
9e67dc46fa Merge branch 'release/v2.0.2' into develop 2016-07-31 13:37:49 +02:00
Niels
3586767c05 Merge branch 'release/v2.0.2' 2016-07-31 13:37:26 +02:00
Niels
a05df038cd prepared release 2016-07-31 13:37:04 +02:00
Niels
9e51c9041e replaced individual assertions by a class invariant function 2016-07-30 18:02:41 +02:00
Niels
891918a30f cleanup and documentation 2016-07-30 16:12:10 +02:00
Niels
5405ae8601 added default value 2016-07-30 10:50:53 +02:00
Niels
b145e0c404 more cleanup 2016-07-29 23:47:16 +02:00
Niels
b2b68a0fa1 header + cleanup 2016-07-29 22:24:47 +02:00
Niels
161c74a92e some cleanup 2016-07-28 21:19:56 +02:00
Niels
6297631e22 reverted breaking changes 2016-07-27 21:40:15 +02:00
Niels
a7f8c47f68 cleaned up code
- removed unnecessary assertions
- simplified simple if/return patterns
2016-07-27 21:29:55 +02:00
Niels
bdaade91f5 fixed some errors in the README gif 2016-07-27 17:07:00 +02:00
Niels
5e88c6f254 more on travis 2016-07-25 23:41:16 +02:00
Niels
cc8102f0c4 used the wrong variable 2016-07-25 22:19:49 +02:00
Niels
fd7c7be851 fixed bash errors 2016-07-25 19:38:51 +02:00
Niels
148fed1e63 minor change 2016-07-25 18:06:59 +02:00
Niels
02fc3cddee test homebrew on OSX 2016-07-25 16:48:26 +02:00
Niels
a01ec918ac minor changes 2016-07-25 16:21:15 +02:00
Niels
d08e013dd0 improved documentation 2016-07-25 16:06:13 +02:00
Niels
369671f028 added more Unicode tests 2016-07-25 16:05:58 +02:00
Niels
dcea3a283c Merge branch 'feature/issue283' into develop (fixes #278) 2016-07-24 11:16:47 +02:00
Niels
84673b7de3 added test case from issue #283 2016-07-24 11:08:39 +02:00
Niels
e2aa2d2189 improved test coverage 2016-07-24 11:01:47 +02:00
Niels
75dbbc55cf started to implement #283 2016-07-23 09:59:09 +02:00
Niels
ddfe86cc49 fixed a bug that was found in the discussion of #274 2016-07-22 21:40:58 +02:00
Niels
51a3829680 reverted change to constexpr get_ref (does not work with GCC and MSVC) 2016-07-22 15:53:38 +02:00
Niels
4e7501e59a minor changes
- fixed a bug that did not discard strings with control characters
between 0x10 and 0x1f
- added termination proofs for two important loops
- made get_ref() constexpr
2016-07-22 15:34:45 +02:00
Niels
4c98c971b8 added benchmarks for numbers 2016-07-20 23:06:45 +02:00
Niels
5bab89fb22 Merge branch 'develop' into coverity_scan 2016-07-20 20:27:55 +02:00
Niels
1286d35767 make sure precision is reset on output streams during serialization 2016-07-20 20:07:45 +02:00
Niels
ea19be1736 Merge branch 'develop' into coverity_scan 2016-07-19 22:49:17 +02:00
Niels
cb145cfe71 updated Changelog 2016-07-19 22:43:56 +02:00
Niels
0f834056bb removed unused header 2016-07-19 22:17:43 +02:00
Niels
2478be807c avoid recursion in the scanner 2016-07-19 22:10:27 +02:00
Niels
b64367e2f7 fix for #279 2016-07-18 16:22:10 +02:00
Niels
7f4dd5d608 added header for int64_t and uint64_t (fixes #282) 2016-07-15 19:44:19 +02:00
Niels
8116413106 Merge pull request #279 from murinicanor/patch-1
let the makefile choose the correct sed
2016-07-10 00:32:32 +02:00
Muri Nicanor
01f9ee5fd7 let the makefile choose the correct sed 2016-07-09 20:02:41 +02:00
Niels
98d48ef0c2 fixed indentation 2016-07-04 00:04:22 +02:00
Niels
71d20db4fc Merge branch 'feature/improved_documentation' into develop
- improved documentation
2016-07-01 18:02:37 +02:00
Niels
c6d45c30d5 Merge branch 'feature/parser_performance' into develop
- improved parser performance by avoiding a copy of the result value
2016-07-01 17:44:27 +02:00
Niels
8f9f561742 Merge branch 'feature/detect_unsupported_compilers' into develop
- added error macros to exclude unsupported compilers
2016-07-01 17:42:36 +02:00
Niels
513fac589b Merge branch 'feature/algorithm_loops' into develop
- replaces some raw loops by std algorithms
- used std::advance where possible
2016-07-01 17:39:25 +02:00
Niels
bd7cd330cd fixed type_name() signature 2016-07-01 17:26:09 +02:00
Niels
28644bada0 removed std::out output from test cases 2016-07-01 17:25:56 +02:00
Niels
05ddfaf5cf Merge branch 'develop' into feature/improved_documentation 2016-07-01 17:01:02 +02:00
Niels
6e1347e68c fixes #270 2016-07-01 16:58:50 +02:00
Niels
26cab42c38 some minor improvements 2016-07-01 16:52:05 +02:00
Niels
814fb31d64 Merge pull request #275 from dtoma/develop
Update hexify to use array lookup instead of ternary (#270)
2016-07-01 16:51:35 +02:00
Niels
a5262c18e2 replaced a copy by a move to increase performance by 16-25% 2016-06-30 12:43:06 +02:00
dtoma
5c129c8981 Update hexify to use array lookup instead of ternary (#270) 2016-06-29 19:28:56 +08:00
Niels
52cbda8048 using std::advance where possible 2016-06-29 12:47:29 +02:00
Niels
a0609b2da3 fixed coverage bug 2016-06-29 09:53:48 +02:00
Niels
924f78119b math... 2016-06-29 09:34:14 +02:00
Niels
7cb8ee42d5 wrong GCC version 2016-06-29 09:22:28 +02:00
Niels
d456dec320 overlapping defines 2016-06-29 09:16:18 +02:00
Niels
fc7f4b8fba replace some raw loops with algorithms 2016-06-28 22:49:05 +02:00
Niels
dc479b3f9d check for unsupported compilers 2016-06-28 22:09:22 +02:00
Niels
7ffa07e3a3 update of ChangeLog 2016-06-28 21:46:53 +02:00
Niels
d2475f9010 bumped version number 2016-06-28 21:44:03 +02:00
Niels
8b39570009 Merge branch 'develop' 2016-06-28 21:40:23 +02:00
Niels
3d4c79922e Merge branch 'release/2.0.1' into develop 2016-06-28 21:38:59 +02:00
Niels
e29d6b5f41 Merge branch 'release/2.0.1' 2016-06-28 21:33:43 +02:00
Niels
026fe8041d adjusted Changelog 2016-06-28 21:33:34 +02:00
Niels
a73bda8147 fixed performance regression #272 2016-06-28 21:24:18 +02:00
Niels
6a108bb84b Merge branch 'feature/issue272' into develop 2016-06-28 21:19:36 +02:00
Niels
7214243d89 reset locale (for #272) 2016-06-28 19:18:23 +02:00
Niels
420659f187 addressing #272 2016-06-28 10:42:17 +02:00
Niels
360f0f3791 updated README and ChangeLog 2016-06-24 17:39:03 +02:00
Niels
c74b9ff4f7 another fix for the MSVC version 2016-06-24 17:15:54 +02:00
Niels
a61231ad29 Merge pull request #271 from thelostt/patch-1
fixed a tiny typo
2016-06-24 11:28:01 +02:00
Mário Feroldi
6aad67af23 fixed a tiny typo 2016-06-24 05:47:00 -03:00
Niels
0767290c26 off-by-one error in the documentation 2016-06-24 08:06:41 +02:00
Niels
ca2bbdb15b clarified MSV version 2016-06-24 07:39:08 +02:00
Niels
25ccf7f908 Merge branch 'release/2.0.0' 2016-06-24 00:46:36 +02:00
Niels
3c27678963 Merge branch 'develop' into coverity_scan 2016-06-24 00:28:10 +02:00
Niels
1c719561b0 update of documentation links 2016-06-24 00:14:27 +02:00
Niels
b3cf45c8f5 updated release information 2016-06-23 23:34:41 +02:00
Niels
6542ae5766 fixed re2c warnings 2016-06-23 22:49:48 +02:00
Niels
0e90bcb539 Merge branch 'develop' into coverity_scan 2016-06-23 18:28:29 +02:00
Niels
39a9cfcc12 updated README 2016-06-23 18:08:20 +02:00
Niels
f86fe57c18 Merge branch 'feature/undo-number-roundtrip' into develop 2016-06-23 18:00:06 +02:00
Niels
04a80a8f60 Merge branch 'develop' into feature/undo-number-roundtrip 2016-06-23 05:57:41 +02:00
Niels
3497fab3b5 cleanup 2016-06-23 05:55:48 +02:00
Niels
d14366c33e Merge branch 'feature/issue269' into develop 2016-06-23 00:05:01 +02:00
Niels
7cff6c8771 Merge branch 'develop' into feature/issue269
# Conflicts:
#	README.md
2016-06-23 00:04:55 +02:00
Niels
6f76c9237b overworked ChangeLog and README 2016-06-22 22:20:55 +02:00
Niels
ecf84dddb1 test case for #269 2016-06-22 20:40:15 +02:00
Niels
59e67e768f fix for previous commit 2016-06-22 20:09:06 +02:00
Niels
3f97a5d5ad a conceptual quick fix for #269 2016-06-22 20:05:44 +02:00
Niels
804160e659 Merge branch 'develop' into coverity_scan 2016-06-19 22:39:05 +02:00
Niels
15a314abea updated README 2016-06-19 22:38:54 +02:00
Niels
0865ec87d4 re-added GCC6 2016-06-19 22:20:02 +02:00
Niels
3fe654e827 fix for coverity 2016-06-19 22:12:56 +02:00
Niels
3948021b6c Merge branch 'develop' into coverity_scan 2016-06-19 22:07:16 +02:00
Niels
20e4b20528 fix SSL issue with coverity 2016-06-19 21:57:32 +02:00
Niels
550475b5e1 Merge branch 'develop' into coverity_scan 2016-06-19 18:33:46 +02:00
Niels
90b46868b5 Merge branch 'develop' into feature/undo-number-roundtrip 2016-06-19 18:27:07 +02:00
Niels
8c48ef1f73 updated to Catch v1.5.6 2016-06-19 18:25:43 +02:00
Niels
b47fdf88ee Merge branch 'develop' into feature/undo-number-roundtrip 2016-06-19 17:59:53 +02:00
Niels
4ff27b207e fixed two typos 2016-06-19 17:56:58 +02:00
Niels
ad7a419a03 removed roundtripping of floats (#230) 2016-06-19 17:13:13 +02:00
Niels
4e31a0e852 minor doc changes 2016-06-19 16:17:53 +02:00
Niels
039565b9f5 trying codecov 2016-06-18 14:33:29 +02:00
Niels
bb8c7b1f45 mentioning Homebrew's --HEAD parameter 2016-06-15 21:28:27 +02:00
Niels
1eced269e3 update after PR #266 2016-06-14 15:27:21 +02:00
Niels
9eb86e1e12 Merge pull request #266 from 06needhamt/Issue
Fix Issue #265
2016-06-14 15:24:49 +02:00
Tom Needham
fb90388af5 Fix Issue #265 2016-06-14 09:59:50 +01:00
Niels
39213bf34e Merge branch 'feature/issue260' into develop 2016-06-14 08:28:36 +02:00
Niels
44b210aa77 Merge branch 'develop' into feature/issue260 2016-06-14 08:23:09 +02:00
Niels
c744d59f2d adjusted README file to reality in Travis 2016-06-14 08:14:25 +02:00
Niels
947db6ffe3 added Xcode 8 beta 2016-06-14 08:02:29 +02:00
Niels
494cc15650 Merge branch 'develop' into feature/issue260 2016-06-07 12:13:03 +02:00
Niels
48f69f40e7 enough for today... 2016-06-07 12:04:57 +02:00
Niels
97648314a4 setting explicit path to compiler 2016-06-07 11:52:12 +02:00
Niels
439563eb04 export 2016-06-07 11:42:34 +02:00
Niels
19be324f87 ? 2016-06-07 11:38:56 +02:00
Niels
3f23e70598 another try 2016-06-07 11:36:03 +02:00
Niels
62f39c41ec another try 2016-06-07 11:29:37 +02:00
Niels
c425dc9e04 trying to install clang 2016-06-07 11:25:00 +02:00
Niels
a4058b88ec another test 2016-06-07 11:14:02 +02:00
Niels
ff8f196ca3 a test 2016-06-07 11:13:15 +02:00
Niels
31b24dd5c1 adding more Clang versions 2016-06-07 11:02:45 +02:00
Niels
cc5cad5b0b another try 2016-06-07 10:53:18 +02:00
Niels
1f04c0349a readded -lc++ 2016-06-07 10:03:18 +02:00
Niels
a97c998791 removed -lc++ 2016-06-07 09:50:43 +02:00
Niels
6d19bd1108 Revert "another try"
This reverts commit f63317dce3.
2016-06-07 09:49:11 +02:00
Niels
f63317dce3 another try 2016-06-07 09:34:46 +02:00
Niels
32cc6fefcc another try 2016-06-07 09:12:53 +02:00
Niels
fbbdcb19bc another try 2016-06-07 09:01:49 +02:00
Niels
dd10c89a3e another try 2016-06-07 08:53:36 +02:00
Niels
dd542aae7d another try 2016-06-07 08:40:25 +02:00
Niels
761880f5b7 CPATH does not work... 2016-06-07 08:32:56 +02:00
Niels
1826d12a22 added CPATH 2016-06-07 08:28:50 +02:00
Niels
dfc39b95ab clang does not work with travis right now 2016-06-07 07:54:00 +02:00
Niels
32f6682177 another try 2016-06-07 07:25:11 +02:00
Niels
f4ae8f8e2e another try 2016-06-07 07:21:17 +02:00
Niels
e772f06f0d another try 2016-06-07 07:14:54 +02:00
Niels
5173c16222 another try 2016-06-07 07:07:42 +02:00
Niels
744bae7fc4 trying to fix Travis 2016-06-07 07:00:31 +02:00
Niels
9e2dfd19e8 minor cleanup 2016-06-07 00:20:53 +02:00
Niels
b508d1f1c4 fix proposal for #260 2016-06-06 18:50:39 +02:00
Niels
d4ff1bbaec Merge branch 'develop' into coverity_scan 2016-05-29 14:56:36 +02:00
Niels
04e1e7b586 cleanup 2016-05-29 14:56:08 +02:00
Niels
5666bd0e2d Merge branch 'develop' into coverity_scan 2016-05-29 14:06:54 +02:00
Niels
aa8aa3ba9f overworked coverity stuffy 2016-05-29 14:06:43 +02:00
Niels
03db7b0dbb Merge branch 'develop' into coverity_scan 2016-05-29 13:32:48 +02:00
Niels
6bdb883b5c ignore build errors for coverity-scan 2016-05-29 13:32:36 +02:00
Niels
53603500ed Merge branch 'develop' into coverity_scan 2016-05-29 13:06:40 +02:00
Niels
c0b2c6ea5d removing beta-xcode6.3 for now 2016-05-29 13:06:27 +02:00
Niels
97ea5ae403 Merge branch 'develop' into coverity_scan 2016-05-29 12:57:30 +02:00
Niels
6fed416125 fixed used compiler 2016-05-29 12:57:09 +02:00
Niels
b26582c0e9 another try for coverity-scan 2016-05-29 12:29:46 +02:00
Niels
1cc77a5fe5 another try for coverity-scan 2016-05-29 12:15:13 +02:00
Niels
91dfc723be added coverity_scan 2016-05-29 12:07:20 +02:00
Niels
7bdfde4493 added a note about different NDKs (see #219) 2016-05-28 16:06:41 +02:00
Niels
71a7746ccb removed a line 2016-05-25 21:55:03 +02:00
Niels
a3f432b3dd added hint to Homebrew 2016-05-18 22:23:35 +02:00
Niels
25d60b7bab Merge pull request #247 from robertmrk/feature/cmake-cleanup
Define CMake/CTest tests
2016-05-18 22:20:45 +02:00
Niels
837617122a fixed #246 2016-05-18 22:17:08 +02:00
Robert Marki
639d63217e Define CMake/CTest tests
Instead of copying the test executable and the JSON files used by
the tests at install time, define CMake/CTest tests for running
the json_unit executable from any build directory with the project's
source directory as its working directory.

- call enable_testing in the main lists file to allow the definition
of tests
- remove install commands from the test directory's lists file
- define two tests
  - json_unit_default for running the default tests by executing
json_unit without any arguments
  - json_unit_all for running all the tests by executing json_unit
with the "*" argument
- update the AppVeyor configuration file to use the new testing method
2016-05-18 11:53:49 +02:00
Niels
0a393b8374 indentation cleanup 2016-05-12 07:34:36 +02:00
Niels
0e0ecb2c14 fixed a warning and update ChangeLog 2016-05-12 00:32:18 +02:00
Niels
fb06356856 thanks 2016-05-11 20:58:11 +02:00
Niels
888d022573 Merge pull request #242 from ChrisKitching/outOfTree
Out of tree builds and a few other miscellaneous CMake cleanups.
2016-05-11 20:52:45 +02:00
Niels
f1e61896fb fixed a shadow error 2016-05-11 18:43:12 +02:00
Niels
db5c9ec9ba fixed issue #239 (-Wconversion warnings) 2016-05-11 17:25:59 +02:00
Niels
91aa4c9def Merge branch 'develop' into feature/issue239 2016-05-11 17:23:01 +02:00
Chris Kitching
0e2f0c4edc Repair appveyor... Horrifyingly
It's sort of gnarly that it's still doing in-tree builds, but I
really, _really_ don't want to get any more friendly with CMake's
Visual Studio generator to work out how to make it stop doing it.

In-tree builds still work, after all, and the goal of this work is
to make out-of-tree builds work as well. Notional horrors like
this will have to wait ;)
2016-05-11 14:02:53 +01:00
Chris Kitching
527a69bb64 Install the test binary and test data. Fixes #241
The resulting install tree, when tests are enabled, looks like this:

```
.
├── cmake
│   ├── nlohmann_jsonConfig.cmake
│   ├── nlohmann_jsonConfigVersion.cmake
│   └── nlohmann_jsonTargets.cmake
├── include
│   └── nlohmann
│       └── json.hpp
└── test
    ├── bin
    │   └── json_unit
    └── data
        ├── json_nlohmann_tests
        │   ├── all_unicode.json
        │   └── bom.json
        ├── json.org
        │   ├── 1.json
        │   ├── ...
        ├── json_roundtrip
        │   ├── roundtrip01.json
        │   ├── roundtrip02.json
        │   └── ...
        ├── json_tests
        │   ├── fail10.json
        │   └── ...
        └── json_testsuite
            └── sample.json
```

It has the property that you can invoke the test binary from the
root of the install tree and the tests work correctly (you no
longer depend on the test binary being run inside the source
tree).

If tests are disabled, the entire `test/` subtree is omitted.
Notice how that yields exactly what you want for using this
library in other projects.

I do not believe I need to update travis due to this change, as the
evil Makefile continues to do in-tree builds. I expect I'll find
out soon enough.
2016-05-11 01:43:42 +01:00
Chris Kitching
af76508fe7 Introduce structure to the test/ directory
This introduces a clear separation between test data and test
binaries. Test data is moved into test/data, and the test binaries
move into test/src. A new CMake script specific to building the
tests is introduced in /test to slightly clean up the toplevel
one.

As well as tidying things up, this makes the next step trivial...
2016-05-11 01:30:08 +01:00
Chris Kitching
4e6aacda36 Use definitely-unique target/project name
There exist lots of json libraries, and project/target names must
be globally unique. If someone integrated with this library in a
particularly stupid way, using a generic name like "json" might
cause a problem.
2016-05-11 01:14:56 +01:00
Chris Kitching
b6becce8fb Don't use variable for the test target name
I'm not sure that using a variable for target names really helps
with clarity. Unlike paths, target names aren't really something
you change. In a sense, targets are themselves a sort of variable,
so having a variable to name a variable seems just a bit gnarly.
2016-05-11 01:12:56 +01:00
Chris Kitching
bf7b6d15c7 Unset execute bit on sample.json 2016-05-11 01:10:29 +01:00
Chris Kitching
6a98a6c964 Add CMake option to disable building the tests (Default builds) 2016-05-11 01:06:32 +01:00
Niels
9ecf83f630 working on #235 2016-05-08 20:28:20 +02:00
Niels
6d8e00ade8 another try to remove a warning 2016-05-08 17:17:17 +02:00
Niels
ac3036dc0f Merge branch 'develop' into feature/issue239 2016-05-08 17:07:08 +02:00
Niels
fadf286653 added test case for std::bad_alloc 2016-05-08 14:35:32 +02:00
Niels
85a30813c8 removed unnecessary code (numbers must not begin with "+") 2016-05-07 20:22:58 +02:00
Niels
688cd49bdc Merge branch 'feature/json-patch' into develop 2016-05-07 18:41:02 +02:00
Niels
c04275966f improved test coverage 2016-05-07 18:33:43 +02:00
Niels
9073b2ca39 hopefully removed some warnings 2016-04-30 16:22:27 +02:00
Niels
ea84a85b13 simplified flatten/unflatten examples 2016-04-30 10:39:03 +02:00
Niels
a21f8b0c77 added AppVeyor information 2016-04-30 01:21:35 +02:00
Niels
9170740f45 added documentation on Travis compilers 2016-04-30 01:01:41 +02:00
Niels
7c04bc3db6 added name call 2016-04-30 00:43:33 +02:00
Niels
be16d005e4 get compiler versions 2016-04-30 00:25:11 +02:00
Niels
f4ecceab19 cleanup 2016-04-30 00:12:19 +02:00
Niels
1d3b4dd158 added test cases 2016-04-30 00:03:47 +02:00
Niels
62f81a60d7 hopefully fixed a warning 2016-04-29 21:23:13 +02:00
Niels
82f5332cf4 Merge branch 'develop' into feature/json-patch 2016-04-29 20:50:34 +02:00
Niels
74544b42af removed MinGW compiler (too old) 2016-04-29 20:48:47 +02:00
Niels
c019088d3b wrong MinGW binary 2016-04-29 20:35:40 +02:00
Niels
b685737d53 added MinGW 2016-04-29 20:18:20 +02:00
Niels
ddc5442c91 cleanup 2016-04-29 20:09:41 +02:00
Niels
a07cdb14ec don't install valgrind for OSX 2016-04-29 20:01:11 +02:00
Niels
40abeb28d5 Valgrind only for Linux 2016-04-29 20:00:33 +02:00
Niels
68c50073a4 added OSX 2016-04-29 19:46:37 +02:00
Niels
ca604c5a2e trying Clang 3.9 2016-04-29 19:37:52 +02:00
Niels
86d7e3090f removed GCC 6, added Clang 3.5 2016-04-29 19:33:43 +02:00
Niels
e35805cf3a added GCC 6 and Clang 3.8 to Travis 2016-04-29 19:29:02 +02:00
Niels
86debab3b1 Merge branch 'develop' into feature/json-patch 2016-04-26 20:43:02 +02:00
Niels
9af8f7d094 update after #238 2016-04-26 20:38:01 +02:00
Niels
7dc07b75de Merge branch 'develop' into feature/json-patch 2016-04-26 20:32:24 +02:00
Niels
0f64761663 Merge pull request #238 from robertmrk/cmake-package
Implement additional integration options
2016-04-26 20:31:19 +02:00
Niels
5e0bf75d60 cleanup, test, and diff 2016-04-25 23:17:04 +02:00
Robert Marki
192a692034 Generate package config files in cmake's current binary directory
Generate the config files of the package in CMAKE_CURRENT_BINARY_DIR
instead of CMAKE_BINARY_DIR because the later will refer to the main
project's binary directory if the library is included in the project
using the add_subdirectory command.
2016-04-25 11:55:03 +02:00
Robert Marki
b1a2e9a715 Create an install target for the project
- define the project's version in the cmake listfile
- create a config and config version file for the cmake package
- install the json.hpp file and the package's targets, config and
config version files
2016-04-25 10:27:19 +02:00
Robert Marki
30e396043a Export library target and store build directory in package registry 2016-04-25 09:36:05 +02:00
Robert Marki
28f73ed406 Refactor CMake listfile to define an interface imported library
Define the library as an interface imported library so other targets
can use the library as a dependency and use the interface properties
of the library.
2016-04-24 19:56:20 +02:00
Niels
96cfe7463f fixed some warnings 2016-04-24 19:09:12 +02:00
Niels
8d4cf5ef8d oops 2016-04-24 19:04:10 +02:00
Niels
fb54e212b6 clean up and added tests 2016-04-24 19:03:33 +02:00
Niels
09e9f6dcd4 implemented "move" 2016-04-24 17:43:27 +02:00
Niels
855cf2307b extended "add" to cope with arrays 2016-04-24 16:51:06 +02:00
Niels
397ada22d3 implemented remove 2016-04-20 16:52:00 +02:00
Niels
fa03cf0c63 replace and copy 2016-04-20 15:41:33 +02:00
Niels
70fc5835cb started implementing JSON Patch (RFC 6902) 2016-04-18 22:41:36 +02:00
Niels
3ca1bfdd9d made a function static 2016-04-17 23:41:52 +02:00
Niels
f4107d0d9c updated documentation 2016-04-17 23:36:37 +02:00
Niels
9f8da4c650 Merge branch 'feature/json-pointer' into develop 2016-04-17 23:23:34 +02:00
Niels
08c97df420 added examples 2016-04-17 23:18:07 +02:00
Niels
1dee40a969 fixed test case 2016-04-17 22:34:39 +02:00
Niels
6268287940 improved documentation and test coverage 2016-04-17 22:08:21 +02:00
Niels
7034ae2486 improved test coverage 2016-04-17 19:12:12 +02:00
Niels
0835eb293f improved RFC compliance and code coverage 2016-04-17 18:54:54 +02:00
Niels
f883a04c87 more documentation 2016-04-17 18:18:49 +02:00
Niels
40e899a819 cleanup and documentation 2016-04-17 17:39:35 +02:00
Niels
f834965b44 implemented deflatten function 2016-04-16 20:45:40 +02:00
Niels
007359675b added a flatten function 2016-04-16 16:39:20 +02:00
Niels
3401954f5b cleaned up API 2016-04-16 14:02:14 +02:00
Niels
3a3e064287 Merge branch 'develop' into feature/json-pointer 2016-04-16 12:19:31 +02:00
Niels
76a5a776eb cleanup after #234 2016-04-16 12:19:10 +02:00
Niels
6f0053a254 Merge branch 'support-move-iterators' of https://github.com/robertmrk/json into develop 2016-04-16 12:12:16 +02:00
Niels
94af8abdff overworked reference token parsing 2016-04-13 23:23:54 +02:00
Niels
2cb925c186 adding support for escaped reference tokens 2016-04-13 17:41:19 +02:00
Robert Marki
2197f5f0a6 Make the indirection and dereference operators of iterator const
fixes #233
2016-04-13 13:49:53 +02:00
Niels
726051e9b7 very first draft of a JSON pointer API 2016-04-11 23:17:03 +02:00
Niels
507322e6f2 updated ChangeLog 2016-04-10 19:36:09 +02:00
Niels
15f8c848fa fixed typo and indentation 2016-04-10 18:23:43 +02:00
Niels
170b70f082 Merge pull request #232 from nlohmann/issue228
make serialization locale-independent (fixes #228)
2016-04-07 17:16:58 +02:00
Niels
a744c62696 made tests independent of "C" locale 2016-04-05 22:28:27 +02:00
Niels
0b60d970e9 make code independent of concrete locale 2016-04-05 22:12:12 +02:00
Niels
31bccc83b9 fixed locale problems 2016-04-05 21:55:51 +02:00
Niels
43ee70cef8 revert changes to master 2016-04-05 20:47:47 +02:00
Niels
44a8e9bf35 locale-independent dump 2016-04-03 16:33:30 +02:00
Niels
9c233be567 merged #201 2016-04-03 14:08:38 +02:00
Niels
04edafbddc Merge pull request #227 from kevin--/kevin--/noexcept_documentation
fixes #223 by updating README.md
2016-03-30 20:21:35 +02:00
Niels
1baa5a7350 fixed #225 2016-03-30 20:18:34 +02:00
Niels
0951a1f94c Merge pull request #222 from Teemperor/fixAndroid
Added missing cerrno header to fix ERANGE compile error on android
2016-03-30 20:12:55 +02:00
Niels
96443b0b97 added more thanks to the README file 2016-03-30 19:47:08 +02:00
Niels
27530c7840 better notes for Android (manually closes #215) 2016-03-30 19:42:54 +02:00
Niels
888635b749 cleanup after PR #212 and PR #226 2016-03-30 19:23:11 +02:00
Kevin Dixon
3df5337e79 fixes #223 by updating README.md 2016-03-29 21:41:46 -07:00
Niels
54d3cab568 Merge pull request #226 from lv-zheng/fix_int64
Use namespace std for int64_t and uint64_t
2016-03-29 10:35:24 +02:00
Lv Zheng
3e76e61b9c Use namespace std for int64_t and uint64_t
According to the c++11 standard, the declarations are within namespace
scope of the namespace `std'. Add `std::' to avoid unnecessary
requirement of implementations.
2016-03-28 18:11:12 +08:00
Niels
2f63e5fb45 added copyright information to files to make release more self-contained 2016-03-25 17:41:36 +01:00
Raphael Isemann
fbc25b080b Added missing cerrno header to fix ERANGE c-error on android 2016-03-10 08:46:26 +01:00
Niels
c6a6a024f7 fixes #214 2016-03-06 20:03:05 +01:00
Niels
10a884473e fixed #217 2016-03-04 07:30:08 +01:00
Niels
8ee3d24046 Merge pull request #218 from Annihil/master
Corrected readme
2016-03-04 07:26:27 +01:00
Annihil
78a020354d Corrected readme
Internally, the elements in a map are always sorted by its key following a specific strict weak ordering criterion indicated by its internal comparison object (of type Compare).
With string type, the default comparator is alphabetical order, and thus two come after three.
2016-03-02 02:01:40 +01:00
Niels
53879f9c99 cleanup 2016-02-21 08:17:11 +01:00
Niels
502cedf70b Merge pull request #213 from whackashoe/patch-1
Create PULL_REQUEST_TEMPLATE.md
2016-02-21 08:15:46 +01:00
Jett LaRue
df3ab06f2e Create PULL_REQUEST_TEMPLATE.md 2016-02-20 16:22:46 -06:00
Niels
f965c4c35b improved code coverage 2016-02-14 22:56:51 +01:00
Niels
d869b0a387 updated online documentation 2016-02-14 22:28:56 +01:00
Niels
3a92559fa9 cleanup 2016-02-14 22:24:45 +01:00
Niels
09654b3104 Merge pull request #208 from nlohmann/noexcept
fixed noexcept; added constexpr
2016-02-14 22:18:39 +01:00
Niels
f160f33fb5 update from master 2016-02-14 21:44:00 +01:00
Niels
7f4736b546 added serialization to fuzz testing 2016-02-14 21:36:56 +01:00
Niels
a3eecdc383 updated Catch to v1.3.4 2016-02-14 21:36:43 +01:00
Niels
153e105164 cleanup after #207 2016-02-14 18:38:29 +01:00
Niels
ec098ffcc2 Merge pull request #207 from msm-/afl-fuzz
add support for afl-fuzz testing
2016-02-14 17:24:54 +01:00
Niels
49dc2dff68 fixed error when compiled with Clang 2016-02-14 16:58:24 +01:00
Niels
836fdfedf2 fixed an error in MSVC 2016-02-14 16:53:32 +01:00
Niels
a69b1a6f0b added noexcept and constexpr 2016-02-14 16:42:48 +01:00
Michael Macnair
9e500b49ac Add support for afl-fuzz testing
"make fuzz" creates a simple executable that de-serialises stdin
and re-serialises to stdout.
"make fuzz_testcases" extracts the smaller json test cases into
a testcases directory.

The library can then be fuzzed as follows:
    CC=afl-clang-fast make fuzz
    make fuzz_testcases
    mkdir out
    afl-fuzz -i testcases -o out ./fuzz
2016-02-12 09:35:08 +00:00
Niels
61fe90f998 Merge pull request #205 from nlohmann/issue204
replaced ssize_t occurrences with auto (fixes #204)
2016-02-10 21:41:55 +01:00
Niels
a831c787df try to replace std::ptrdiff_t with auto (for #204) 2016-02-10 21:19:31 +01:00
Niels
4cc4b26dd2 try to replace ssize_t occurrences with std::ptrdiff_t (for #204) 2016-02-10 21:09:52 +01:00
Niels
1cc4717582 tried Clang 3.9 2016-02-09 21:26:40 +01:00
Niels
be20555985 removed gitter 2016-02-07 17:24:51 +01:00
Niels
236b7afff5 updated and fixed online version 2016-02-07 15:07:17 +01:00
Niels
fdfb39d949 improved documentation 2016-02-07 14:55:29 +01:00
Niels
3b776c08c7 clarified documentation 2016-02-07 10:45:52 +01:00
Niels
8b1a777d36 reverted change wrt. Erasable concept 2016-02-05 22:37:28 +01:00
Niels
2ff2e10660 checking Erasable concept 2016-02-05 22:30:37 +01:00
Niels
ae5bd307a2 improved documentation 2016-02-05 22:30:25 +01:00
Niels
2c720b26ab added a constructor from an input stream 2016-02-05 19:24:42 +01:00
Niels
104c4b5286 improve code coverage 2016-01-31 15:04:38 +01:00
Niels
6aa881988d improved documentation 2016-01-31 13:05:39 +01:00
Niels
22127a4b85 moved documentation to index markdown file 2016-01-30 22:05:01 +01:00
Niels
740239cef8 added a note about GCC 4.8 (#163) 2016-01-30 21:17:08 +01:00
Niels
36719fdb18 using re2c 0.16 (minimized automaton) 2016-01-30 20:33:31 +01:00
Niels
9d063d90e3 removed "using namespace" from examples 2016-01-30 20:23:14 +01:00
Niels
ade2f7c92d updated ChangeLog 2016-01-30 16:51:53 +01:00
Niels
2224435f9b cleanup after #200 2016-01-30 13:36:15 +01:00
Niels
cd44e43457 Merge pull request #200 from twelsby/issue199
Fixed issue #199 - Small bugs in json.hpp (get_number) and unit.cpp (non-standard integer type test)
2016-01-30 13:32:22 +01:00
Trevor Welsby
561accb068 Fixed issue #199 2016-01-30 12:41:12 +10:00
Niels
ff6f723195 removed token 2016-01-26 23:30:51 +01:00
Niels
3dfa56795f added note 2016-01-26 23:27:07 +01:00
Niels
1c80c2231f linked releases in ChangeLog 2016-01-26 23:10:52 +01:00
Niels
89b07bd3af added (generated) changelog 2016-01-26 22:59:57 +01:00
Niels
91c58a77a1 added Gitter to Travis 2016-01-26 21:49:20 +01:00
Niels
fb239fe645 trying Gitter 2016-01-26 21:42:51 +01:00
Niels
2468631dc9 overworked examples 2016-01-26 20:07:03 +01:00
Niels
707732a53e clean up after #193 2016-01-26 19:50:49 +01:00
Niels
e46cc6327f Merge pull request #193 from twelsby/issue178
Issue #178 - Extending support to full uint64_t/int64_t range and unsigned type (updated)
2016-01-26 19:40:16 +01:00
Niels
d338042e3e added note to warn about floating-point exceptions (#181) 2016-01-26 19:21:46 +01:00
Niels
11ae1d0f09 cleanup after #196 2016-01-26 19:13:03 +01:00
Niels
077fb1d540 Merge pull request #196 from twelsby/issue195
Issue #195 - update Travis to Trusty due to gcc/clang strtod() bug
2016-01-26 19:12:36 +01:00
Niels
b630ce0e78 thanks 2016-01-26 19:11:58 +01:00
Niels
8deaabb289 Merge pull request #197 from m-click/fix_broken_link
Fix broken link
2016-01-26 19:10:46 +01:00
Volker Diels-Grabsch
08fd6dbf98 Fix broken link 2016-01-26 15:22:15 +01:00
Trevor Welsby
2de94365de Revert to llvm-toolchain-precise-* due to Travis white-list issue 2016-01-26 09:14:43 +10:00
Trevor Welsby
a4a88b1b7d Issue #195 - update Travis to Trusty due to gcc/clang strtod() bug 2016-01-26 08:36:18 +10:00
Trevor Welsby
0f28c69499 Merge upstream commits and resolve conflicts 2016-01-25 02:48:38 +10:00
Trevor Welsby
281492c581 Merge upstream commits and resolve conflicts 2016-01-25 02:42:20 +10:00
Trevor Welsby
4620960b72 Disable problematic test for GCC/clang, remove debug dump from unit.cpp 2016-01-25 02:22:46 +10:00
Trevor Welsby
12ef668335 Merge upstream commits and resolve conflicts 2016-01-25 01:15:13 +10:00
Trevor Welsby
d7ef2ccffd Issue #178 - fully support int64_t/uint64_t numbers, add unsigned type 2016-01-25 01:04:37 +10:00
1019 changed files with 141654 additions and 1222204 deletions

84
.clang-format Normal file
View File

@@ -0,0 +1,84 @@
#AccessModifierOffset: 2
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
#AlignConsecutiveBitFields: false
AlignConsecutiveDeclarations: false
AlignConsecutiveMacros: false
AlignEscapedNewlines: Right
#AlignOperands: AlignAfterOperator
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: false
AllowAllConstructorInitializersOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
#AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: Empty
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
#BitFieldColonSpacing: Both
BreakBeforeBraces: Custom # or Allman
BraceWrapping:
AfterCaseLabel: true
AfterClass: true
AfterControlStatement: Always
AfterEnum: true
AfterFunction: true
AfterNamespace: false
AfterStruct: true
AfterUnion: true
AfterExternBlock: false
BeforeCatch: true
BeforeElse: true
#BeforeLambdaBody: false
#BeforeWhile: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeComma
BreakStringLiterals: false
ColumnLimit: 0
CompactNamespaces: false
ConstructorInitializerIndentWidth: 2
Cpp11BracedListStyle: true
PointerAlignment: Left
FixNamespaceComments: true
IncludeBlocks: Preserve
#IndentCaseBlocks: false
IndentCaseLabels: true
IndentGotoLabels: false
IndentPPDirectives: BeforeHash
IndentWidth: 4
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ReflowComments: false
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: false
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: c++11
TabWidth: 4
UseTab: Never

44
.clang-tidy Normal file
View File

@@ -0,0 +1,44 @@
Checks: '*,
-android-cloexec-fopen,
-cppcoreguidelines-avoid-goto,
-cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-avoid-non-const-global-variables,
-cppcoreguidelines-macro-usage,
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
-cppcoreguidelines-pro-bounds-constant-array-index,
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
-cppcoreguidelines-pro-type-reinterpret-cast,
-cppcoreguidelines-pro-type-union-access,
-fuchsia-default-arguments-calls,
-fuchsia-default-arguments-declarations,
-fuchsia-overloaded-operator,
-google-explicit-constructor,
-google-readability-function-size,
-google-runtime-int,
-google-runtime-references,
-hicpp-avoid-goto,
-hicpp-explicit-conversions,
-hicpp-function-size,
-hicpp-no-array-decay,
-hicpp-no-assembler,
-hicpp-signed-bitwise,
-hicpp-uppercase-literal-suffix,
-llvm-header-guard,
-llvm-include-order,
-llvmlibc-*,
-misc-no-recursion,
-misc-non-private-member-variables-in-classes,
-modernize-use-trailing-return-type,
-readability-function-size,
-readability-magic-numbers,
-readability-redundant-access-specifiers,
-readability-uppercase-literal-suffix'
CheckOptions:
- key: hicpp-special-member-functions.AllowSoleDefaultDtor
value: 1
WarningsAsErrors: '*'
#HeaderFilterRegex: '.*nlohmann.*'
HeaderFilterRegex: '.*hpp$'

22
.drone.yml Normal file
View File

@@ -0,0 +1,22 @@
kind: pipeline
name: test-on-arm64
platform:
arch: arm64
steps:
- name: build
image: gcc
commands:
- wget https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2.tar.gz
- tar xfz cmake-3.20.2.tar.gz
- cd cmake-3.20.2
- ./configure
- make cmake ctest -j10
- cd ..
- mkdir build
- cd build
- ../cmake-3.20.2/bin/cmake .. -DJSON_FastTests=ON
- make -j10
- cd test
- ../../cmake-3.20.2/bin/ctest -j10

6
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1,6 @@
# JSON for Modern C++ has been originally written by Niels Lohmann.
# Since 2013 over 140 contributors have helped to improve the library.
# This CODEOWNERS file is only to make sure that @nlohmann is requested
# for a code review in case of a pull request.
* @nlohmann

View File

@@ -4,13 +4,15 @@
This project started as a little excuse to exercise some of the cool new C++11 features. Over time, people actually started to use the JSON library (yey!) and started to help improve it by proposing features, finding bugs, or even fixing my mistakes. I am really [thankful](https://github.com/nlohmann/json/blob/master/README.md#thanks) for this and try to keep track of all the helpers.
To make it as easy as possible for you to contribute and for me to keep an overview, here are a few guidelines which should help us avoid all kinds of unnecessary work or disappointment. And of course, this document is subject to discussion, so please [create an issue](https://github.com/nlohmann/json/issues/new) or a pull request if you find a way to improve it!
To make it as easy as possible for you to contribute and for me to keep an overview, here are a few guidelines which should help us avoid all kinds of unnecessary work or disappointment. And of course, this document is subject to discussion, so please [create an issue](https://github.com/nlohmann/json/issues/new/choose) or a pull request if you find a way to improve it!
## Private reports
Usually, all issues are tracked publicly on [GitHub](https://github.com/nlohmann/json/issues). If you want to make a private report (e.g., for a vulnerability or to attach an example that is not meant to be published), please send an email to <mail@nlohmann.me>.
## Prerequisites
Please [create an issue](https://github.com/nlohmann/json/issues/new), assuming one does not already exist, and describe your concern. Note you need a [GitHub account](https://github.com/signup/free) for this.
If you want propose changes to the code, you need to download the [`re2c`](http://re2c.org) tool.
Please [create an issue](https://github.com/nlohmann/json/issues/new/choose), assuming one does not already exist, and describe your concern. Note you need a [GitHub account](https://github.com/signup/free) for this.
## Describe your issue
@@ -20,59 +22,50 @@ Clearly describe the issue:
- If you propose a change or addition, try to give an **example** how the improved code could look like or how to use it.
- If you found a compilation error, please tell us which **compiler** (version and operating system) you used and paste the (relevant part of) the error messages to the ticket.
Please stick to the provided issue templates ([bug report](https://github.com/nlohmann/json/blob/develop/.github/ISSUE_TEMPLATE/Bug_report.md), [feature request](https://github.com/nlohmann/json/blob/develop/.github/ISSUE_TEMPLATE/Feature_request.md), or [question](https://github.com/nlohmann/json/blob/develop/.github/ISSUE_TEMPLATE/question.md)) if possible.
## Files to change
There are currently two files which need to be edited:
:exclamation: Before you make any changes, note the single-header file [`single_include/nlohmann/json.hpp`](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp) is **generated** from the source files in the [`include/nlohmann` directory](https://github.com/nlohmann/json/tree/develop/include/nlohmann). Please **do not** edit file `single_include/nlohmann/json.hpp` directly, but change the `include/nlohmann` sources and regenerate file `single_include/nlohmann/json.hpp` by executing `make amalgamate`.
1. [`src/json.hpp.re2c`](https://github.com/nlohmann/json/blob/master/src/json.hpp.re2c) (note the `.re2c` suffix) - This file contains a comment section which describes the JSON lexic. This section is translated by [`re2c`](http://re2c.org) into file [`src/json.hpp`](https://github.com/nlohmann/json/blob/master/src/json.hpp) which is plain "vanilla" C++11 code. (In fact, the generated lexer consists of some hundred lines of `goto`s, which is a hint you never want to edit this file...).
To make changes, you need to edit the following files:
If you only edit file `src/json.hpp` (without the `.re2c` suffix), your changes will be overwritten as soon as the lexer is touched again. To generate the `src/json.hpp` file which is actually used during compilation of the tests and all other code, please execute
1. [`include/nlohmann/*`](https://github.com/nlohmann/json/tree/develop/include/nlohmann) - These files are the sources of the library. Before testing or creating a pull request, execute `make amalgamate` to regenerate `single_include/nlohmann/json.hpp`.
2. [`test/src/unit-*.cpp`](https://github.com/nlohmann/json/tree/develop/test/src) - These files contain the [doctest](https://github.com/onqtam/doctest) unit tests which currently cover [100 %](https://coveralls.io/github/nlohmann/json) of the library's code.
If you add or change a feature, please also add a unit test to this file. The unit tests can be compiled and executed with
```sh
make re2c
```
To run [`re2c`](http://re2c.org) and generate/overwrite file `src/json.hpp` with your changes in file `src/json.hpp.re2c`.
2. [`test/unit.cpp`](https://github.com/nlohmann/json/blob/master/test/unit.cpp) - This contains the [Catch](https://github.com/philsquared/Catch) unit tests which currently cover [100 %](https://coveralls.io/github/nlohmann/json) of the library's code.
If you add or change a feature, please also add a unit test to this file. The unit tests can be compiled with
```sh
make
```
and can be executed with
```sh
./json_unit
$ mkdir build
$ cd build
$ cmake ..
$ cmake --build .
$ ctest
```
The test cases are also executed with several different compilers on [Travis](https://travis-ci.org/nlohmann/json) once you open a pull request.
Please understand that I cannot accept pull requests changing only file `src/json.hpp`.
## Note
- If you open a pull request, the code will be automatically tested with [Valgrind](http://valgrind.org)'s Memcheck tool to detect memory leaks. Please be aware that the execution with Valgrind _may_ in rare cases yield different behavior than running the code directly. This can result in failing unit tests which run successfully without Valgrind.
- There is a Makefile target `make pretty` which runs [Artistic Style](http://astyle.sourceforge.net) to fix indentation. If possible, run it before opening the pull request. Otherwise, we shall run it afterward.
## Please don't
- Only make changes to file `src/json.hpp` -- please read the paragraph above and understand why `src/json.hpp.re2c` exists.
- The C++11 support varies between different **compilers** and versions. Please note the [list of supported compilers](https://github.com/nlohmann/json/blob/master/README.md#supported-compilers). Some compilers like GCC 4.8 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support. Please refrain from proposing changes that work around these compiler's limitations with `#ifdef`s or other means.
- The C++11 support varies between different **compilers** and versions. Please note the [list of supported compilers](https://github.com/nlohmann/json/blob/master/README.md#supported-compilers). Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support. Please refrain from proposing changes that work around these compiler's limitations with `#ifdef`s or other means.
- Specifically, I am aware of compilation problems with **Microsoft Visual Studio** (there even is an [issue label](https://github.com/nlohmann/json/issues?utf8=✓&q=label%3A%22visual+studio%22+) for these kind of bugs). I understand that even in 2016, complete C++11 support isn't there yet. But please also understand that I do not want to drop features or uglify the code just to make Microsoft's sub-standard compiler happy. The past has shown that there are ways to express the functionality such that the code compiles with the most recent MSVC - unfortunately, this is not the main objective of the project.
- Please refrain from proposing changes that would **break [JSON](http://json.org) conformance**. If you propose a conformant extension of JSON to be supported by the library, please motivate this extension.
- Please refrain from proposing changes that would **break [JSON](https://json.org) conformance**. If you propose a conformant extension of JSON to be supported by the library, please motivate this extension.
- We shall not extend the library to **support comments**. There is quite some [controversy](https://www.reddit.com/r/programming/comments/4v6chu/why_json_doesnt_support_comments_douglas_crockford/) around this topic, and there were quite some [issues](https://github.com/nlohmann/json/issues/376) on this. We believe that JSON is fine without comments.
- We do not preserve the **insertion order of object elements**. The [JSON standard](https://tools.ietf.org/html/rfc8259.html) defines objects as "an unordered collection of zero or more name/value pairs". To this end, this library does not preserve insertion order of name/value pairs. (In fact, keys will be traversed in alphabetical order as `std::map` with `std::less` is used by default.) Note this behavior conforms to the standard, and we shall not change it to any other order. If you do want to preserve the insertion order, you can specialize the object type with containers like [`tsl::ordered_map`](https://github.com/Tessil/ordered-map) or [`nlohmann::fifo_map`](https://github.com/nlohmann/fifo_map).
- Please do not open pull requests that address **multiple issues**.
## Wanted
The following areas really need contribution:
- Getting the code to compile without errors with the latest **Microsoft Visual Studio** version. I am not using Windows, so I cannot debug code with MSVC myself. There is a job on [AppVeyor](https://ci.appveyor.com/project/nlohmann/json) though.
- Extending the **continuous integration** beyond Linux running some versions of GCC and Clang on [Travis](https://travis-ci.org/nlohmann/json) and Microsoft Visual Studio on [AppVeyor](https://ci.appveyor.com/project/nlohmann/json). We have found a lot of bugs just because several compilers behave in a slightly different manner.
- Extending the **continuous integration** toward more exotic compilers such as Android NDK, Intel's Compiler, or the bleeding-edge versions Clang.
- Improving the efficiency of the **JSON parser**. The current parser is implemented as a naive recursive descent parser with hand coded string handling. More sophisticated approaches like LALR parsers would be really appreciated. That said, parser generators like Bison or ANTLR do not play nice with single-header files -- I really would like to keep the parser inside the `json.hpp` header, and I am not aware of approaches similar to [`re2c`](http://re2c.org) for parsing.
- Extending and updating existing **benchmarks** to include (the most recent version of) this library. Though efficiency is not everything, speed and memory consumption are very important characteristics for C++ developers, so having proper comparisons would be interesting.
- Check the code with [**Coverity**](https://scan.coverity.com).
- Make the code **locale-independent**. The library currently only works for a locale where `.` is the decimal point character.

2
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
github: nlohmann
custom: http://paypal.me/nlohmann

57
.github/ISSUE_TEMPLATE/Bug_report.md vendored Normal file
View File

@@ -0,0 +1,57 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: 'kind: bug'
assignees: ''
---
<!-- Provide a concise summary of the issue in the title above. -->
#### What is the issue you have?
<!-- Provide a detailed introduction to the issue itself, and why you consider it to be a bug. -->
<!-- If possible, be specific and add stack traces, error messages, etc. Avoid vague terms like "crash" or "doesn't work". -->
#### Please describe the steps to reproduce the issue.
<!-- Provide a link to a live example, or an unambiguous set of steps to -->
<!-- reproduce this bug. Include code to reproduce, if relevant -->
1.
2.
3.
#### Can you provide a small but working code example?
<!-- Please understand that we cannot analyze and debug large code bases. -->
#### What is the expected behavior?
<!-- Tell us what should happen -->
#### And what is the actual behavior instead?
<!-- Tell us what happens instead. -->
#### Which compiler and operating system are you using?
<!-- Include as many relevant details about the environment you experienced the bug in. -->
<!-- Make sure you use a supported compiler, see https://github.com/nlohmann/json#supported-compilers. -->
- Compiler: ___
- Operating system: ___
#### Which version of the library did you use?
<!-- Please add an `x` to the respective line. -->
- [ ] latest release version 3.10.0
- [ ] other release - please state the version: ___
- [ ] the `develop` branch
#### If you experience a compilation error: can you [compile and run the unit tests](https://github.com/nlohmann/json#execute-unit-tests)?
- [ ] yes
- [ ] no - please copy/paste the error message below

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Ask a question
url: https://github.com/nlohmann/json/discussions
about: Ask questions and discuss with other community members

19
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,19 @@
[Describe your pull request here. Please read the text below the line, and make sure you follow the checklist.]
* * *
## Pull request checklist
Read the [Contribution Guidelines](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md) for detailed information.
- [ ] Changes are described in the pull request, or an [existing issue is referenced](https://github.com/nlohmann/json/issues).
- [ ] The test suite [compiles and runs](https://github.com/nlohmann/json/blob/develop/README.md#execute-unit-tests) without error.
- [ ] [Code coverage](https://coveralls.io/github/nlohmann/json) is 100%. Test cases can be added by editing the [test suite](https://github.com/nlohmann/json/tree/develop/test/src).
- [ ] The source code is amalgamated; that is, after making changes to the sources in the `include/nlohmann` directory, run `make amalgamate` to create the single-header file `single_include/nlohmann/json.hpp`. The whole process is described [here](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md#files-to-change).
## Please don't
- The C++11 support varies between different **compilers** and versions. Please note the [list of supported compilers](https://github.com/nlohmann/json/blob/master/README.md#supported-compilers). Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support. Please refrain from proposing changes that work around these compiler's limitations with `#ifdef`s or other means.
- Specifically, I am aware of compilation problems with **Microsoft Visual Studio** (there even is an [issue label](https://github.com/nlohmann/json/issues?utf8=✓&q=label%3A%22visual+studio%22+) for these kind of bugs). I understand that even in 2016, complete C++11 support isn't there yet. But please also understand that I do not want to drop features or uglify the code just to make Microsoft's sub-standard compiler happy. The past has shown that there are ways to express the functionality such that the code compiles with the most recent MSVC - unfortunately, this is not the main objective of the project.
- Please refrain from proposing changes that would **break [JSON](https://json.org) conformance**. If you propose a conformant extension of JSON to be supported by the library, please motivate this extension.
- Please do not open pull requests that address **multiple issues**.

5
.github/SECURITY.md vendored Normal file
View File

@@ -0,0 +1,5 @@
# Security Policy
## Reporting a Vulnerability
Usually, all issues are tracked publicly on [GitHub](https://github.com/nlohmann/json/issues). If you want to make a private report (e.g., for a vulnerability or to attach an example that is not meant to be published), please send an email to <mail@nlohmann.me>. You can use [this key](https://keybase.io/nlohmann/pgp_keys.asc?fingerprint=797167ae41c0a6d9232e48457f3cea63ae251b69) for encryption.

19
.github/config.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
# Configuration for sentiment-bot - https://github.com/behaviorbot/sentiment-bot
# *Required* toxicity threshold between 0 and .99 with the higher numbers being the most toxic
# Anything higher than this threshold will be marked as toxic and commented on
sentimentBotToxicityThreshold: .7
# *Required* Comment to reply with
sentimentBotReplyComment: >
Please be sure to review the [code of conduct](https://github.com/nlohmann/json/blob/develop/CODE_OF_CONDUCT.md) and be respectful of other users. cc/ @nlohmann
# Configuration for request-info - https://github.com/behaviorbot/request-info
# *Required* Comment to reply with
requestInfoReplyComment: >
We would appreciate it if you could provide us with more info about this issue or pull request! Please check the [issue template](https://github.com/nlohmann/json/blob/develop/.github/ISSUE_TEMPLATE.md) and the [pull request template](https://github.com/nlohmann/json/blob/develop/.github/PULL_REQUEST_TEMPLATE.md).
# *OPTIONAL* Label to be added to Issues and Pull Requests with insufficient information given
requestInfoLabelToAdd: "state: needs more info"

17
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 30
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
- security
# Label to use when marking an issue as stale
staleLabel: "state: stale"
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

55
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@@ -0,0 +1,55 @@
name: "Code scanning - action"
on:
push:
branches:
- develop
- master
- release/*
pull_request:
schedule:
- cron: '0 19 * * 1'
jobs:
CodeQL-Build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
# Override language selection by uncommenting this and choosing your languages
# with:
# languages: go, javascript, csharp, python, cpp, java
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

44
.github/workflows/macos.yml vendored Normal file
View File

@@ -0,0 +1,44 @@
name: macOS
on:
push:
branches:
- develop
- master
- release/*
pull_request:
jobs:
xcode:
runs-on: macos-10.15
strategy:
matrix:
xcode: [12.4, 12.3, 12.2, 12.1.1, 12.1, 12, 11.7, 11.6, 11.5, 11.4.1, 11.3.1, 11.2.1, 10.3]
env:
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
steps:
- uses: actions/checkout@v2
- name: cmake
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON
- name: build
run: cmake --build build --parallel 10
- name: test
run: cd build ; ctest -j 10 --output-on-failure
xcode_standards:
runs-on: macos-10.15
strategy:
matrix:
standard: [11, 14, 17, 20]
env:
DEVELOPER_DIR: /Applications/Xcode_12.4.app/Contents/Developer
steps:
- uses: actions/checkout@v2
- name: cmake
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DCMAKE_CXX_STANDARD=${{ matrix.standard }} -DCMAKE_CXX_STANDARD_REQUIRED=ON
- name: build
run: cmake --build build --parallel 10
- name: test
run: cd build ; ctest -j 10 --output-on-failure

114
.github/workflows/ubuntu.yml vendored Normal file
View File

@@ -0,0 +1,114 @@
name: Ubuntu
on:
push:
branches:
- develop
- master
- release/*
pull_request:
jobs:
ci_test_clang:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: install_ninja
run: |
sudo apt update
sudo apt install ninja-build
shell: bash
- name: install_clang
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 11
sudo apt-get install clang-tools-11
shell: bash
- name: cmake
run: cmake -S . -B build -DJSON_CI=On
- name: build
run: cmake --build build --target ci_test_clang
ci_test_gcc:
runs-on: ubuntu-latest
container: nlohmann/json-ci:latest
steps:
- uses: actions/checkout@v2
- name: cmake
run: cmake -S . -B build -DJSON_CI=On
- name: build
run: cmake --build build --target ci_test_gcc
ci_static_analysis:
runs-on: ubuntu-latest
container: nlohmann/json-ci:latest
strategy:
matrix:
target: [ci_clang_tidy, ci_cppcheck, ci_test_valgrind, ci_test_clang_sanitizer, ci_test_amalgamation, ci_clang_analyze, ci_cpplint, ci_cmake_flags, ci_single_binaries, ci_reproducible_tests, ci_non_git_tests, ci_offline_testdata, ci_infer]
steps:
- uses: actions/checkout@v2
- name: cmake
run: cmake -S . -B build -DJSON_CI=On
- name: build
run: cmake --build build --target ${{ matrix.target }}
ci_cmake_options:
runs-on: ubuntu-latest
container: nlohmann/json-ci:latest
strategy:
matrix:
target: [ci_test_diagnostics, ci_test_noexceptions, ci_test_noimplicitconversions]
steps:
- uses: actions/checkout@v2
- name: cmake
run: cmake -S . -B build -DJSON_CI=On
- name: build
run: cmake --build build --target ${{ matrix.target }}
ci_test_coverage:
runs-on: ubuntu-latest
container: nlohmann/json-ci:latest
steps:
- uses: actions/checkout@v2
- name: cmake
run: cmake -S . -B build -DJSON_CI=On
- name: build
run: cmake --build build --target ci_test_coverage
- name: archive coverage report
uses: actions/upload-artifact@v2
with:
name: code-coverage-report
path: /__w/json/json/build/html
- name: Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: /__w/json/json/build/json.info.filtered.noexcept
ci_test_compilers:
runs-on: ubuntu-latest
container: nlohmann/json-ci:latest
strategy:
matrix:
compiler: [g++-4.8, g++-4.9, g++-5, g++-7, g++-8, g++-9, g++-10, clang++-3.5, clang++-3.6, clang++-3.7, clang++-3.8, clang++-3.9, clang++-4.0, clang++-5.0, clang++-6.0, clang++-7, clang++-8, clang++-9, clang++-10, clang++-11]
steps:
- uses: actions/checkout@v2
- name: cmake
run: cmake -S . -B build -DJSON_CI=On
- name: build
run: cmake --build build --target ci_test_compiler_${{ matrix.compiler }}
ci_test_standards:
runs-on: ubuntu-latest
container: nlohmann/json-ci:latest
strategy:
matrix:
standard: [11, 14, 17, 20]
compiler: [gcc, clang]
steps:
- uses: actions/checkout@v2
- name: cmake
run: cmake -S . -B build -DJSON_CI=On
- name: build
run: cmake --build build --target ci_test_${{ matrix.compiler }}_cxx${{ matrix.standard }}

128
.github/workflows/windows.yml vendored Normal file
View File

@@ -0,0 +1,128 @@
name: Windows
on:
push:
branches:
- develop
- master
- release/*
pull_request:
jobs:
mingw:
runs-on: windows-latest
strategy:
matrix:
architecture: [x64, x86]
steps:
- uses: actions/checkout@v2
- name: Set up MinGW
uses: egor-tensin/setup-mingw@v2
with:
platform: ${{ matrix.architecture }}
- name: cmake
run: cmake -S . -B build -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On
- name: build
run: cmake --build build --parallel 10
- name: test
run: cd build ; ctest -j 10 -C Debug --output-on-failure
msvc2017:
runs-on: windows-2016
strategy:
matrix:
build_type: [Debug, Release]
architecture: [Win32, x64]
steps:
- uses: actions/checkout@v2
- name: cmake
run: cmake -S . -B build -G "Visual Studio 15 2017" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/W4 /WX"
if: matrix.build_type == 'Release' && matrix.architecture == 'x64'
- name: cmake
run: cmake -S . -B build -G "Visual Studio 15 2017" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/W4 /WX"
if: matrix.build_type == 'Release' && matrix.architecture != 'x64'
- name: cmake
run: cmake -S . -B build -G "Visual Studio 15 2017" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DJSON_FastTests=ON -DCMAKE_CXX_FLAGS="/W4 /WX"
if: matrix.build_type == 'Debug'
- name: build
run: cmake --build build --config ${{ matrix.build_type }} --parallel 10
- name: test
run: cd build ; ctest -j 10 -C ${{ matrix.build_type }} --output-on-failure
msvc2017_latest:
runs-on: windows-2016
steps:
- uses: actions/checkout@v2
- name: cmake
run: cmake -S . -B build -G "Visual Studio 15 2017" -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/permissive- /std:c++latest /utf-8 /W4 /WX"
- name: build
run: cmake --build build --config Release --parallel 10
- name: test
run: cd build ; ctest -j 10 -C Release --output-on-failure
msvc2019:
runs-on: windows-latest
strategy:
matrix:
build_type: [Debug, Release]
architecture: [Win32, x64]
steps:
- uses: actions/checkout@v2
- name: cmake
run: cmake -S . -B build -G "Visual Studio 16 2019" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/W4 /WX"
if: matrix.build_type == 'Release'
- name: cmake
run: cmake -S . -B build -G "Visual Studio 16 2019" -A ${{ matrix.architecture }} -DJSON_BuildTests=On -DJSON_FastTests=ON -DCMAKE_CXX_FLAGS="/W4 /WX"
if: matrix.build_type == 'Debug'
- name: build
run: cmake --build build --config ${{ matrix.build_type }} --parallel 10
- name: test
run: cd build ; ctest -j 10 -C ${{ matrix.build_type }} --output-on-failure
msvc2019_latest:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: cmake
run: cmake -S . -B build -G "Visual Studio 16 2019" -DJSON_BuildTests=On -DCMAKE_CXX_FLAGS="/permissive- /std:c++latest /utf-8 /W4 /WX"
- name: build
run: cmake --build build --config Release --parallel 10
- name: test
run: cd build ; ctest -j 10 -C Release --output-on-failure
clang:
runs-on: windows-latest
strategy:
matrix:
version: [11, 12]
steps:
- uses: actions/checkout@v2
- name: install Clang
run: curl -fsSL -o LLVM${{ matrix.version }}.exe https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ matrix.version }}.0.0/LLVM-${{ matrix.version }}.0.0-win64.exe ; 7z x LLVM${{ matrix.version }}.exe -y -o"C:/Program Files/LLVM"
- name: cmake
run: cmake -S . -B build -DCMAKE_CXX_COMPILER="C:/Program Files/LLVM/bin/clang++.exe" -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On
- name: build
run: cmake --build build --parallel 10
- name: test
run: cd build ; ctest -j 10 -C Debug --exclude-regex "test-unicode" --output-on-failure
clang-cl-11:
runs-on: windows-latest
strategy:
matrix:
architecture: [Win32, x64]
steps:
- uses: actions/checkout@v2
- name: cmake
run: cmake -S . -B build -G "Visual Studio 16 2019" -A ${{ matrix.architecture }} -T ClangCL -DJSON_BuildTests=On
- name: build
run: cmake --build build --config Debug --parallel 10
- name: test
run: cd build ; ctest -j 10 -C Debug --exclude-regex "test-unicode" --output-on-failure

33
.gitignore vendored
View File

@@ -1,7 +1,36 @@
json_unit
json_benchmarks
json_benchmarks_simple
fuzz-testing
working
*.dSYM
*.o
*.gcno
*.gcda
html
build
build_coverage
clang_analyze_build
doc/xml
doc/html
me.nlohmann.json.docset
benchmarks/files/numbers/*.json
.wsjcpp-logs/*
.wsjcpp/*
.idea
/cmake-build-*
test/test-*
/.vs
doc/mkdocs/venv/
doc/mkdocs/docs/images
doc/mkdocs/docs/examples
doc/mkdocs/site
doc/mkdocs/docs/__pycache__/
doc/xml
/doc/docset/nlohmann_json.docset/

View File

@@ -1,58 +1,94 @@
#########################
# project configuration #
#########################
# C++ project
language: cpp
sudo: false
dist: trusty
sudo: required
group: edge
################
# build matrix #
################
# from http://stackoverflow.com/a/32127147/266378
matrix:
include:
- os: linux
compiler: gcc
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.9', 'valgrind', 'python-pip', 'python-yaml']
before_script:
- pip install --user git+git://github.com/eddyxu/cpp-coveralls.git
after_success:
- make clean
- touch src/json.hpp
- make json_unit CXXFLAGS="-fprofile-arcs -ftest-coverage -std=c++11 -lstdc++" CXX=$COMPILER
- ./json_unit "*"
- coveralls --exclude test/catch.hpp --exclude test/unit.cpp --include src/json.hpp --gcov-options '\-lp' --gcov 'gcov-4.9'
env: COMPILER=g++-4.9
- os: linux
compiler: gcc
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-5', 'valgrind']
env: COMPILER=g++-5
# Coverity (only for branch coverity_scan)
- os: linux
compiler: clang
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
packages: ['clang-3.6', 'valgrind']
env: COMPILER=clang++-3.6
- os: linux
compiler: clang
before_install: echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-certificates.crt
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
packages: ['g++-6', 'clang-3.6', 'ninja-build']
coverity_scan:
project:
name: "nlohmann/json"
description: "Build submitted via Travis CI"
notification_email: niels.lohmann@gmail.com
build_command_prepend: "mkdir coverity_build ; cd coverity_build ; cmake .. ; cd .."
build_command: "make -C coverity_build"
branch_pattern: coverity_scan
env:
- SPECIAL=coverity
- COMPILER=clang++-3.6
# The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
# via the "travis encrypt" command using the project repo's public key
- secure: "m89SSgE+ASLO38rSKx7MTXK3n5NkP9bIx95jwY71YEiuFzib30PDJ/DifKnXxBjvy/AkCGztErQRk/8ZCvq+4HXozU2knEGnL/RUitvlwbhzfh2D4lmS3BvWBGS3N3NewoPBrRmdcvnT0xjOGXxtZaJ3P74TkB9GBnlz/HmKORA="
- os: linux
compiler: clang
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.7']
packages: ['clang-3.7', 'valgrind']
env: COMPILER=clang++-3.7
# - os: osx
# compiler: clang
# env: COMPILER=clang
# before_install:
# - brew update
# - brew install valgrind
# OSX / Clang
- os: osx
osx_image: xcode10.2
# Linux / GCC
- os: linux
compiler: gcc
env: COMPILER=g++-6
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-6', 'ninja-build']
################
# build script #
################
script:
- make CXX=$COMPILER CXXFLAGS="-lstdc++"
- ./json_unit "*"
- valgrind --error-exitcode=1 --leak-check=full ./json_unit
# get CMake and Ninja (only for systems with brew - macOS)
- |
if [[ (-x $(which brew)) ]]; then
brew update
brew install cmake ninja
brew upgrade cmake
cmake --version
fi
# make sure CXX is correctly set
- if [[ "${COMPILER}" != "" ]]; then export CXX=${COMPILER}; fi
# append CXX_STANDARD to CMAKE_OPTIONS if required
- CMAKE_OPTIONS+=${CXX_STANDARD:+ -DCMAKE_CXX_STANDARD=$CXX_STANDARD -DCMAKE_CXX_STANDARD_REQUIRED=ON}
# build configuration
- CMAKE_OPTIONS+=" -DCMAKE_BUILD_TYPE=Release"
# compile and execute unit tests
- mkdir -p build && cd build
- cmake .. ${CMAKE_OPTIONS} -DJSON_BuildTests=On -GNinja && cmake --build .
- ctest --timeout 2700 -V -j
- cd ..
# check if homebrew works (only checks develop branch)
- if [ `which brew` ]; then
brew update ;
brew tap nlohmann/json ;
brew install nlohmann_json --HEAD ;
brew test nlohmann_json ;
fi

14
CITATION.cff Normal file
View File

@@ -0,0 +1,14 @@
cff-version: 1.1.0
message: "If you use this software, please cite it as below."
authors:
- family-names: Lohmann
given-names: Niels
orcid: https://orcid.org/0000-0001-9037-795X
email: mail@nlohmann.me
website: https://nlohmann.me
title: "JSON for Modern C++"
version: 3.10.0
date-released: 2021
license: MIT
repository-code: "https://github.com/nlohmann"
url: https://json.nlohmann.me

View File

@@ -1,25 +1,188 @@
cmake_minimum_required(VERSION 2.8)
cmake_minimum_required(VERSION 3.1)
project(json CXX)
##
## PROJECT
## name and version
##
project(nlohmann_json VERSION 3.10.0 LANGUAGES CXX)
add_executable(json_unit
src/json.hpp test/catch.hpp test/unit.cpp
##
## MAIN_PROJECT CHECK
## determine if nlohmann_json is built as a subproject (using add_subdirectory) or if it is the main project
##
set(MAIN_PROJECT OFF)
if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
set(MAIN_PROJECT ON)
endif()
##
## INCLUDE
##
##
include(ExternalProject)
##
## OPTIONS
##
if (POLICY CMP0077)
# Allow CMake 3.13+ to override options when using FetchContent / add_subdirectory.
cmake_policy(SET CMP0077 NEW)
endif ()
option(JSON_BuildTests "Build the unit tests when BUILD_TESTING is enabled." ${MAIN_PROJECT})
option(JSON_CI "Enable CI build targets." OFF)
option(JSON_Diagnostics "Use extended diagnostic messages." OFF)
option(JSON_ImplicitConversions "Enable implicit conversions." ON)
option(JSON_Install "Install CMake targets during install step." ${MAIN_PROJECT})
option(JSON_MultipleHeaders "Use non-amalgamated version of the library." OFF)
option(JSON_SystemInclude "Include as system headers (skip for clang-tidy)." OFF)
if (JSON_CI)
include(cmake/ci.cmake)
endif ()
##
## CONFIGURATION
##
include(GNUInstallDirs)
set(NLOHMANN_JSON_TARGET_NAME ${PROJECT_NAME})
set(NLOHMANN_JSON_CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" CACHE INTERNAL "")
set(NLOHMANN_JSON_INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}")
set(NLOHMANN_JSON_TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
set(NLOHMANN_JSON_CMAKE_CONFIG_TEMPLATE "cmake/config.cmake.in")
set(NLOHMANN_JSON_CMAKE_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}")
set(NLOHMANN_JSON_CMAKE_VERSION_CONFIG_FILE "${NLOHMANN_JSON_CMAKE_CONFIG_DIR}/${PROJECT_NAME}ConfigVersion.cmake")
set(NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE "${NLOHMANN_JSON_CMAKE_CONFIG_DIR}/${PROJECT_NAME}Config.cmake")
set(NLOHMANN_JSON_CMAKE_PROJECT_TARGETS_FILE "${NLOHMANN_JSON_CMAKE_CONFIG_DIR}/${PROJECT_NAME}Targets.cmake")
set(NLOHMANN_JSON_PKGCONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
if (JSON_MultipleHeaders)
set(NLOHMANN_JSON_INCLUDE_BUILD_DIR "${PROJECT_SOURCE_DIR}/include/")
message(STATUS "Using the multi-header code from ${NLOHMANN_JSON_INCLUDE_BUILD_DIR}")
else()
set(NLOHMANN_JSON_INCLUDE_BUILD_DIR "${PROJECT_SOURCE_DIR}/single_include/")
message(STATUS "Using the single-header code from ${NLOHMANN_JSON_INCLUDE_BUILD_DIR}")
endif()
if (NOT JSON_ImplicitConversions)
message(STATUS "Implicit conversions are disabled")
endif()
if (JSON_Diagnostics)
message(STATUS "Diagnostics enabled")
endif()
if (JSON_SystemInclude)
set(NLOHMANN_JSON_SYSTEM_INCLUDE "SYSTEM")
endif()
##
## TARGET
## create target and add include path
##
add_library(${NLOHMANN_JSON_TARGET_NAME} INTERFACE)
add_library(${PROJECT_NAME}::${NLOHMANN_JSON_TARGET_NAME} ALIAS ${NLOHMANN_JSON_TARGET_NAME})
if (${CMAKE_VERSION} VERSION_LESS "3.8.0")
target_compile_features(${NLOHMANN_JSON_TARGET_NAME} INTERFACE cxx_range_for)
else()
target_compile_features(${NLOHMANN_JSON_TARGET_NAME} INTERFACE cxx_std_11)
endif()
target_compile_definitions(
${NLOHMANN_JSON_TARGET_NAME}
INTERFACE
JSON_USE_IMPLICIT_CONVERSIONS=$<BOOL:${JSON_ImplicitConversions}>
JSON_DIAGNOSTICS=$<BOOL:${JSON_Diagnostics}>
)
if(MSVC)
set(CMAKE_CXX_FLAGS
"/EHsc"
)
STRING(REPLACE "/O2" "/Od" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
else(MSVC)
set(CMAKE_CXX_FLAGS
"-std=c++11"
)
endif(MSVC)
include_directories(
src test
target_include_directories(
${NLOHMANN_JSON_TARGET_NAME}
${NLOHMANN_JSON_SYSTEM_INCLUDE} INTERFACE
$<BUILD_INTERFACE:${NLOHMANN_JSON_INCLUDE_BUILD_DIR}>
$<INSTALL_INTERFACE:include>
)
## add debug view definition file for msvc (natvis)
if (MSVC)
set(NLOHMANN_ADD_NATVIS TRUE)
set(NLOHMANN_NATVIS_FILE "nlohmann_json.natvis")
target_sources(
${NLOHMANN_JSON_TARGET_NAME}
INTERFACE
$<INSTALL_INTERFACE:${NLOHMANN_NATVIS_FILE}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${NLOHMANN_NATVIS_FILE}>
)
endif()
# Install a pkg-config file, so other tools can find this.
CONFIGURE_FILE(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/pkg-config.pc.in"
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc"
)
##
## TESTS
## create and configure the unit test target
##
if (JSON_BuildTests)
include(CTest)
enable_testing()
add_subdirectory(test)
endif()
##
## INSTALL
## install header files, generate and install cmake config files for find_package()
##
include(CMakePackageConfigHelpers)
# use a custom package version config file instead of
# write_basic_package_version_file to ensure that it's architecture-independent
# https://github.com/nlohmann/json/issues/1697
configure_file(
"cmake/nlohmann_jsonConfigVersion.cmake.in"
${NLOHMANN_JSON_CMAKE_VERSION_CONFIG_FILE}
@ONLY
)
configure_file(
${NLOHMANN_JSON_CMAKE_CONFIG_TEMPLATE}
${NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE}
@ONLY
)
if(JSON_Install)
install(
DIRECTORY ${NLOHMANN_JSON_INCLUDE_BUILD_DIR}
DESTINATION ${NLOHMANN_JSON_INCLUDE_INSTALL_DIR}
)
install(
FILES ${NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE} ${NLOHMANN_JSON_CMAKE_VERSION_CONFIG_FILE}
DESTINATION ${NLOHMANN_JSON_CONFIG_INSTALL_DIR}
)
if (NLOHMANN_ADD_NATVIS)
install(
FILES ${NLOHMANN_NATVIS_FILE}
DESTINATION .
)
endif()
export(
TARGETS ${NLOHMANN_JSON_TARGET_NAME}
NAMESPACE ${PROJECT_NAME}::
FILE ${NLOHMANN_JSON_CMAKE_PROJECT_TARGETS_FILE}
)
install(
TARGETS ${NLOHMANN_JSON_TARGET_NAME}
EXPORT ${NLOHMANN_JSON_TARGETS_EXPORT_NAME}
INCLUDES DESTINATION ${NLOHMANN_JSON_INCLUDE_INSTALL_DIR}
)
install(
EXPORT ${NLOHMANN_JSON_TARGETS_EXPORT_NAME}
NAMESPACE ${PROJECT_NAME}::
DESTINATION ${NLOHMANN_JSON_CONFIG_INSTALL_DIR}
)
install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc"
DESTINATION ${NLOHMANN_JSON_PKGCONFIG_INSTALL_DIR}
)
endif()

46
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,46 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at mail@nlohmann.me. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

2575
ChangeLog.md Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +1,13 @@
The library is licensed under the MIT License
<http://opensource.org/licenses/MIT>:
MIT License
Copyright (c) 2013-2016 Niels Lohmann
Copyright (c) 2013-2021 Niels Lohmann
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:
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.

286
Makefile
View File

@@ -1,61 +1,245 @@
.PHONY: pretty clean
.PHONY: pretty clean ChangeLog.md release
# used programs
RE2C = re2c
SED = sed
##########################################################################
# configuration
##########################################################################
# directory to recent compiler binaries
COMPILER_DIR=/usr/local/opt/llvm/bin
# find GNU sed to use `-i` parameter
SED:=$(shell command -v gsed || which sed)
##########################################################################
# source files
##########################################################################
# the list of sources in the include folder
SRCS=$(shell find include -type f | sort)
# the single header (amalgamated from the source files)
AMALGAMATED_FILE=single_include/nlohmann/json.hpp
##########################################################################
# documentation of the Makefile's targets
##########################################################################
# main target
all: json_unit
all:
@echo "amalgamate - amalgamate file single_include/nlohmann/json.hpp from the include/nlohmann sources"
@echo "ChangeLog.md - generate ChangeLog file"
@echo "check-amalgamation - check whether sources have been amalgamated"
@echo "clean - remove built files"
@echo "doctest - compile example files and check their output"
@echo "fuzz_testing - prepare fuzz testing of the JSON parser"
@echo "fuzz_testing_bson - prepare fuzz testing of the BSON parser"
@echo "fuzz_testing_cbor - prepare fuzz testing of the CBOR parser"
@echo "fuzz_testing_msgpack - prepare fuzz testing of the MessagePack parser"
@echo "fuzz_testing_ubjson - prepare fuzz testing of the UBJSON parser"
@echo "pretty - beautify code with Artistic Style"
@echo "run_benchmarks - build and run benchmarks"
##########################################################################
# documentation tests
##########################################################################
# compile example files and check output
doctest:
$(MAKE) check_output -C doc
##########################################################################
# benchmarks
##########################################################################
run_benchmarks:
rm -fr cmake-build-benchmarks
mkdir cmake-build-benchmarks
cd cmake-build-benchmarks ; cmake ../benchmarks -GNinja -DCMAKE_BUILD_TYPE=Release -DJSON_BuildTests=On
cd cmake-build-benchmarks ; ninja
cd cmake-build-benchmarks ; ./json_benchmarks
##########################################################################
# fuzzing
##########################################################################
# the overall fuzz testing target
fuzz_testing:
rm -fr fuzz-testing
mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out
$(MAKE) parse_afl_fuzzer -C test CXX=afl-clang++
mv test/parse_afl_fuzzer fuzz-testing/fuzzer
find test/data/json_tests -size -5k -name *json | xargs -I{} cp "{}" fuzz-testing/testcases
@echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer"
fuzz_testing_bson:
rm -fr fuzz-testing
mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out
$(MAKE) parse_bson_fuzzer -C test CXX=afl-clang++
mv test/parse_bson_fuzzer fuzz-testing/fuzzer
find test/data -size -5k -name *.bson | xargs -I{} cp "{}" fuzz-testing/testcases
@echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer"
fuzz_testing_cbor:
rm -fr fuzz-testing
mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out
$(MAKE) parse_cbor_fuzzer -C test CXX=afl-clang++
mv test/parse_cbor_fuzzer fuzz-testing/fuzzer
find test/data -size -5k -name *.cbor | xargs -I{} cp "{}" fuzz-testing/testcases
@echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer"
fuzz_testing_msgpack:
rm -fr fuzz-testing
mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out
$(MAKE) parse_msgpack_fuzzer -C test CXX=afl-clang++
mv test/parse_msgpack_fuzzer fuzz-testing/fuzzer
find test/data -size -5k -name *.msgpack | xargs -I{} cp "{}" fuzz-testing/testcases
@echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer"
fuzz_testing_ubjson:
rm -fr fuzz-testing
mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out
$(MAKE) parse_ubjson_fuzzer -C test CXX=afl-clang++
mv test/parse_ubjson_fuzzer fuzz-testing/fuzzer
find test/data -size -5k -name *.ubjson | xargs -I{} cp "{}" fuzz-testing/testcases
@echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer"
fuzzing-start:
afl-fuzz -S fuzzer1 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null &
afl-fuzz -S fuzzer2 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null &
afl-fuzz -S fuzzer3 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null &
afl-fuzz -S fuzzer4 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null &
afl-fuzz -S fuzzer5 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null &
afl-fuzz -S fuzzer6 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null &
afl-fuzz -S fuzzer7 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null &
afl-fuzz -M fuzzer0 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer
fuzzing-stop:
-killall fuzzer
-killall afl-fuzz
##########################################################################
# Static analysis
##########################################################################
# call PVS-Studio Analyzer <https://www.viva64.com/en/pvs-studio/>
pvs_studio:
rm -fr cmake-build-pvs-studio
mkdir cmake-build-pvs-studio
cd cmake-build-pvs-studio ; cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=On -DJSON_MultipleHeaders=ON
cd cmake-build-pvs-studio ; pvs-studio-analyzer analyze -j 10
cd cmake-build-pvs-studio ; plog-converter -a'GA:1,2;64:1;CS' -t fullhtml PVS-Studio.log -o pvs
open cmake-build-pvs-studio/pvs/index.html
##########################################################################
# Code format and source amalgamation
##########################################################################
# call the Artistic Style pretty printer on all source files
pretty:
astyle \
--style=allman \
--indent=spaces=4 \
--indent-modifiers \
--indent-switches \
--indent-preproc-block \
--indent-preproc-define \
--indent-col1-comments \
--pad-oper \
--pad-header \
--align-pointer=type \
--align-reference=type \
--add-brackets \
--convert-tabs \
--close-templates \
--lineend=linux \
--preserve-date \
--suffix=none \
--formatted \
$(SRCS) $(AMALGAMATED_FILE) test/src/*.cpp test/src/*.hpp benchmarks/src/benchmarks.cpp doc/examples/*.cpp
# call the Clang-Format on all source files
pretty_format:
for FILE in $(SRCS) $(AMALGAMATED_FILE) test/src/*.cpp test/src/*.hpp benchmarks/src/benchmarks.cpp doc/examples/*.cpp; do echo $$FILE; clang-format -i $$FILE; done
# create single header file
amalgamate: $(AMALGAMATED_FILE)
# call the amalgamation tool and pretty print
$(AMALGAMATED_FILE): $(SRCS)
third_party/amalgamate/amalgamate.py -c third_party/amalgamate/config.json -s . --verbose=yes
$(MAKE) pretty
# check if file single_include/nlohmann/json.hpp has been amalgamated from the nlohmann sources
# Note: this target is called by Travis
check-amalgamation:
@mv $(AMALGAMATED_FILE) $(AMALGAMATED_FILE)~
@$(MAKE) amalgamate
@diff $(AMALGAMATED_FILE) $(AMALGAMATED_FILE)~ || (echo "===================================================================\n Amalgamation required! Please read the contribution guidelines\n in file .github/CONTRIBUTING.md.\n===================================================================" ; mv $(AMALGAMATED_FILE)~ $(AMALGAMATED_FILE) ; false)
@mv $(AMALGAMATED_FILE)~ $(AMALGAMATED_FILE)
##########################################################################
# ChangeLog
##########################################################################
# Create a ChangeLog based on the git log using the GitHub Changelog Generator
# (<https://github.com/github-changelog-generator/github-changelog-generator>).
# variable to control the diffs between the last released version and the current repository state
NEXT_VERSION ?= "unreleased"
ChangeLog.md:
github_changelog_generator -o ChangeLog.md --user nlohmann --project json --simple-list --release-url https://github.com/nlohmann/json/releases/tag/%s --future-release $(NEXT_VERSION)
$(SED) -i 's|https://github.com/nlohmann/json/releases/tag/HEAD|https://github.com/nlohmann/json/tree/HEAD|' ChangeLog.md
$(SED) -i '2i All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).' ChangeLog.md
##########################################################################
# Release files
##########################################################################
# Create the files for a release and add signatures and hashes. We use `-X` to make the resulting ZIP file
# reproducible, see <https://content.pivotal.io/blog/barriers-to-deterministic-reproducible-zip-files>.
release:
rm -fr release_files
mkdir release_files
zip -9 --recurse-paths -X include.zip $(SRCS) $(AMALGAMATED_FILE) meson.build LICENSE.MIT
gpg --armor --detach-sig include.zip
mv include.zip include.zip.asc release_files
gpg --armor --detach-sig $(AMALGAMATED_FILE)
cp $(AMALGAMATED_FILE) release_files
mv $(AMALGAMATED_FILE).asc release_files
cd release_files ; shasum -a 256 json.hpp > hashes.txt
cd release_files ; shasum -a 256 include.zip >> hashes.txt
##########################################################################
# Maintenance
##########################################################################
# clean up
clean:
rm -f json_unit json_benchmarks
rm -fr json_unit json_benchmarks fuzz fuzz-testing *.dSYM test/*.dSYM oclint_report.html
rm -fr benchmarks/files/numbers/*.json
rm -fr cmake-3.1.0-Darwin64.tar.gz cmake-3.1.0-Darwin64
rm -fr cmake-build-benchmarks cmake-build-pedantic fuzz-testing cmake-build-clang-analyze cmake-build-pvs-studio cmake-build-infer cmake_build
$(MAKE) clean -Cdoc
##########################################################################
# unit tests
# Thirdparty code
##########################################################################
# additional flags
FLAGS = -Wall -Wextra -pedantic -Weffc++ -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wmissing-declarations -Wmissing-include-dirs -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-overflow=5 -Wswitch -Wundef -Wno-unused -Wnon-virtual-dtor -Wreorder -Wdeprecated -Wfloat-equal
# build unit tests
json_unit: test/unit.cpp src/json.hpp test/catch.hpp
$(CXX) -std=c++11 $(CXXFLAGS) $(FLAGS) $(CPPFLAGS) -I src -I test $< $(LDFLAGS) -o $@
##########################################################################
# static analyzer
##########################################################################
# call cppcheck on the main header file
cppcheck:
cppcheck --enable=all --inconclusive --std=c++11 src/json.hpp
##########################################################################
# maintainer targets
##########################################################################
# create scanner with re2c
re2c: src/json.hpp.re2c
$(RE2C) -b -s -i --no-generation-date $< | $(SED) '1d' > src/json.hpp
# pretty printer
pretty:
astyle --style=allman --indent=spaces=4 --indent-modifiers \
--indent-switches --indent-preproc-block --indent-preproc-define \
--indent-col1-comments --pad-oper --pad-header --align-pointer=type \
--align-reference=type --add-brackets --convert-tabs --close-templates \
--lineend=linux --preserve-date --suffix=none \
src/json.hpp src/json.hpp.re2c test/unit.cpp benchmarks/benchmarks.cpp doc/examples/*.cpp
##########################################################################
# benchmarks
##########################################################################
# benchmarks
json_benchmarks: benchmarks/benchmarks.cpp benchmarks/benchpress.hpp benchmarks/cxxopts.hpp src/json.hpp
$(CXX) -std=c++11 $(CXXFLAGS) -O3 -flto -I src -I benchmarks $< $(LDFLAGS) -o $@
./json_benchmarks
update_hedley:
rm -f include/nlohmann/thirdparty/hedley/hedley.hpp include/nlohmann/thirdparty/hedley/hedley_undef.hpp
curl https://raw.githubusercontent.com/nemequ/hedley/master/hedley.h -o include/nlohmann/thirdparty/hedley/hedley.hpp
$(SED) -i 's/HEDLEY_/JSON_HEDLEY_/g' include/nlohmann/thirdparty/hedley/hedley.hpp
grep "[[:blank:]]*#[[:blank:]]*undef" include/nlohmann/thirdparty/hedley/hedley.hpp | grep -v "__" | sort | uniq | $(SED) 's/ //g' | $(SED) 's/undef/undef /g' > include/nlohmann/thirdparty/hedley/hedley_undef.hpp
$(SED) -i '1s/^/#pragma once\n\n/' include/nlohmann/thirdparty/hedley/hedley.hpp
$(SED) -i '1s/^/#pragma once\n\n/' include/nlohmann/thirdparty/hedley/hedley_undef.hpp
$(MAKE) amalgamate

1448
README.md

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,83 @@
version: '{build}'
os: Visual Studio 2015
init: []
install: []
build_script:
- set PATH=C:\Program Files (x86)\MSBuild\14.0\Bin;%PATH%
- cmake . -G "Visual Studio 14 2015"
- cmake --build . --config Release
test_script:
- Release\json_unit.exe
- Release\json_unit.exe "*"
version: '{build}'
environment:
matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
configuration: Debug
platform: x86
CXX_FLAGS: "/W4 /WX"
CMAKE_OPTIONS: ""
GENERATOR: Visual Studio 14 2015
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
configuration: Release
platform: x86
CXX_FLAGS: "/W4 /WX"
CMAKE_OPTIONS: ""
GENERATOR: Visual Studio 14 2015
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
configuration: Release
platform: x86
name: with_win_header
CXX_FLAGS: "/W4 /WX"
CMAKE_OPTIONS: ""
GENERATOR: Visual Studio 14 2015
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
configuration: Release
platform: x86
CXX_FLAGS: "/permissive- /std:c++latest /utf-8 /W4 /WX"
CMAKE_OPTIONS: ""
GENERATOR: Visual Studio 15 2017
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
configuration: Release
platform: x86
CXX_FLAGS: "/W4 /WX"
CMAKE_OPTIONS: "-DJSON_ImplicitConversions=OFF"
GENERATOR: Visual Studio 16 2019
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
configuration: Release
platform: x64
CXX_FLAGS: "/W4 /WX"
CMAKE_OPTIONS: ""
GENERATOR: Visual Studio 14 2015
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
configuration: Release
platform: x64
CXX_FLAGS: "/permissive- /std:c++latest /Zc:__cplusplus /utf-8 /W4 /WX"
CMAKE_OPTIONS: ""
GENERATOR: Visual Studio 15 2017
init:
- cmake --version
- msbuild /version
install:
- if "%platform%"=="x86" set GENERATOR_PLATFORM=Win32
before_build:
# for with_win_header build, inject the inclusion of Windows.h to the single-header library
- ps: if ($env:name -Eq "with_win_header") { $header_path = "single_include\nlohmann\json.hpp" }
- ps: if ($env:name -Eq "with_win_header") { "#include <Windows.h>`n" + (Get-Content $header_path | Out-String) | Set-Content $header_path }
- cmake . -G "%GENERATOR%" -A "%GENERATOR_PLATFORM%" -DCMAKE_CXX_FLAGS="%CXX_FLAGS%" -DCMAKE_IGNORE_PATH="C:/Program Files/Git/usr/bin" -DJSON_BuildTests=On "%CMAKE_OPTIONS%"
build_script:
- cmake --build . --config "%configuration%"
test_script:
- if "%configuration%"=="Release" ctest -C "%configuration%" -V -j
# On Debug builds, skip test-unicode_all
# as it is extremely slow to run and cause
# occasional timeouts on AppVeyor.
# More info: https://github.com/nlohmann/json/pull/1570
- if "%configuration%"=="Debug" ctest --exclude-regex "test-unicode" -C "%configuration%" -V -j
# only build PRs and commits to develop branch
# (see https://help.appveyor.com/discussions/questions/55079-two-builds-per-commit-to-pull-request)
branches:
only:
- develop

33
benchmarks/CMakeLists.txt Normal file
View File

@@ -0,0 +1,33 @@
cmake_minimum_required(VERSION 3.11)
project(JSON_Benchmarks LANGUAGES CXX)
# set compiler flags
if((CMAKE_CXX_COMPILER_ID MATCHES GNU) OR (CMAKE_CXX_COMPILER_ID MATCHES Clang))
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -DNDEBUG -O3")
endif()
# configure Google Benchmarks
include(FetchContent)
FetchContent_Declare(
benchmark
GIT_REPOSITORY https://github.com/google/benchmark.git
GIT_TAG origin/main
GIT_SHALLOW TRUE
)
FetchContent_GetProperties(benchmark)
if(NOT benchmark_POPULATED)
FetchContent_Populate(benchmark)
set(BENCHMARK_ENABLE_TESTING OFF CACHE INTERNAL "" FORCE)
add_subdirectory(${benchmark_SOURCE_DIR} ${benchmark_BINARY_DIR})
endif()
# download test data
include(${CMAKE_SOURCE_DIR}/../cmake/download_test_data.cmake)
# benchmark binary
add_executable(json_benchmarks src/benchmarks.cpp)
target_compile_features(json_benchmarks PRIVATE cxx_std_11)
target_link_libraries(json_benchmarks benchmark ${CMAKE_THREAD_LIBS_INIT})
add_dependencies(json_benchmarks download_test_data)
target_include_directories(json_benchmarks PRIVATE ${CMAKE_SOURCE_DIR}/../single_include ${CMAKE_BINARY_DIR}/include)

View File

@@ -1,77 +0,0 @@
#define BENCHPRESS_CONFIG_MAIN
#include <fstream>
#include <benchpress.hpp>
#include <json.hpp>
BENCHMARK("parse jeopardy.json", [](benchpress::context* ctx)
{
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
std::ifstream input_file("benchmarks/files/jeopardy/jeopardy.json");
nlohmann::json j;
j << input_file;
}
})
BENCHMARK("parse canada.json", [](benchpress::context* ctx)
{
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
std::ifstream input_file("benchmarks/files/nativejson-benchmark/canada.json");
nlohmann::json j;
j << input_file;
}
})
BENCHMARK("parse citm_catalog.json", [](benchpress::context* ctx)
{
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
std::ifstream input_file("benchmarks/files/nativejson-benchmark/citm_catalog.json");
nlohmann::json j;
j << input_file;
}
})
BENCHMARK("parse twitter.json", [](benchpress::context* ctx)
{
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
std::ifstream input_file("benchmarks/files/nativejson-benchmark/twitter.json");
nlohmann::json j;
j << input_file;
}
})
BENCHMARK("dump jeopardy.json", [](benchpress::context* ctx)
{
std::ifstream input_file("benchmarks/files/jeopardy/jeopardy.json");
nlohmann::json j;
j << input_file;
std::ofstream output_file("jeopardy.dump.json");
ctx->reset_timer();
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
output_file << j;
}
std::remove("jeopardy.dump.json");
})
BENCHMARK("dump jeopardy.json with indent", [](benchpress::context* ctx)
{
std::ifstream input_file("benchmarks/files/jeopardy/jeopardy.json");
nlohmann::json j;
j << input_file;
std::ofstream output_file("jeopardy.dump.json");
ctx->reset_timer();
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
output_file << std::setw(4) << j;
}
std::remove("jeopardy.dump.json");
})

View File

@@ -1,401 +0,0 @@
/*
* Copyright (C) 2015 Christopher Gilbert.
*
* 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.
*/
#ifndef BENCHPRESS_HPP
#define BENCHPRESS_HPP
#include <algorithm> // max, min
#include <atomic> // atomic_intmax_t
#include <chrono> // high_resolution_timer, duration
#include <functional> // function
#include <iomanip> // setw
#include <iostream> // cout
#include <regex> // regex, regex_match
#include <sstream> // stringstream
#include <string> // string
#include <thread> // thread
#include <vector> // vector
namespace benchpress {
/*
* The options class encapsulates all options for running benchmarks.
*
* When including benchpress, a main function can be emitted which includes a command-line parser for building an
* options object. However from time-to-time it may be necessary for the developer to have to build their own main
* stub and construct the options object manually.
*
* options opts;
* opts
* .bench(".*")
* .benchtime(1)
* .cpu(4);
*/
class options {
std::string d_bench;
size_t d_benchtime;
size_t d_cpu;
public:
options()
: d_bench(".*")
, d_benchtime(1)
, d_cpu(std::thread::hardware_concurrency())
{}
options& bench(const std::string& bench) {
d_bench = bench;
return *this;
}
options& benchtime(size_t benchtime) {
d_benchtime = benchtime;
return *this;
}
options& cpu(size_t cpu) {
d_cpu = cpu;
return *this;
}
std::string get_bench() const {
return d_bench;
}
size_t get_benchtime() const {
return d_benchtime;
}
size_t get_cpu() const {
return d_cpu;
}
};
class context;
/*
* The benchmark_info class is used to store a function name / pointer pair.
*
* benchmark_info bi("example", [](benchpress::context* b) {
* // benchmark function
* });
*/
class benchmark_info {
std::string d_name;
std::function<void(context*)> d_func;
public:
benchmark_info(std::string name, std::function<void(context*)> func)
: d_name(name)
, d_func(func)
{}
std::string get_name() const { return d_name; }
std::function<void(context*)> get_func() const { return d_func; }
};
/*
* The registration class is responsible for providing a single global point of reference for registering
* benchmark functions.
*
* registration::get_ptr()->register_benchmark(info);
*/
class registration {
static registration* d_this;
std::vector<benchmark_info> d_benchmarks;
public:
static registration* get_ptr() {
if (nullptr == d_this) {
d_this = new registration();
}
return d_this;
}
void register_benchmark(benchmark_info& info) {
d_benchmarks.push_back(info);
}
std::vector<benchmark_info> get_benchmarks() { return d_benchmarks; }
};
/*
* The auto_register class is a helper used to register benchmarks.
*/
class auto_register {
public:
auto_register(const std::string& name, std::function<void(context*)> func) {
benchmark_info info(name, func);
registration::get_ptr()->register_benchmark(info);
}
};
#define CONCAT(x, y) x ## y
#define CONCAT2(x, y) CONCAT(x, y)
// The BENCHMARK macro is a helper for creating benchmark functions and automatically registering them with the
// registration class.
#define BENCHMARK(x, f) benchpress::auto_register CONCAT2(register_, __LINE__)((x), (f));
// This macro will prevent the compiler from removing a redundant code path which has no side-effects.
#define DISABLE_REDUNDANT_CODE_OPT() { asm(""); }
/*
* The result class is responsible for producing a printable string representation of a benchmark run.
*/
class result {
size_t d_num_iterations;
std::chrono::nanoseconds d_duration;
size_t d_num_bytes;
public:
result(size_t num_iterations, std::chrono::nanoseconds duration, size_t num_bytes)
: d_num_iterations(num_iterations)
, d_duration(duration)
, d_num_bytes(num_bytes)
{}
size_t get_ns_per_op() const {
if (d_num_iterations <= 0) {
return 0;
}
return d_duration.count() / d_num_iterations;
}
double get_mb_per_s() const {
if (d_num_iterations <= 0 || d_duration.count() <= 0 || d_num_bytes <= 0) {
return 0;
}
return ((double(d_num_bytes) * double(d_num_iterations) / double(1e6)) /
double(std::chrono::duration_cast<std::chrono::seconds>(d_duration).count()));
}
std::string to_string() const {
std::stringstream tmp;
tmp << std::setw(12) << std::right << d_num_iterations;
size_t npo = get_ns_per_op();
tmp << std::setw(12) << std::right << npo << std::setw(0) << " ns/op";
double mbs = get_mb_per_s();
if (mbs > 0.0) {
tmp << std::setw(12) << std::right << mbs << std::setw(0) << " MB/s";
}
return std::string(tmp.str());
}
};
/*
* The parallel_context class is responsible for providing a thread-safe context for parallel benchmark code.
*/
class parallel_context {
std::atomic_intmax_t d_num_iterations;
public:
parallel_context(size_t num_iterations)
: d_num_iterations(num_iterations)
{}
bool next() {
return (d_num_iterations.fetch_sub(1) > 0);
}
};
/*
* The context class is responsible for providing an interface for capturing benchmark metrics to benchmark functions.
*/
class context {
bool d_timer_on;
std::chrono::high_resolution_clock::time_point d_start;
std::chrono::nanoseconds d_duration;
std::chrono::seconds d_benchtime;
size_t d_num_iterations;
size_t d_num_threads;
size_t d_num_bytes;
benchmark_info d_benchmark;
public:
context(const benchmark_info& info, const options& opts)
: d_timer_on(false)
, d_start()
, d_duration()
, d_benchtime(std::chrono::seconds(opts.get_benchtime()))
, d_num_iterations(1)
, d_num_threads(opts.get_cpu())
, d_num_bytes(0)
, d_benchmark(info)
{}
size_t num_iterations() const { return d_num_iterations; }
void set_num_threads(size_t n) { d_num_threads = n; }
size_t num_threads() const { return d_num_threads; }
void start_timer() {
if (!d_timer_on) {
d_start = std::chrono::high_resolution_clock::now();
d_timer_on = true;
}
}
void stop_timer() {
if (d_timer_on) {
d_duration += std::chrono::high_resolution_clock::now() - d_start;
d_timer_on = false;
}
}
void reset_timer() {
if (d_timer_on) {
d_start = std::chrono::high_resolution_clock::now();
}
d_duration = std::chrono::nanoseconds::zero();
}
void set_bytes(int64_t bytes) { d_num_bytes = bytes; }
size_t get_ns_per_op() {
if (d_num_iterations <= 0) {
return 0;
}
return d_duration.count() / d_num_iterations;
}
void run_n(size_t n) {
d_num_iterations = n;
reset_timer();
start_timer();
d_benchmark.get_func()(this);
stop_timer();
}
void run_parallel(std::function<void(parallel_context*)> f) {
parallel_context pc(d_num_iterations);
std::vector<std::thread> threads;
for (size_t i = 0; i < d_num_threads; ++i) {
threads.push_back(std::thread([&pc,&f]() -> void {
f(&pc);
}));
}
for(auto& thread : threads){
thread.join();
}
}
result run() {
size_t n = 1;
run_n(n);
while (d_duration < d_benchtime && n < 1e9) {
size_t last = n;
if (get_ns_per_op() == 0) {
n = 1e9;
} else {
n = d_duration.count() / get_ns_per_op();
}
n = std::max(std::min(n+n/2, 100*last), last+1);
n = round_up(n);
run_n(n);
}
return result(n, d_duration, d_num_bytes);
}
private:
template<typename T>
T round_down_10(T n) {
int tens = 0;
while (n > 10) {
n /= 10;
tens++;
}
int result = 1;
for (int i = 0; i < tens; ++i) {
result *= 10;
}
return result;
}
template<typename T>
T round_up(T n) {
T base = round_down_10(n);
if (n < (2 * base)) {
return 2 * base;
}
if (n < (5 * base)) {
return 5 * base;
}
return 10 * base;
}
};
/*
* The run_benchmarks function will run the registered benchmarks.
*/
void run_benchmarks(const options& opts) {
std::regex match_r(opts.get_bench());
auto benchmarks = registration::get_ptr()->get_benchmarks();
for (auto& info : benchmarks) {
if (std::regex_match(info.get_name(), match_r)) {
context c(info, opts);
auto r = c.run();
std::cout << std::setw(35) << std::left << info.get_name() << r.to_string() << std::endl;
}
}
}
} // namespace benchpress
/*
* If BENCHPRESS_CONFIG_MAIN is defined when the file is included then a main function will be emitted which provides a
* command-line parser and then executes run_benchmarks.
*/
#ifdef BENCHPRESS_CONFIG_MAIN
#include "cxxopts.hpp"
benchpress::registration* benchpress::registration::d_this;
int main(int argc, char** argv) {
std::chrono::high_resolution_clock::time_point bp_start = std::chrono::high_resolution_clock::now();
benchpress::options bench_opts;
try {
cxxopts::Options cmd_opts(argv[0], " - command line options");
cmd_opts.add_options()
("bench", "run benchmarks matching the regular expression", cxxopts::value<std::string>()
->default_value(".*"))
("benchtime", "run enough iterations of each benchmark to take t seconds", cxxopts::value<size_t>()
->default_value("1"))
("cpu", "specify the number of threads to use for parallel benchmarks", cxxopts::value<size_t>()
->default_value(std::to_string(std::thread::hardware_concurrency())))
("help", "print help")
;
cmd_opts.parse(argc, argv);
if (cmd_opts.count("help")) {
std::cout << cmd_opts.help({""}) << std::endl;
exit(0);
}
if (cmd_opts.count("bench")) {
bench_opts.bench(cmd_opts["bench"].as<std::string>());
}
if (cmd_opts.count("benchtime")) {
bench_opts.benchtime(cmd_opts["benchtime"].as<size_t>());
}
if (cmd_opts.count("cpu")) {
bench_opts.cpu(cmd_opts["cpu"].as<size_t>());
}
} catch (const cxxopts::OptionException& e) {
std::cout << "error parsing options: " << e.what() << std::endl;
exit(1);
}
benchpress::run_benchmarks(bench_opts);
float duration = std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::high_resolution_clock::now() - bp_start
).count() / 1000.f;
std::cout << argv[0] << " " << duration << "s" << std::endl;
return 0;
}
#endif
#endif // BENCHPRESS_HPP

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,110 @@
#include "benchmark/benchmark.h"
#include <nlohmann/json.hpp>
#include <fstream>
#include <test_data.hpp>
using json = nlohmann::json;
//////////////////////////////////////////////////////////////////////////////
// parse JSON from file
//////////////////////////////////////////////////////////////////////////////
static void ParseFile(benchmark::State& state, const char* filename)
{
while (state.KeepRunning())
{
state.PauseTiming();
auto* f = new std::ifstream(filename);
auto* j = new json();
state.ResumeTiming();
*j = json::parse(*f);
state.PauseTiming();
delete f;
delete j;
state.ResumeTiming();
}
std::ifstream file(filename, std::ios::binary | std::ios::ate);
state.SetBytesProcessed(state.iterations() * file.tellg());
}
BENCHMARK_CAPTURE(ParseFile, jeopardy, TEST_DATA_DIRECTORY "/jeopardy/jeopardy.json");
BENCHMARK_CAPTURE(ParseFile, canada, TEST_DATA_DIRECTORY "/nativejson-benchmark/canada.json");
BENCHMARK_CAPTURE(ParseFile, citm_catalog, TEST_DATA_DIRECTORY "/nativejson-benchmark/citm_catalog.json");
BENCHMARK_CAPTURE(ParseFile, twitter, TEST_DATA_DIRECTORY "/nativejson-benchmark/twitter.json");
BENCHMARK_CAPTURE(ParseFile, floats, TEST_DATA_DIRECTORY "/regression/floats.json");
BENCHMARK_CAPTURE(ParseFile, signed_ints, TEST_DATA_DIRECTORY "/regression/signed_ints.json");
BENCHMARK_CAPTURE(ParseFile, unsigned_ints, TEST_DATA_DIRECTORY "/regression/unsigned_ints.json");
BENCHMARK_CAPTURE(ParseFile, small_signed_ints, TEST_DATA_DIRECTORY "/regression/small_signed_ints.json");
//////////////////////////////////////////////////////////////////////////////
// parse JSON from string
//////////////////////////////////////////////////////////////////////////////
static void ParseString(benchmark::State& state, const char* filename)
{
std::ifstream f(filename);
std::string str((std::istreambuf_iterator<char>(f)), std::istreambuf_iterator<char>());
while (state.KeepRunning())
{
state.PauseTiming();
auto* j = new json();
state.ResumeTiming();
*j = json::parse(str);
state.PauseTiming();
delete j;
state.ResumeTiming();
}
state.SetBytesProcessed(state.iterations() * str.size());
}
BENCHMARK_CAPTURE(ParseString, jeopardy, TEST_DATA_DIRECTORY "/jeopardy/jeopardy.json");
BENCHMARK_CAPTURE(ParseString, canada, TEST_DATA_DIRECTORY "/nativejson-benchmark/canada.json");
BENCHMARK_CAPTURE(ParseString, citm_catalog, TEST_DATA_DIRECTORY "/nativejson-benchmark/citm_catalog.json");
BENCHMARK_CAPTURE(ParseString, twitter, TEST_DATA_DIRECTORY "/nativejson-benchmark/twitter.json");
BENCHMARK_CAPTURE(ParseString, floats, TEST_DATA_DIRECTORY "/regression/floats.json");
BENCHMARK_CAPTURE(ParseString, signed_ints, TEST_DATA_DIRECTORY "/regression/signed_ints.json");
BENCHMARK_CAPTURE(ParseString, unsigned_ints, TEST_DATA_DIRECTORY "/regression/unsigned_ints.json");
BENCHMARK_CAPTURE(ParseString, small_signed_ints, TEST_DATA_DIRECTORY "/regression/small_signed_ints.json");
//////////////////////////////////////////////////////////////////////////////
// serialize JSON
//////////////////////////////////////////////////////////////////////////////
static void Dump(benchmark::State& state, const char* filename, int indent)
{
std::ifstream f(filename);
std::string str((std::istreambuf_iterator<char>(f)), std::istreambuf_iterator<char>());
json j = json::parse(str);
while (state.KeepRunning())
{
j.dump(indent);
}
state.SetBytesProcessed(state.iterations() * j.dump(indent).size());
}
BENCHMARK_CAPTURE(Dump, jeopardy / -, TEST_DATA_DIRECTORY "/jeopardy/jeopardy.json", -1);
BENCHMARK_CAPTURE(Dump, jeopardy / 4, TEST_DATA_DIRECTORY "/jeopardy/jeopardy.json", 4);
BENCHMARK_CAPTURE(Dump, canada / -, TEST_DATA_DIRECTORY "/nativejson-benchmark/canada.json", -1);
BENCHMARK_CAPTURE(Dump, canada / 4, TEST_DATA_DIRECTORY "/nativejson-benchmark/canada.json", 4);
BENCHMARK_CAPTURE(Dump, citm_catalog / -, TEST_DATA_DIRECTORY "/nativejson-benchmark/citm_catalog.json", -1);
BENCHMARK_CAPTURE(Dump, citm_catalog / 4, TEST_DATA_DIRECTORY "/nativejson-benchmark/citm_catalog.json", 4);
BENCHMARK_CAPTURE(Dump, twitter / -, TEST_DATA_DIRECTORY "/nativejson-benchmark/twitter.json", -1);
BENCHMARK_CAPTURE(Dump, twitter / 4, TEST_DATA_DIRECTORY "/nativejson-benchmark/twitter.json", 4);
BENCHMARK_CAPTURE(Dump, floats / -, TEST_DATA_DIRECTORY "/regression/floats.json", -1);
BENCHMARK_CAPTURE(Dump, floats / 4, TEST_DATA_DIRECTORY "/regression/floats.json", 4);
BENCHMARK_CAPTURE(Dump, signed_ints / -, TEST_DATA_DIRECTORY "/regression/signed_ints.json", -1);
BENCHMARK_CAPTURE(Dump, signed_ints / 4, TEST_DATA_DIRECTORY "/regression/signed_ints.json", 4);
BENCHMARK_CAPTURE(Dump, unsigned_ints / -, TEST_DATA_DIRECTORY "/regression/unsigned_ints.json", -1);
BENCHMARK_CAPTURE(Dump, unsigned_ints / 4, TEST_DATA_DIRECTORY "/regression/unsigned_ints.json", 4);
BENCHMARK_CAPTURE(Dump, small_signed_ints / -, TEST_DATA_DIRECTORY "/regression/small_signed_ints.json", -1);
BENCHMARK_CAPTURE(Dump, small_signed_ints / 4, TEST_DATA_DIRECTORY "/regression/small_signed_ints.json", 4);
BENCHMARK_MAIN();

835
cmake/ci.cmake Normal file
View File

@@ -0,0 +1,835 @@
# number of parallel jobs for CTest
set(N 10)
###############################################################################
# Needed tools.
###############################################################################
include(FindPython3)
find_package(Python3 COMPONENTS Interpreter)
find_program(ASTYLE_TOOL NAMES astyle)
execute_process(COMMAND ${ASTYLE_TOOL} --version OUTPUT_VARIABLE ASTYLE_TOOL_VERSION ERROR_VARIABLE ASTYLE_TOOL_VERSION)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" ASTYLE_TOOL_VERSION "${ASTYLE_TOOL_VERSION}")
message(STATUS "🔖 Artistic Style ${ASTYLE_TOOL_VERSION} (${ASTYLE_TOOL})")
find_program(CLANG_TOOL NAMES clang++-HEAD clang++-12 clang++-11 clang++)
execute_process(COMMAND ${CLANG_TOOL} --version OUTPUT_VARIABLE CLANG_TOOL_VERSION ERROR_VARIABLE CLANG_TOOL_VERSION)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" CLANG_TOOL_VERSION "${CLANG_TOOL_VERSION}")
message(STATUS "🔖 Clang ${CLANG_TOOL_VERSION} (${CLANG_TOOL})")
find_program(CLANG_TIDY_TOOL NAMES clang-tidy-12 clang-tidy-11 clang-tidy)
execute_process(COMMAND ${CLANG_TIDY_TOOL} --version OUTPUT_VARIABLE CLANG_TIDY_TOOL_VERSION ERROR_VARIABLE CLANG_TIDY_TOOL_VERSION)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" CLANG_TIDY_TOOL_VERSION "${CLANG_TIDY_TOOL_VERSION}")
message(STATUS "🔖 Clang-Tidy ${CLANG_TIDY_TOOL_VERSION} (${CLANG_TIDY_TOOL})")
message(STATUS "🔖 CMake ${CMAKE_VERSION} (${CMAKE_COMMAND})")
find_program(CPPCHECK_TOOL NAMES cppcheck)
execute_process(COMMAND ${CPPCHECK_TOOL} --version OUTPUT_VARIABLE CPPCHECK_TOOL_VERSION ERROR_VARIABLE CPPCHECK_TOOL_VERSION)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" CPPCHECK_TOOL_VERSION "${CPPCHECK_TOOL_VERSION}")
message(STATUS "🔖 Cppcheck ${CPPCHECK_TOOL_VERSION} (${CPPCHECK_TOOL})")
find_program(GCC_TOOL NAMES g++-HEAD g++-11 g++-latest)
execute_process(COMMAND ${GCC_TOOL} --version OUTPUT_VARIABLE GCC_TOOL_VERSION ERROR_VARIABLE GCC_TOOL_VERSION)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" GCC_TOOL_VERSION "${GCC_TOOL_VERSION}")
message(STATUS "🔖 GCC ${GCC_TOOL_VERSION} (${GCC_TOOL})")
find_program(GCOV_TOOL NAMES gcov-HEAD gcov-11 gcov-10 gcov)
execute_process(COMMAND ${GCOV_TOOL} --version OUTPUT_VARIABLE GCOV_TOOL_VERSION ERROR_VARIABLE GCOV_TOOL_VERSION)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" GCOV_TOOL_VERSION "${GCOV_TOOL_VERSION}")
message(STATUS "🔖 GCOV ${GCOV_TOOL_VERSION} (${GCOV_TOOL})")
find_program(GIT_TOOL NAMES git)
execute_process(COMMAND ${GIT_TOOL} --version OUTPUT_VARIABLE GIT_TOOL_VERSION ERROR_VARIABLE GIT_TOOL_VERSION)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" GIT_TOOL_VERSION "${GIT_TOOL_VERSION}")
message(STATUS "🔖 Git ${GIT_TOOL_VERSION} (${GIT_TOOL})")
find_program(IWYU_TOOL NAMES include-what-you-use iwyu)
execute_process(COMMAND ${IWYU_TOOL} --version OUTPUT_VARIABLE IWYU_TOOL_VERSION ERROR_VARIABLE IWYU_TOOL_VERSION)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" IWYU_TOOL_VERSION "${IWYU_TOOL_VERSION}")
message(STATUS "🔖 include-what-you-use ${IWYU_TOOL_VERSION} (${IWYU_TOOL})")
find_program(INFER_TOOL NAMES infer)
execute_process(COMMAND ${INFER_TOOL} --version OUTPUT_VARIABLE INFER_TOOL_VERSION ERROR_VARIABLE INFER_TOOL_VERSION)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" INFER_TOOL_VERSION "${INFER_TOOL_VERSION}")
message(STATUS "🔖 Infer ${INFER_TOOL_VERSION} (${INFER_TOOL})")
find_program(LCOV_TOOL NAMES lcov)
execute_process(COMMAND ${LCOV_TOOL} --version OUTPUT_VARIABLE LCOV_TOOL_VERSION ERROR_VARIABLE LCOV_TOOL_VERSION)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" LCOV_TOOL_VERSION "${LCOV_TOOL_VERSION}")
message(STATUS "🔖 LCOV ${LCOV_TOOL_VERSION} (${LCOV_TOOL})")
find_program(NINJA_TOOL NAMES ninja)
execute_process(COMMAND ${NINJA_TOOL} --version OUTPUT_VARIABLE NINJA_TOOL_VERSION ERROR_VARIABLE NINJA_TOOL_VERSION)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" NINJA_TOOL_VERSION "${NINJA_TOOL_VERSION}")
message(STATUS "🔖 Ninja ${NINJA_TOOL_VERSION} (${NINJA_TOOL})")
find_program(OCLINT_TOOL NAMES oclint-json-compilation-database)
find_program(OCLINT_VERSION_TOOL NAMES oclint)
execute_process(COMMAND ${OCLINT_VERSION_TOOL} --version OUTPUT_VARIABLE OCLINT_TOOL_VERSION ERROR_VARIABLE OCLINT_TOOL_VERSION)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" OCLINT_TOOL_VERSION "${OCLINT_TOOL_VERSION}")
message(STATUS "🔖 OCLint ${OCLINT_TOOL_VERSION} (${OCLINT_TOOL})")
find_program(VALGRIND_TOOL NAMES valgrind)
execute_process(COMMAND ${VALGRIND_TOOL} --version OUTPUT_VARIABLE VALGRIND_TOOL_VERSION ERROR_VARIABLE VALGRIND_TOOL_VERSION)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)+" VALGRIND_TOOL_VERSION "${VALGRIND_TOOL_VERSION}")
message(STATUS "🔖 Valgrind ${VALGRIND_TOOL_VERSION} (${VALGRIND_TOOL})")
find_program(GENHTML_TOOL NAMES genhtml)
find_program(PLOG_CONVERTER_TOOL NAMES plog-converter)
find_program(PVS_STUDIO_ANALYZER_TOOL NAMES pvs-studio-analyzer)
find_program(SCAN_BUILD_TOOL NAMES scan-build-11 scan-build)
# the individual source files
file(GLOB_RECURSE SRC_FILES ${PROJECT_SOURCE_DIR}/include/nlohmann/*.hpp)
###############################################################################
# Thorough check with recent compilers
###############################################################################
# Ignored Clang warnings:
# -Wno-c++98-compat The library targets C++11.
# -Wno-c++98-compat-pedantic The library targets C++11.
# -Wno-deprecated-declarations The library contains annotations for deprecated functions.
# -Wno-extra-semi-stmt The library uses std::assert which triggers this warning.
# -Wno-padded We do not care about padding warnings.
# -Wno-covered-switch-default All switches list all cases and a default case.
# -Wno-weak-vtables The library is header-only.
set(CLANG_CXXFLAGS "-std=c++11 \
-Werror \
-Weverything \
-Wno-c++98-compat \
-Wno-c++98-compat-pedantic \
-Wno-deprecated-declarations \
-Wno-extra-semi-stmt \
-Wno-padded \
-Wno-covered-switch-default \
-Wno-weak-vtables \
")
# Ignored GCC warnings:
# -Wno-abi-tag We do not care about ABI tags.
# -Wno-aggregate-return The library uses aggregate returns.
# -Wno-long-long The library uses the long long type to interface with system functions.
# -Wno-namespaces The library uses namespaces.
# -Wno-padded We do not care about padding warnings.
# -Wno-system-headers We do not care about warnings in system headers.
# -Wno-templates The library uses templates.
set(GCC_CXXFLAGS "-std=c++11 \
-pedantic \
-Werror \
--all-warnings \
--extra-warnings \
-W \
-WNSObject-attribute \
-Wno-abi-tag \
-Waddress \
-Waddress-of-packed-member \
-Wno-aggregate-return \
-Waggressive-loop-optimizations \
-Waligned-new=all \
-Wall \
-Walloc-zero \
-Walloca \
-Wanalyzer-double-fclose \
-Wanalyzer-double-free \
-Wanalyzer-exposure-through-output-file \
-Wanalyzer-file-leak \
-Wanalyzer-free-of-non-heap \
-Wanalyzer-malloc-leak \
-Wanalyzer-mismatching-deallocation \
-Wanalyzer-null-argument \
-Wanalyzer-null-dereference \
-Wanalyzer-possible-null-argument \
-Wanalyzer-possible-null-dereference \
-Wanalyzer-shift-count-negative \
-Wanalyzer-shift-count-overflow \
-Wanalyzer-stale-setjmp-buffer \
-Wanalyzer-tainted-array-index \
-Wanalyzer-too-complex \
-Wanalyzer-unsafe-call-within-signal-handler \
-Wanalyzer-use-after-free \
-Wanalyzer-use-of-pointer-in-stale-stack-frame \
-Wanalyzer-write-to-const \
-Wanalyzer-write-to-string-literal \
-Warith-conversion \
-Warray-bounds \
-Warray-bounds=2 \
-Warray-parameter=2 \
-Wattribute-alias=2 \
-Wattribute-warning \
-Wattributes \
-Wbool-compare \
-Wbool-operation \
-Wbuiltin-declaration-mismatch \
-Wbuiltin-macro-redefined \
-Wc++0x-compat \
-Wc++11-compat \
-Wc++14-compat \
-Wc++17-compat \
-Wc++1z-compat \
-Wc++20-compat \
-Wc++2a-compat \
-Wcannot-profile \
-Wcast-align \
-Wcast-align=strict \
-Wcast-function-type \
-Wcast-qual \
-Wcatch-value=3 \
-Wchar-subscripts \
-Wclass-conversion \
-Wclass-memaccess \
-Wclobbered \
-Wcomma-subscript \
-Wcomment \
-Wcomments \
-Wconditionally-supported \
-Wconversion \
-Wconversion-null \
-Wcoverage-mismatch \
-Wcpp \
-Wctad-maybe-unsupported \
-Wctor-dtor-privacy \
-Wdangling-else \
-Wdate-time \
-Wdelete-incomplete \
-Wdelete-non-virtual-dtor \
-Wdeprecated \
-Wdeprecated-copy \
-Wdeprecated-copy-dtor \
-Wdeprecated-declarations \
-Wdeprecated-enum-enum-conversion \
-Wdeprecated-enum-float-conversion \
-Wdisabled-optimization \
-Wdiv-by-zero \
-Wdouble-promotion \
-Wduplicated-branches \
-Wduplicated-cond \
-Weffc++ \
-Wempty-body \
-Wendif-labels \
-Wenum-compare \
-Wenum-conversion \
-Wexpansion-to-defined \
-Wextra \
-Wextra-semi \
-Wfloat-conversion \
-Wfloat-equal \
-Wformat-contains-nul \
-Wformat-diag \
-Wformat-extra-args \
-Wformat-nonliteral \
-Wformat-overflow=2 \
-Wformat-security \
-Wformat-signedness \
-Wformat-truncation=2 \
-Wformat-y2k \
-Wformat-zero-length \
-Wformat=2 \
-Wframe-address \
-Wfree-nonheap-object \
-Whsa \
-Wif-not-aligned \
-Wignored-attributes \
-Wignored-qualifiers \
-Wimplicit-fallthrough=5 \
-Winaccessible-base \
-Winherited-variadic-ctor \
-Winit-list-lifetime \
-Winit-self \
-Winline \
-Wint-in-bool-context \
-Wint-to-pointer-cast \
-Winvalid-memory-model \
-Winvalid-offsetof \
-Winvalid-pch \
-Wliteral-suffix \
-Wlogical-not-parentheses \
-Wlogical-op \
-Wno-long-long \
-Wlto-type-mismatch \
-Wmain \
-Wmaybe-uninitialized \
-Wmemset-elt-size \
-Wmemset-transposed-args \
-Wmisleading-indentation \
-Wmismatched-dealloc \
-Wmismatched-new-delete \
-Wmismatched-tags \
-Wmissing-attributes \
-Wmissing-braces \
-Wmissing-declarations \
-Wmissing-field-initializers \
-Wmissing-include-dirs \
-Wmissing-profile \
-Wmultichar \
-Wmultiple-inheritance \
-Wmultistatement-macros \
-Wno-namespaces \
-Wnarrowing \
-Wnoexcept \
-Wnoexcept-type \
-Wnon-template-friend \
-Wnon-virtual-dtor \
-Wnonnull \
-Wnonnull-compare \
-Wnormalized=nfkc \
-Wnull-dereference \
-Wodr \
-Wold-style-cast \
-Wopenmp-simd \
-Woverflow \
-Woverlength-strings \
-Woverloaded-virtual \
-Wpacked \
-Wpacked-bitfield-compat \
-Wpacked-not-aligned \
-Wno-padded \
-Wparentheses \
-Wpedantic \
-Wpessimizing-move \
-Wplacement-new=2 \
-Wpmf-conversions \
-Wpointer-arith \
-Wpointer-compare \
-Wpragmas \
-Wprio-ctor-dtor \
-Wpsabi \
-Wrange-loop-construct \
-Wredundant-decls \
-Wredundant-move \
-Wredundant-tags \
-Wregister \
-Wreorder \
-Wrestrict \
-Wreturn-local-addr \
-Wreturn-type \
-Wscalar-storage-order \
-Wsequence-point \
-Wshadow=compatible-local \
-Wshadow=global \
-Wshadow=local \
-Wshift-count-negative \
-Wshift-count-overflow \
-Wshift-negative-value \
-Wshift-overflow=2 \
-Wsign-compare \
-Wsign-conversion \
-Wsign-promo \
-Wsized-deallocation \
-Wsizeof-array-argument \
-Wsizeof-array-div \
-Wsizeof-pointer-div \
-Wsizeof-pointer-memaccess \
-Wstack-protector \
-Wstrict-aliasing \
-Wstrict-aliasing=3 \
-Wstrict-null-sentinel \
-Wstrict-overflow \
-Wstrict-overflow=5 \
-Wstring-compare \
-Wstringop-overflow=4 \
-Wstringop-overread \
-Wstringop-truncation \
-Wsubobject-linkage \
-Wsuggest-attribute=cold \
-Wsuggest-attribute=const \
-Wsuggest-attribute=format \
-Wsuggest-attribute=malloc \
-Wsuggest-attribute=noreturn \
-Wsuggest-attribute=pure \
-Wsuggest-final-methods \
-Wsuggest-final-types \
-Wsuggest-override \
-Wswitch \
-Wswitch-bool \
-Wswitch-default \
-Wswitch-enum \
-Wswitch-outside-range \
-Wswitch-unreachable \
-Wsync-nand \
-Wsynth \
-Wno-system-headers \
-Wtautological-compare \
-Wno-templates \
-Wterminate \
-Wtrampolines \
-Wtrigraphs \
-Wtsan \
-Wtype-limits \
-Wundef \
-Wuninitialized \
-Wunknown-pragmas \
-Wunreachable-code \
-Wunsafe-loop-optimizations \
-Wunused \
-Wunused-but-set-parameter \
-Wunused-but-set-variable \
-Wunused-const-variable=2 \
-Wunused-function \
-Wunused-label \
-Wunused-local-typedefs \
-Wunused-macros \
-Wunused-parameter \
-Wunused-result \
-Wunused-value \
-Wunused-variable \
-Wuseless-cast \
-Wvarargs \
-Wvariadic-macros \
-Wvector-operation-performance \
-Wvexing-parse \
-Wvirtual-inheritance \
-Wvirtual-move-assign \
-Wvla \
-Wvla-parameter \
-Wvolatile \
-Wvolatile-register-var \
-Wwrite-strings \
-Wzero-as-null-pointer-constant \
-Wzero-length-bounds \
")
add_custom_target(ci_test_gcc
COMMAND CXX=${GCC_TOOL} CXXFLAGS=${GCC_CXXFLAGS} ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DJSON_BuildTests=ON -DJSON_MultipleHeaders=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_gcc
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_gcc
COMMAND cd ${PROJECT_BINARY_DIR}/build_gcc && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure
COMMENT "Compile and test with GCC using maximal warning flags"
)
add_custom_target(ci_test_clang
COMMAND CXX=${CLANG_TOOL} CXXFLAGS=${CLANG_CXXFLAGS} ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DJSON_BuildTests=ON -DJSON_MultipleHeaders=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_clang
COMMAND cd ${PROJECT_BINARY_DIR}/build_clang && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure
COMMENT "Compile and test with Clang using maximal warning flags"
)
###############################################################################
# Different C++ Standards.
###############################################################################
foreach(CXX_STANDARD 11 14 17 20)
add_custom_target(ci_test_gcc_cxx${CXX_STANDARD}
COMMAND CXX=${GCC_TOOL} ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DCMAKE_CXX_STANDARD=${CXX_STANDARD} -DCMAKE_CXX_STANDARD_REQUIRED=ON
-DJSON_BuildTests=ON -DJSON_FastTests=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_gcc_cxx${CXX_STANDARD}
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_gcc_cxx${CXX_STANDARD}
COMMAND cd ${PROJECT_BINARY_DIR}/build_gcc_cxx${CXX_STANDARD} && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure
COMMENT "Compile and test with GCC for C++${CXX_STANDARD}"
)
add_custom_target(ci_test_clang_cxx${CXX_STANDARD}
COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DCMAKE_CXX_STANDARD=${CXX_STANDARD} -DCMAKE_CXX_STANDARD_REQUIRED=ON
-DJSON_BuildTests=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang_cxx${CXX_STANDARD}
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_clang_cxx${CXX_STANDARD}
COMMAND cd ${PROJECT_BINARY_DIR}/build_clang_cxx${CXX_STANDARD} && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure
COMMENT "Compile and test with Clang for C++${CXX_STANDARD}"
)
endforeach()
###############################################################################
# Disable exceptions.
###############################################################################
add_custom_target(ci_test_noexceptions
COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DJSON_BuildTests=ON -DJSON_MultipleHeaders=ON -DCMAKE_CXX_FLAGS=-DJSON_NOEXCEPTION -DDOCTEST_TEST_FILTER=--no-throw
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_noexceptions
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_noexceptions
COMMAND cd ${PROJECT_BINARY_DIR}/build_noexceptions && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure
COMMENT "Compile and test with exceptions switched off"
)
###############################################################################
# Disable implicit conversions.
###############################################################################
add_custom_target(ci_test_noimplicitconversions
COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DJSON_BuildTests=ON -DJSON_MultipleHeaders=ON -DJSON_ImplicitConversions=OFF
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_noimplicitconversions
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_noimplicitconversions
COMMAND cd ${PROJECT_BINARY_DIR}/build_noimplicitconversions && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure
COMMENT "Compile and test with implicit conversions switched off"
)
###############################################################################
# Enable improved diagnostics.
###############################################################################
add_custom_target(ci_test_diagnostics
COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DJSON_BuildTests=ON -DJSON_MultipleHeaders=ON -DJSON_Diagnostics=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_diagnostics
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_diagnostics
COMMAND cd ${PROJECT_BINARY_DIR}/build_diagnostics && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure
COMMENT "Compile and test with improved diagnostics enabled"
)
###############################################################################
# Coverage.
###############################################################################
add_custom_target(ci_test_coverage
COMMAND CXX=g++ ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja -DCMAKE_CXX_FLAGS="--coverage;-fprofile-arcs;-ftest-coverage"
-DJSON_BuildTests=ON -DJSON_MultipleHeaders=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_coverage
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_coverage
COMMAND cd ${PROJECT_BINARY_DIR}/build_coverage && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure
COMMAND ${LCOV_TOOL} --directory . --capture --output-file json.info --rc lcov_branch_coverage=1
COMMAND ${LCOV_TOOL} -e json.info ${SRC_FILES} --output-file json.info.filtered --rc lcov_branch_coverage=1
COMMAND ${CMAKE_SOURCE_DIR}/test/thirdparty/imapdl/filterbr.py json.info.filtered > json.info.filtered.noexcept
COMMAND genhtml --title "JSON for Modern C++" --legend --demangle-cpp --output-directory html --show-details --branch-coverage json.info.filtered.noexcept
COMMENT "Compile and test with coverage"
)
###############################################################################
# Sanitizers.
###############################################################################
set(CLANG_CXX_FLAGS_SANITIZER "-g -O1 -fsanitize=address -fsanitize=undefined -fsanitize=integer -fsanitize=nullability -fno-omit-frame-pointer -fno-sanitize-recover=all -fno-sanitize=unsigned-integer-overflow -fno-sanitize=unsigned-shift-base")
add_custom_target(ci_test_clang_sanitizer
COMMAND CXX=${CLANG_TOOL} CXXFLAGS=${CLANG_CXX_FLAGS_SANITIZER} ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DJSON_BuildTests=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang_sanitizer
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_clang_sanitizer
COMMAND cd ${PROJECT_BINARY_DIR}/build_clang_sanitizer && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure
COMMENT "Compile and test with sanitizers"
)
###############################################################################
# Check if header is amalgamated and sources are properly indented.
###############################################################################
set(ASTYLE_FLAGS --style=allman --indent=spaces=4 --indent-modifiers --indent-switches --indent-preproc-block --indent-preproc-define --indent-col1-comments --pad-oper --pad-header --align-pointer=type --align-reference=type --add-brackets --convert-tabs --close-templates --lineend=linux --preserve-date --formatted)
file(GLOB_RECURSE INDENT_FILES
${PROJECT_SOURCE_DIR}/include/nlohmann/*.hpp
${PROJECT_SOURCE_DIR}/test/src/*.cpp
${PROJECT_SOURCE_DIR}/test/src/*.hpp
${PROJECT_SOURCE_DIR}/benchmarks/src/benchmarks.cpp
${PROJECT_SOURCE_DIR}/doc/examples/*.cpp
)
add_custom_target(ci_test_amalgamation
COMMAND rm -fr ${PROJECT_SOURCE_DIR}/single_include/nlohmann/json.hpp~
COMMAND cp ${PROJECT_SOURCE_DIR}/single_include/nlohmann/json.hpp ${PROJECT_SOURCE_DIR}/single_include/nlohmann/json.hpp~
COMMAND ${Python3_EXECUTABLE} ${PROJECT_SOURCE_DIR}/third_party/amalgamate/amalgamate.py -c ${PROJECT_SOURCE_DIR}/third_party/amalgamate/config.json -s .
COMMAND ${ASTYLE_TOOL} ${ASTYLE_FLAGS} --suffix=none --quiet ${PROJECT_SOURCE_DIR}/single_include/nlohmann/json.hpp
COMMAND diff ${PROJECT_SOURCE_DIR}/single_include/nlohmann/json.hpp~ ${PROJECT_SOURCE_DIR}/single_include/nlohmann/json.hpp
COMMAND ${ASTYLE_TOOL} ${ASTYLE_FLAGS} ${INDENT_FILES}
COMMAND cd ${PROJECT_SOURCE_DIR} && for FILE in `find . -name '*.orig'`\; do false \; done
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMENT "Check amalagamation and indentation"
)
###############################################################################
# Valgrind.
###############################################################################
add_custom_target(ci_test_valgrind
COMMAND CXX=${GCC_TOOL} ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DJSON_BuildTests=ON -DJSON_Valgrind=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_valgrind
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_valgrind
COMMAND cd ${PROJECT_BINARY_DIR}/build_valgrind && ${CMAKE_CTEST_COMMAND} -L valgrind --parallel ${N} --output-on-failure
COMMENT "Compile and test with Valgrind"
)
###############################################################################
# Check code with Clang Static Analyzer.
###############################################################################
set(CLANG_ANALYZER_CHECKS "fuchsia.HandleChecker,nullability.NullableDereferenced,nullability.NullablePassedToNonnull,nullability.NullableReturnedFromNonnull,optin.cplusplus.UninitializedObject,optin.cplusplus.VirtualCall,optin.mpi.MPI-Checker,optin.osx.OSObjectCStyleCast,optin.osx.cocoa.localizability.EmptyLocalizationContextChecker,optin.osx.cocoa.localizability.NonLocalizedStringChecker,optin.performance.GCDAntipattern,optin.performance.Padding,optin.portability.UnixAPI,security.FloatLoopCounter,security.insecureAPI.DeprecatedOrUnsafeBufferHandling,security.insecureAPI.bcmp,security.insecureAPI.bcopy,security.insecureAPI.bzero,security.insecureAPI.rand,security.insecureAPI.strcpy,valist.CopyToSelf,valist.Uninitialized,valist.Unterminated,webkit.NoUncountedMemberChecker,webkit.RefCntblBaseVirtualDtor,core.CallAndMessage,core.DivideZero,core.NonNullParamChecker,core.NullDereference,core.StackAddressEscape,core.UndefinedBinaryOperatorResult,core.VLASize,core.uninitialized.ArraySubscript,core.uninitialized.Assign,core.uninitialized.Branch,core.uninitialized.CapturedBlockVariable,core.uninitialized.UndefReturn,cplusplus.InnerPointer,cplusplus.Move,cplusplus.NewDelete,cplusplus.NewDeleteLeaks,cplusplus.PlacementNew,cplusplus.PureVirtualCall,deadcode.DeadStores,nullability.NullPassedToNonnull,nullability.NullReturnedFromNonnull,osx.API,osx.MIG,osx.NumberObjectConversion,osx.OSObjectRetainCount,osx.ObjCProperty,osx.SecKeychainAPI,osx.cocoa.AtSync,osx.cocoa.AutoreleaseWrite,osx.cocoa.ClassRelease,osx.cocoa.Dealloc,osx.cocoa.IncompatibleMethodTypes,osx.cocoa.Loops,osx.cocoa.MissingSuperCall,osx.cocoa.NSAutoreleasePool,osx.cocoa.NSError,osx.cocoa.NilArg,osx.cocoa.NonNilReturnValue,osx.cocoa.ObjCGenerics,osx.cocoa.RetainCount,osx.cocoa.RunLoopAutoreleaseLeak,osx.cocoa.SelfInit,osx.cocoa.SuperDealloc,osx.cocoa.UnusedIvars,osx.cocoa.VariadicMethodTypes,osx.coreFoundation.CFError,osx.coreFoundation.CFNumber,osx.coreFoundation.CFRetainRelease,osx.coreFoundation.containers.OutOfBounds,osx.coreFoundation.containers.PointerSizedValues,security.insecureAPI.UncheckedReturn,security.insecureAPI.decodeValueOfObjCType,security.insecureAPI.getpw,security.insecureAPI.gets,security.insecureAPI.mkstemp,security.insecureAPI.mktemp,security.insecureAPI.vfork,unix.API,unix.Malloc,unix.MallocSizeof,unix.MismatchedDeallocator,unix.Vfork,unix.cstring.BadSizeArg,unix.cstring.NullArg")
add_custom_target(ci_clang_analyze
COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DJSON_BuildTests=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang_analyze
COMMAND cd ${PROJECT_BINARY_DIR}/build_clang_analyze && ${SCAN_BUILD_TOOL} -enable-checker ${CLANG_ANALYZER_CHECKS} --use-c++=${CLANG_TOOL} -analyze-headers -o ${PROJECT_BINARY_DIR}/report ninja
COMMENT "Check code with Clang Analyzer"
)
###############################################################################
# Check code with Cppcheck.
###############################################################################
add_custom_target(ci_cppcheck
COMMAND ${CPPCHECK_TOOL} --enable=warning --suppress=missingReturn --inline-suppr --inconclusive --force --std=c++11 ${PROJECT_SOURCE_DIR}/single_include/nlohmann/json.hpp --error-exitcode=1
COMMENT "Check code with Cppcheck"
)
###############################################################################
# Check code with cpplint.
###############################################################################
add_custom_target(ci_cpplint
COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/third_party/cpplint/cpplint.py --filter=-whitespace,-legal,-runtime/references,-runtime/explicit,-runtime/indentation_namespace,-readability/casting,-readability/nolint --quiet --recursive ${SRC_FILES}
COMMENT "Check code with cpplint"
)
###############################################################################
# Check code with OCLint.
###############################################################################
file(COPY ${PROJECT_SOURCE_DIR}/single_include/nlohmann/json.hpp DESTINATION ${PROJECT_BINARY_DIR}/src_single)
file(RENAME ${PROJECT_BINARY_DIR}/src_single/json.hpp ${PROJECT_BINARY_DIR}/src_single/all.cpp)
file(APPEND "${PROJECT_BINARY_DIR}/src_single/all.cpp" "\n\nint main()\n{}\n")
add_executable(single_all ${PROJECT_BINARY_DIR}/src_single/all.cpp)
target_compile_features(single_all PRIVATE cxx_std_11)
add_custom_target(ci_oclint
COMMAND ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
-DJSON_BuildTests=OFF -DJSON_CI=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_oclint
COMMAND ${OCLINT_TOOL} -i ${PROJECT_BINARY_DIR}/build_oclint/src_single/all.cpp -p ${PROJECT_BINARY_DIR}/build_oclint --
-report-type html -enable-global-analysis --max-priority-1=0 --max-priority-2=1000 --max-priority-3=2000
--disable-rule=MultipleUnaryOperator
--disable-rule=DoubleNegative
--disable-rule=ShortVariableName
--disable-rule=GotoStatement
--disable-rule=LongLine
-o ${PROJECT_BINARY_DIR}/build_oclint/oclint_report.html
COMMENT "Check code with OCLint"
)
###############################################################################
# Check code with Clang-Tidy.
###############################################################################
add_custom_target(ci_clang_tidy
COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_CXX_CLANG_TIDY=${CLANG_TIDY_TOOL}
-DJSON_BuildTests=ON -DJSON_MultipleHeaders=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_clang_tidy
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_clang_tidy
COMMENT "Check code with Clang-Tidy"
)
###############################################################################
# Check code with PVS-Studio Analyzer <https://www.viva64.com/en/pvs-studio/>.
###############################################################################
add_custom_target(ci_pvs_studio
COMMAND CXX=${CLANG_TOOL} ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
-DJSON_BuildTests=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_pvs_studio
COMMAND cd ${PROJECT_BINARY_DIR}/build_pvs_studio && ${PVS_STUDIO_ANALYZER_TOOL} analyze -j 10
COMMAND cd ${PROJECT_BINARY_DIR}/build_pvs_studio && ${PLOG_CONVERTER_TOOL} -a'GA:1,2;64:1;CS' -t fullhtml PVS-Studio.log -o pvs
COMMENT "Check code with PVS Studio"
)
###############################################################################
# Check code with Infer <https://fbinfer.com> static analyzer.
###############################################################################
add_custom_target(ci_infer
COMMAND mkdir -p ${PROJECT_BINARY_DIR}/build_infer
COMMAND cd ${PROJECT_BINARY_DIR}/build_infer && ${INFER_TOOL} compile -- ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${PROJECT_SOURCE_DIR} -DJSON_BuildTests=ON -DJSON_MultipleHeaders=ON
COMMAND cd ${PROJECT_BINARY_DIR}/build_infer && ${INFER_TOOL} run -- make
COMMENT "Check code with Infer"
)
###############################################################################
# Run test suite with previously downloaded test data.
###############################################################################
add_custom_target(ci_offline_testdata
COMMAND mkdir -p ${PROJECT_BINARY_DIR}/build_offline_testdata/test_data
COMMAND cd ${PROJECT_BINARY_DIR}/build_offline_testdata/test_data && ${GIT_TOOL} clone -c advice.detachedHead=false --branch v3.0.0 https://github.com/nlohmann/json_test_data.git --quiet --depth 1
COMMAND ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DJSON_BuildTests=ON -DJSON_FastTests=ON -DJSON_TestDataDirectory=${PROJECT_BINARY_DIR}/build_offline_testdata/test_data/json_test_data
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_offline_testdata
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_offline_testdata
COMMAND cd ${PROJECT_BINARY_DIR}/build_offline_testdata && ${CMAKE_CTEST_COMMAND} --parallel ${N} --output-on-failure
COMMENT "Check code with previously downloaded test data"
)
###############################################################################
# Run test suite when project was not checked out from Git
###############################################################################
add_custom_target(ci_non_git_tests
COMMAND mkdir -p ${PROJECT_BINARY_DIR}/build_non_git_tests/sources
COMMAND cd ${PROJECT_SOURCE_DIR} && for FILE in `${GIT_TOOL} ls-tree --name-only HEAD`\; do cp -r $$FILE ${PROJECT_BINARY_DIR}/build_non_git_tests/sources \; done
COMMAND ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DJSON_BuildTests=ON -DJSON_FastTests=ON
-S${PROJECT_BINARY_DIR}/build_non_git_tests/sources -B${PROJECT_BINARY_DIR}/build_non_git_tests
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_non_git_tests
COMMAND cd ${PROJECT_BINARY_DIR}/build_non_git_tests && ${CMAKE_CTEST_COMMAND} --parallel ${N} -LE git_required --output-on-failure
COMMENT "Check code when project was not checked out from Git"
)
###############################################################################
# Run test suite and exclude tests that change installed files
###############################################################################
add_custom_target(ci_reproducible_tests
COMMAND ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DJSON_BuildTests=ON -DJSON_FastTests=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_reproducible_tests
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_reproducible_tests
COMMAND cd ${PROJECT_BINARY_DIR}/build_reproducible_tests && ${CMAKE_CTEST_COMMAND} --parallel ${N} -LE not_reproducible --output-on-failure
COMMENT "Check code and exclude tests that change installed files"
)
###############################################################################
# Check if every header in the include folder includes sufficient headers to
# be compiled individually.
###############################################################################
set(iwyu_path_and_options ${IWYU_TOOL} -Xiwyu --max_line_length=300)
foreach(SRC_FILE ${SRC_FILES})
# get relative path of the header file
file(RELATIVE_PATH RELATIVE_SRC_FILE "${PROJECT_SOURCE_DIR}/include/nlohmann" "${SRC_FILE}")
# replace slashes and strip suffix
string(REPLACE "/" "_" RELATIVE_SRC_FILE "${RELATIVE_SRC_FILE}")
string(REPLACE ".hpp" "" RELATIVE_SRC_FILE "${RELATIVE_SRC_FILE}")
# create code file
file(WRITE "${PROJECT_BINARY_DIR}/src_single/${RELATIVE_SRC_FILE}.cpp" "#include \"${SRC_FILE}\" // IWYU pragma: keep\n\nint main()\n{}\n")
# create executable
add_executable(single_${RELATIVE_SRC_FILE} EXCLUDE_FROM_ALL ${PROJECT_BINARY_DIR}/src_single/${RELATIVE_SRC_FILE}.cpp)
target_include_directories(single_${RELATIVE_SRC_FILE} PRIVATE ${PROJECT_SOURCE_DIR}/include)
target_compile_features(single_${RELATIVE_SRC_FILE} PRIVATE cxx_std_11)
set_property(TARGET single_${RELATIVE_SRC_FILE} PROPERTY CXX_INCLUDE_WHAT_YOU_USE "${iwyu_path_and_options}")
# remember binary for ci_single_binaries target
list(APPEND single_binaries single_${RELATIVE_SRC_FILE})
endforeach()
add_custom_target(ci_single_binaries
DEPENDS ${single_binaries}
COMMENT "Check if headers are self-contained"
)
###############################################################################
# Benchmarks
###############################################################################
add_custom_target(ci_benchmarks
COMMAND ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Release -GNinja
-S${PROJECT_SOURCE_DIR}/benchmarks -B${PROJECT_BINARY_DIR}/build_benchmarks
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_benchmarks --target json_benchmarks
COMMAND cd ${PROJECT_BINARY_DIR}/build_benchmarks && ./json_benchmarks
COMMENT "Run benchmarks"
)
###############################################################################
# CMake flags
###############################################################################
if (APPLE)
set(CMAKE_310_BINARY ${PROJECT_BINARY_DIR}/cmake-3.1.0-Darwin64/CMake.app/Contents/bin/cmake)
add_custom_command(
OUTPUT ${CMAKE_310_BINARY}
COMMAND wget https://github.com/Kitware/CMake/releases/download/v3.1.0/cmake-3.1.0-Darwin64.tar.gz
COMMAND tar xfz cmake-3.1.0-Darwin64.tar.gz
COMMAND rm cmake-3.1.0-Darwin64.tar.gz
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
COMMENT "Download CMake 3.1.0"
)
else()
set(CMAKE_310_BINARY ${PROJECT_BINARY_DIR}/cmake-3.1.0-Linux-x86_64/bin/cmake)
add_custom_command(
OUTPUT ${CMAKE_310_BINARY}
COMMAND wget https://github.com/Kitware/CMake/releases/download/v3.1.0/cmake-3.1.0-Linux-x86_64.tar.gz
COMMAND tar xfz cmake-3.1.0-Linux-x86_64.tar.gz
COMMAND rm cmake-3.1.0-Linux-x86_64.tar.gz
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
COMMENT "Download CMake 3.1.0"
)
endif()
set(JSON_CMAKE_FLAGS "JSON_BuildTests;JSON_Install;JSON_MultipleHeaders;JSON_ImplicitConversions;JSON_Valgrind;JSON_Diagnostics;JSON_SystemInclude")
foreach(JSON_CMAKE_FLAG ${JSON_CMAKE_FLAGS})
string(TOLOWER "ci_cmake_flag_${JSON_CMAKE_FLAG}" JSON_CMAKE_FLAG_TARGET)
add_custom_target("${JSON_CMAKE_FLAG_TARGET}"
COMMENT "Check CMake flag ${JSON_CMAKE_FLAG} (CMake ${CMAKE_VERSION})"
COMMAND ${CMAKE_COMMAND}
-Werror=dev
-D${JSON_CMAKE_FLAG}=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_${JSON_CMAKE_FLAG_TARGET}
)
add_custom_target("${JSON_CMAKE_FLAG_TARGET}_31"
COMMENT "Check CMake flag ${JSON_CMAKE_FLAG} (CMake 3.1)"
COMMAND mkdir ${PROJECT_BINARY_DIR}/build_${JSON_CMAKE_FLAG_TARGET}_31
COMMAND cd ${PROJECT_BINARY_DIR}/build_${JSON_CMAKE_FLAG_TARGET}_31 && ${CMAKE_310_BINARY}
-Werror=dev ${PROJECT_SOURCE_DIR}
-D${JSON_CMAKE_FLAG}=ON
-DCMAKE_CXX_COMPILE_FEATURES="cxx_range_for" -DCMAKE_CXX_FLAGS="-std=gnu++11"
DEPENDS ${CMAKE_310_BINARY}
)
list(APPEND JSON_CMAKE_FLAG_TARGETS ${JSON_CMAKE_FLAG_TARGET} ${JSON_CMAKE_FLAG_TARGET}_31)
list(APPEND JSON_CMAKE_FLAG_BUILD_DIRS ${PROJECT_BINARY_DIR}/build_${JSON_CMAKE_FLAG_TARGET} ${PROJECT_BINARY_DIR}/build_${JSON_CMAKE_FLAG_TARGET}_31)
endforeach()
add_custom_target(ci_cmake_flags
DEPENDS ${JSON_CMAKE_FLAG_TARGETS}
COMMENT "Check CMake flags"
)
###############################################################################
# Use more installed compilers.
###############################################################################
foreach(COMPILER g++-4.8 g++-4.9 g++-5 g++-7 g++-8 g++-9 g++-10 clang++-3.5 clang++-3.6 clang++-3.7 clang++-3.8 clang++-3.9 clang++-4.0 clang++-5.0 clang++-6.0 clang++-7 clang++-8 clang++-9 clang++-10 clang++-11)
find_program(COMPILER_TOOL NAMES ${COMPILER})
if (COMPILER_TOOL)
add_custom_target(ci_test_compiler_${COMPILER}
COMMAND CXX=${COMPILER} ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=Debug -GNinja
-DJSON_BuildTests=ON -DJSON_FastTests=ON
-S${PROJECT_SOURCE_DIR} -B${PROJECT_BINARY_DIR}/build_compiler_${COMPILER}
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/build_compiler_${COMPILER}
COMMAND cd ${PROJECT_BINARY_DIR}/build_compiler_${COMPILER} && ${CMAKE_CTEST_COMMAND} --parallel ${N} --exclude-regex "test-unicode" --output-on-failure
COMMENT "Compile and test with ${COMPILER}"
)
endif()
unset(COMPILER_TOOL CACHE)
endforeach()
###############################################################################
# Clean up all generated files.
###############################################################################
add_custom_target(ci_clean
COMMAND rm -fr ${PROJECT_BINARY_DIR}/build_* cmake-3.1.0-Darwin64 ${JSON_CMAKE_FLAG_BUILD_DIRS} ${single_binaries}
COMMENT "Clean generated directories"
)

15
cmake/config.cmake.in Normal file
View File

@@ -0,0 +1,15 @@
include(FindPackageHandleStandardArgs)
set(${CMAKE_FIND_PACKAGE_NAME}_CONFIG ${CMAKE_CURRENT_LIST_FILE})
find_package_handle_standard_args(@PROJECT_NAME@ CONFIG_MODE)
if(NOT TARGET @PROJECT_NAME@::@NLOHMANN_JSON_TARGET_NAME@)
include("${CMAKE_CURRENT_LIST_DIR}/@NLOHMANN_JSON_TARGETS_EXPORT_NAME@.cmake")
if((NOT TARGET @NLOHMANN_JSON_TARGET_NAME@) AND
(NOT @PROJECT_NAME@_FIND_VERSION OR
@PROJECT_NAME@_FIND_VERSION VERSION_LESS 3.2.0))
add_library(@NLOHMANN_JSON_TARGET_NAME@ INTERFACE IMPORTED)
set_target_properties(@NLOHMANN_JSON_TARGET_NAME@ PROPERTIES
INTERFACE_LINK_LIBRARIES @PROJECT_NAME@::@NLOHMANN_JSON_TARGET_NAME@
)
endif()
endif()

View File

@@ -0,0 +1,56 @@
set(JSON_TEST_DATA_URL https://github.com/nlohmann/json_test_data)
set(JSON_TEST_DATA_VERSION 3.0.0)
# if variable is set, use test data from given directory rather than downloading them
if(JSON_TestDataDirectory)
message(STATUS "Using test data in ${JSON_TestDataDirectory}.")
add_custom_target(download_test_data)
file(WRITE ${CMAKE_BINARY_DIR}/include/test_data.hpp "#define TEST_DATA_DIRECTORY \"${JSON_TestDataDirectory}\"\n")
else()
find_package(Git)
# target to download test data
add_custom_target(download_test_data
COMMAND test -d json_test_data || ${GIT_EXECUTABLE} clone -c advice.detachedHead=false --branch v${JSON_TEST_DATA_VERSION} ${JSON_TEST_DATA_URL}.git --quiet --depth 1
COMMENT "Downloading test data from ${JSON_TEST_DATA_URL} (v${JSON_TEST_DATA_VERSION})"
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
# create a header with the path to the downloaded test data
file(WRITE ${CMAKE_BINARY_DIR}/include/test_data.hpp "#define TEST_DATA_DIRECTORY \"${CMAKE_BINARY_DIR}/json_test_data\"\n")
endif()
# determine the operating system (for debug and support purposes)
find_program(UNAME_COMMAND uname)
find_program(VER_COMMAND ver)
find_program(LSB_RELEASE_COMMAND lsb_release)
find_program(SW_VERS_COMMAND sw_vers)
set(OS_VERSION_STRINGS "${CMAKE_SYSTEM}")
if (VER_COMMAND)
execute_process(COMMAND ${VER_COMMAND} OUTPUT_VARIABLE VER_COMMAND_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
set(OS_VERSION_STRINGS "${OS_VERSION_STRINGS}; ${VER_COMMAND_RESULT}")
endif()
if (SW_VERS_COMMAND)
execute_process(COMMAND ${SW_VERS_COMMAND} OUTPUT_VARIABLE SW_VERS_COMMAND_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
string(REGEX REPLACE "[ ]*\n" "; " SW_VERS_COMMAND_RESULT "${SW_VERS_COMMAND_RESULT}")
set(OS_VERSION_STRINGS "${OS_VERSION_STRINGS}; ${SW_VERS_COMMAND_RESULT}")
endif()
if (LSB_RELEASE_COMMAND)
execute_process(COMMAND ${LSB_RELEASE_COMMAND} -a OUTPUT_VARIABLE LSB_RELEASE_COMMAND_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
string(REGEX REPLACE "[ ]*\n" "; " LSB_RELEASE_COMMAND_RESULT "${LSB_RELEASE_COMMAND_RESULT}")
set(OS_VERSION_STRINGS "${OS_VERSION_STRINGS}; ${LSB_RELEASE_COMMAND_RESULT}")
endif()
if (UNAME_COMMAND)
execute_process(COMMAND ${UNAME_COMMAND} -a OUTPUT_VARIABLE UNAME_COMMAND_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
set(OS_VERSION_STRINGS "${OS_VERSION_STRINGS}; ${UNAME_COMMAND_RESULT}")
endif()
message(STATUS "Operating system: ${OS_VERSION_STRINGS}")
# determine the compiler (for debug and support purposes)
if (MSVC)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} OUTPUT_VARIABLE CXX_VERSION_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_VARIABLE CXX_VERSION_RESULT ERROR_STRIP_TRAILING_WHITESPACE)
set(CXX_VERSION_RESULT "${CXX_VERSION_RESULT}; MSVC_VERSION=${MSVC_VERSION}; MSVC_TOOLSET_VERSION=${MSVC_TOOLSET_VERSION}")
else()
execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version OUTPUT_VARIABLE CXX_VERSION_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
string(REGEX REPLACE "[ ]*\n" "; " CXX_VERSION_RESULT "${CXX_VERSION_RESULT}")
message(STATUS "Compiler: ${CXX_VERSION_RESULT}")

View File

@@ -0,0 +1,20 @@
# This is essentially cmake's BasicConfigVersion-SameMajorVersion.cmake.in but
# without the 32/64-bit check. Since json is a header-only library, it doesn't
# matter if it was built on a different platform than what it is used on (see
# https://github.com/nlohmann/json/issues/1697).
set(PACKAGE_VERSION "@PROJECT_VERSION@")
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
if(PACKAGE_FIND_VERSION_MAJOR STREQUAL "@PROJECT_VERSION_MAJOR@")
set(PACKAGE_VERSION_COMPATIBLE TRUE)
else()
set(PACKAGE_VERSION_COMPATIBLE FALSE)
endif()
if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()

4
cmake/pkg-config.pc.in Normal file
View File

@@ -0,0 +1,4 @@
Name: ${PROJECT_NAME}
Description: JSON for Modern C++
Version: ${PROJECT_VERSION}
Cflags: -I${CMAKE_INSTALL_FULL_INCLUDEDIR}

View File

@@ -1,45 +0,0 @@
# JSON for Modern C++
## Version 1.0.0
- Release date: 2015-12-28
- MD5: 331c30e4407ecdcf591e9e3ed85100d0
### Summary
This is the first official release. Compared to the [prerelease version 1.0.0-rc1](https://github.com/nlohmann/json/releases/tag/v1.0.0-rc1), only a few minor improvements have been made:
### Changes
- *Changed*: A **UTF-8 byte order mark** is silently ignored.
- *Changed*: `sprintf` is no longer used.
- *Changed*: `iterator_wrapper` also works for const objects; note: the name may change!
- *Changed*: **Error messages** during deserialization have been improved.
- *Added*: The `parse` function now also works with type `std::istream&&`.
- *Added*: Function `value(key, default_value)` returns either a copy of an object's element at the specified key or a given default value if no element with the key exists.
- *Added*: Public functions are tagged with the version they were introduced. This shall allow for better **versioning** in the future.
- *Added*: All public functions and types are **documented** (see http://nlohmann.github.io/json/) including executable examples.
- *Added*: Allocation of all types (in particular arrays, strings, and objects) is now exception-safe.
- *Added*: They descriptions of thrown exceptions have been overworked and are part of the tests suite and documentation.
## Version 1.0.0-rc1
- Release date: 2015-07-26
- MD5: fac5948417ed49bfd0852a0e9dd36935
### Summary
The 1.0.0 release should be the first "official" release after the initial announcement of the class in January 2015 via reddit ("0.1.0") and a heavily overworked second version ("0.2.0") in February.
### Changes
- *Changed:* In the generic class `basic_json`, all JSON value types (array, object, string, bool, integer number, and floating-point) are now **templated**. That is, you can choose whether you like a `std::list` for your arrays or an `std::unordered_map` for your objects. The specialization `json` sets some reasonable defaults.
- *Changed:* The library now consists of a **single header**, called `json.hpp`. Consequently, build systems such as Automake or CMake are not any longer required.
- *Changed:* The **deserialization** is now supported by a lexer generated with [re2c](http://re2c.org) from file [`src/json.hpp.re2c`](https://github.com/nlohmann/json/blob/master/src/json.hpp.re2c). As a result, we strictly follow the JSON specification. Note neither the tool re2c nor its input are required to use the class.
- *Added:* The library now satisfies the [**ReversibleContainer**](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) requirement. It hence provides four different iterators (`iterator`, `const_iterator`, `reverse_iterator`, and `const_reverse_iterator`), comparison functions, `swap()`, `size()`, `max_size()`, and `empty()` member functions.
- *Added*: The class uses **user-defined allocators** which default to `std::allocator`, but can be templated via parameter `Allocator`.
- *Added:* To simplify pretty-printing, the `std::setw` **stream manipulator** has been overloaded to set the desired indentation. Pretty-printing a JSON object `j` is as simple as `std::cout << std::setw(4) << j << '\n'`.
- *Changed*: The type `json::value_t::number` is now called `json::value_t::number_integer` to be more symmetric compared to `json::value_t::number_float`.
- *Added*: The documentation is generated with Doxygen and hosted at [nlohmann.github.io/json](http://nlohmann.github.io/json/). Every public member function is thoroughly described including an example which also can be [tried online](http://melpon.org/wandbox/permlink/GnGKwji06WeVonlI).
- *Added*: The class is heavily unit-tested (3341774 assertions) and has a [line coverage of 100%](https://coveralls.io/github/nlohmann/json). With every commit, the code is compiled with g++ 4.9, g++ 5.0, Clang 3.6 (thanks to [Travis CI](https://travis-ci.org/nlohmann/json)), and Microsoft Visual Studio 14 2015 (thanks to [AppVeyor](https://ci.appveyor.com/project/nlohmann/json)).

View File

@@ -1,17 +1,18 @@
# Doxyfile 1.8.9.1
# Doxyfile 1.9.1
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "JSON for Modern C++"
PROJECT_NUMBER = 1.1.0
PROJECT_BRIEF =
PROJECT_NUMBER = 3.10.0
PROJECT_BRIEF =
PROJECT_LOGO =
OUTPUT_DIRECTORY = .
CREATE_SUBDIRS = NO
ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
OUTPUT_TEXT_DIRECTION = None
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = NO
ABBREVIATE_BRIEF =
@@ -22,42 +23,51 @@ STRIP_FROM_PATH =
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = NO
JAVADOC_BANNER = NO
QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
PYTHON_DOCSTRING = YES
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = YES
TAB_SIZE = 4
ALIASES = "complexity=@par Complexity\n"
ALIASES += liveexample{2}="@par Example\n \1 \n @includelineno \2.cpp \n Output (play with this example @htmlinclude \2.link):\n @verbinclude \2.output \n The example code above can be translated with @verbatim g++ -std=c++11 -Isrc doc/examples/\2.cpp -o \2 @endverbatim"
ALIASES += requirement="@par Requirements\n"
TCL_SUBST =
ALIASES = "complexity=@par Complexity^^" \
"liveexample{2}=@par Example^^ \1 ^^ @includelineno \2.cpp \n Output (play with this example @htmlinclude \2.link):^^ @verbinclude \2.output ^^ The <a href= https://github.com/nlohmann/json/blob/develop/doc/examples/\2.cpp>example code</a> above can be translated with @verbatim g++ -std=c++11 -Isingle_include doc/examples/\2.cpp -o \2 @endverbatim" \
"requirement=@par Requirements^^" \
"exceptionsafety=@par Exception safety^^" \
"iterators=@par Iterator validity^^"
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
OPTIMIZE_OUTPUT_SLICE = NO
EXTENSION_MAPPING =
MARKDOWN_SUPPORT = YES
TOC_INCLUDE_HEADINGS = 0
AUTOLINK_SUPPORT = NO
BUILTIN_STL_SUPPORT = YES
CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO
IDL_PROPERTY_SUPPORT = YES
DISTRIBUTE_GROUP_DOC = NO
GROUP_NESTED_COMPOUNDS = NO
SUBGROUPING = YES
INLINE_GROUPED_CLASSES = NO
INLINE_SIMPLE_STRUCTS = NO
TYPEDEF_HIDES_STRUCT = NO
LOOKUP_CACHE_SIZE = 0
NUM_PROC_THREADS = 1
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO
EXTRACT_PRIV_VIRTUAL = NO
EXTRACT_PACKAGE = YES
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = YES
EXTRACT_ANON_NSPACES = YES
RESOLVE_UNNAMED_PARAMS = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
@@ -96,19 +106,21 @@ WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = YES
WARN_AS_ERROR = NO
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
#---------------------------------------------------------------------------
# Configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/json.hpp
INPUT = ../single_include/nlohmann/json.hpp \
index.md
INPUT_ENCODING = UTF-8
FILE_PATTERNS =
RECURSIVE = NO
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXCLUDE_SYMBOLS = nlohmann::anonymous_namespace
EXCLUDE_SYMBOLS = nlohmann::detail
EXAMPLE_PATH = examples
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
@@ -117,7 +129,7 @@ INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
FILTER_SOURCE_PATTERNS =
USE_MDFILE_AS_MAINPAGE =
USE_MDFILE_AS_MAINPAGE = index.md
#---------------------------------------------------------------------------
# Configuration options related to source browsing
#---------------------------------------------------------------------------
@@ -134,7 +146,6 @@ VERBATIM_HEADERS = NO
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
@@ -151,13 +162,14 @@ HTML_COLORSTYLE_HUE = 220
HTML_COLORSTYLE_SAT = 100
HTML_COLORSTYLE_GAMMA = 80
HTML_TIMESTAMP = YES
HTML_DYNAMIC_MENUS = YES
HTML_DYNAMIC_SECTIONS = YES
HTML_INDEX_NUM_ENTRIES = 100
GENERATE_DOCSET = YES
DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_BUNDLE_ID = me.nlohmann.json
DOCSET_PUBLISHER_ID = me.nlohmann
DOCSET_PUBLISHER_NAME = Niels Lohmann
DOCSET_PUBLISHER_NAME = NielsLohmann
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
@@ -180,8 +192,10 @@ GENERATE_TREEVIEW = NO
ENUM_VALUES_PER_LINE = 4
TREEVIEW_WIDTH = 250
EXT_LINKS_IN_WINDOW = NO
HTML_FORMULA_FORMAT = png
FORMULA_FONTSIZE = 10
FORMULA_TRANSPARENT = YES
FORMULA_MACROFILE =
USE_MATHJAX = NO
MATHJAX_FORMAT = HTML-CSS
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
@@ -201,6 +215,7 @@ GENERATE_LATEX = NO
LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
LATEX_MAKEINDEX_CMD = \makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4
EXTRA_PACKAGES =
@@ -214,6 +229,8 @@ LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
LATEX_SOURCE_CODE = NO
LATEX_BIB_STYLE = plain
LATEX_TIMESTAMP = NO
LATEX_EMOJI_DIRECTORY =
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
#---------------------------------------------------------------------------
@@ -235,9 +252,10 @@ MAN_LINKS = NO
#---------------------------------------------------------------------------
# Configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
GENERATE_XML = YES
XML_OUTPUT = xml
XML_PROGRAMLISTING = YES
XML_NS_MEMB_FILE_SCOPE = NO
#---------------------------------------------------------------------------
# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------
@@ -271,16 +289,14 @@ SKIP_FUNCTION_MACROS = YES
# Configuration options related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE =
GENERATE_TAGFILE = html/nlohmann_json.tag
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
EXTERNAL_PAGES = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO
MSCGEN_PATH =
DIA_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES
@@ -293,6 +309,8 @@ COLLABORATION_GRAPH = NO
GROUP_GRAPHS = YES
UML_LOOK = YES
UML_LIMIT_NUM_FIELDS = 10
DOT_UML_DETAILS = NO
DOT_WRAP_THRESHOLD = 17
TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = NO
INCLUDED_BY_GRAPH = NO
@@ -307,6 +325,7 @@ DOTFILE_DIRS =
MSCFILE_DIRS =
DIAFILE_DIRS =
PLANTUML_JAR_PATH =
PLANTUML_CFG_FILE =
PLANTUML_INCLUDE_PATH =
DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 0

View File

@@ -1,10 +1,8 @@
SRCDIR = ../src
SRCDIR = ../single_include
SED:=$(shell command -v gsed || which sed)
all: doxygen
clean:
rm -fr me.nlohmann.json.docset html
##########################################################################
# example files
@@ -30,8 +28,8 @@ EXAMPLES = $(wildcard examples/*.cpp)
%.link: %.cpp
rm -fr tmp
mkdir tmp
cp $(SRCDIR)/json.hpp tmp
scripts/send_to_wandbox.py tmp $< > $@.tmp
cp -r $(SRCDIR)/nlohmann tmp
python2 scripts/send_to_wandbox.py tmp $< > $@.tmp
/bin/echo -n "<a target=\"_blank\" href=\"`cat $@.tmp`\"><b>online</b></a>" > $@
rm -fr tmp $@.tmp
@@ -44,6 +42,12 @@ create_links: $(EXAMPLES:.cpp=.link)
check_output: $(EXAMPLES:.cpp=.test)
clean:
rm -fr me.nlohmann.json.docset html xml $(EXAMPLES:.cpp=)
$(MAKE) clean -C docset
$(MAKE) clean -C mkdocs
##########################################################################
# Doxygen HTML documentation
##########################################################################
@@ -51,11 +55,19 @@ check_output: $(EXAMPLES:.cpp=.test)
# create Doxygen documentation
doxygen: create_output create_links
doxygen
gsed -i 's@&lt; ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberFloatType, AllocatorType &gt;@@g' html/*.html
gsed -i 's@&lt;&#160;ObjectType,&#160;ArrayType,&#160;StringType,&#160;BooleanType,&#160;NumberIntegerType,&#160;NumberFloatType,&#160;AllocatorType&#160;&gt;@@g' html/*.html
$(SED) -i 's@&lt; ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberFloatType, AllocatorType, JSONSerializer &gt;@@g' html/*.html
$(SED) -i 's@&lt;&#160;ObjectType,&#160;ArrayType,&#160;StringType,&#160;BooleanType,&#160;NumberIntegerType,&#160;NumberFloatType,&#160;AllocatorType&#160;JSONSerializer&#160;&gt;@@g' html/*.html
$(SED) -i 's@&lt; ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer &gt;@@g' html/*.html
$(SED) -i 's@< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >@@g' html/*.html
$(SED) -i 's@&lt;&#160;ObjectType,&#160;ArrayType,&#160;StringType,&#160;BooleanType,&#160;NumberIntegerType,&#160;NumberUnsignedType,&#160;NumberFloatType,&#160;AllocatorType&#160;JSONSerializer&#160;&gt;@@g' html/*.html
$(SED) -i 's@template&lt;template&lt; typename U, typename V, typename... Args &gt; class ObjectType = std::map, template&lt; typename U, typename... Args &gt; class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template&lt; typename U &gt; class AllocatorType = std::allocator, template&lt; typename T, typename SFINAE=void &gt; class JSONSerializer = adl_serializer&gt;@@g' html/*.html
$(SED) -i 's@&lt; ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer &gt;@@g' html/*.html
$(SED) -i 's@&lt;&#160;ObjectType,&#160;ArrayType,&#160;StringType,&#160;BooleanType,&#160;NumberIntegerType,&#160;NumberUnsignedType,&#160;NumberFloatType,&#160;AllocatorType,&#160;JSONSerializer&#160;&gt;@@g' html/*.html
$(SED) -i 's@JSON_HEDLEY_RETURNS_NON_NULL@@g' html/*.html
$(SED) -i 's@JSON_HEDLEY_WARN_UNUSED_RESULT@@g' html/*.html
upload: clean doxygen check_output
cd html ; ../scripts/git-update-ghpages nlohmann/json
scripts/git-update-ghpages nlohmann/json html
rm -fr html
open http://nlohmann.github.io/json/
@@ -67,14 +79,14 @@ upload: clean doxygen check_output
# create docset for Dash
docset: create_output
cp Doxyfile Doxyfile_docset
gsed -i 's/DISABLE_INDEX = NO/DISABLE_INDEX = YES/' Doxyfile_docset
gsed -i 's/SEARCHENGINE = YES/SEARCHENGINE = NO/' Doxyfile_docset
gsed -i 's@HTML_EXTRA_STYLESHEET = css/mylayout.css@HTML_EXTRA_STYLESHEET = css/mylayout_docset.css@' Doxyfile_docset
$(SED) -i 's/DISABLE_INDEX = NO/DISABLE_INDEX = YES/' Doxyfile_docset
$(SED) -i 's/SEARCHENGINE = YES/SEARCHENGINE = NO/' Doxyfile_docset
$(SED) -i 's@HTML_EXTRA_STYLESHEET = css/mylayout.css@HTML_EXTRA_STYLESHEET = css/mylayout_docset.css@' Doxyfile_docset
rm -fr html *.docset
doxygen Doxyfile_docset
gsed -i 's@&lt; ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberFloatType, AllocatorType &gt;@@g' html/*.html
gsed -i 's@&lt;&#160;ObjectType,&#160;ArrayType,&#160;StringType,&#160;BooleanType,&#160;NumberIntegerType,&#160;NumberFloatType,&#160;AllocatorType&#160;&gt;@@g' html/*.html
$(SED) -i 's@&lt; ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberFloatType, AllocatorType &gt;@@g' html/*.html
$(SED) -i 's@&lt;&#160;ObjectType,&#160;ArrayType,&#160;StringType,&#160;BooleanType,&#160;NumberIntegerType,&#160;NumberFloatType,&#160;AllocatorType&#160;&gt;@@g' html/*.html
make -C html
mv html/*.docset .
gsed -i 's@<string>doxygen</string>@<string>json</string>@' me.nlohmann.json.docset/Contents/Info.plist
$(SED) -i 's@<string>doxygen</string>@<string>json</string>@' me.nlohmann.json.docset/Contents/Info.plist
rm -fr Doxyfile_docset html

BIN
doc/avatars.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@@ -12,3 +12,15 @@ pre.fragment {
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
td.paramname {
vertical-align: top;
}
.ok_green {
background-color: #89C35C;
}
.nok_throws {
background-color: #ffa500;
}

View File

@@ -13,3 +13,15 @@
#top, .footer {
display: none;
}
td.paramname {
vertical-align: top;
}
.ok_green {
background-color: #89C35C;
}
.nok_throws {
background-color: #ffa500;
}

20
doc/docset/Info.plist Normal file
View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>nlohmann_json</string>
<key>CFBundleName</key>
<string>JSON for Modern C++</string>
<key>DocSetPlatformFamily</key>
<string>json</string>
<key>isDashDocset</key>
<true/>
<key>dashIndexFilePath</key>
<string>index.html</string>
<key>DashDocSetFallbackURL</key>
<string>https://nlohmann.github.io/json/</string>
<key>isJavaScriptEnabled</key>
<true/>
</dict>
</plist>

21
doc/docset/Makefile Normal file
View File

@@ -0,0 +1,21 @@
nlohmann_json.docset: Info.plist docSet.sql
$(MAKE) clean
mkdir -p nlohmann_json.docset/Contents/Resources/Documents/
cp info.plist nlohmann_json.docset/Contents
# build and copy documentation
$(MAKE) build -C ../mkdocs
cp -r ../mkdocs/site/* nlohmann_json.docset/Contents/Resources/Documents
# patch CSS to hide navigation items
echo "\n\nheader, footer, navi, div.md-sidebar--primary, nav.md-tabs--active, a.md-content__button { display: none; }" >> nlohmann_json.docset/Contents/Resources/Documents/assets/stylesheets/main.b5d04df8.min.css
# fix spacing
echo "\n\ndiv.md-sidebar div.md-sidebar--secondary, div.md-main__inner { top: 0; margin-top: 0 }" >> nlohmann_json.docset/Contents/Resources/Documents/assets/stylesheets/main.b5d04df8.min.css
# remove "JSON for Modern C++" from page titles
find nlohmann_json.docset/Contents/Resources/Documents -type f -exec gsed -i 's| - JSON for Modern C++</title>|</title>|' {} +
# clean up
rm nlohmann_json.docset/Contents/Resources/Documents/hooks.py
rm nlohmann_json.docset/Contents/Resources/Documents/sitemap.*
# generate index
sqlite3 nlohmann_json.docset/Contents/Resources/docSet.dsidx < docSet.sql
clean:
rm -fr nlohmann_json.docset

13
doc/docset/README.md Normal file
View File

@@ -0,0 +1,13 @@
# docset
The folder contains the required files to create a [docset](https://kapeli.com/docsets) which can be used in
documentation browsers like [Dash](https://kapeli.com/dash), [Velocity](https://velocity.silverlakesoftware.com), or
[Zeal](https://zealdocs.org).
The docset can be created with
```sh
make nlohmann_json.docset
```
The generated folder `nlohmann_json.docset` can then be opened in the documentation browser.

155
doc/docset/docSet.sql Normal file
View File

@@ -0,0 +1,155 @@
DROP TABLE IF EXISTS searchIndex;
CREATE TABLE searchIndex(id INTEGER PRIMARY KEY, name TEXT, type TEXT, path TEXT);
CREATE UNIQUE INDEX anchor ON searchIndex (name, type, path);
-- API
INSERT INTO searchIndex(name, type, path) VALUES ('accept', 'Function', 'api/basic_json/accept/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('adl_serializer', 'Class', 'api/adl_serializer/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('array', 'Function', 'api/basic_json/array/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('array_t', 'Type', 'api/basic_json/array_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('at', 'Method', 'api/basic_json/at/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('back', 'Method', 'api/basic_json/back/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('basic_json', 'Class', 'api/basic_json/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('basic_json', 'Constructor', 'api/basic_json/basic_json/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('begin', 'Method', 'api/basic_json/begin/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('binary', 'Function', 'api/basic_json/binary/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('binary_t', 'Type', 'api/basic_json/binary_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('boolean_t', 'Type', 'api/basic_json/boolean_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('cbegin', 'Method', 'api/basic_json/cbegin/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('cbor_tag_handler_t', 'Enum', 'api/basic_json/cbor_tag_handler_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('cend', 'Method', 'api/basic_json/cend/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('clear', 'Method', 'api/basic_json/clear/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('contains', 'Method', 'api/basic_json/contains/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('count', 'Method', 'api/basic_json/count/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('crbegin', 'Method', 'api/basic_json/crbegin/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('crend', 'Method', 'api/basic_json/crend/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('diff', 'Function', 'api/basic_json/diff/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('dump', 'Method', 'api/basic_json/dump/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('emplace', 'Method', 'api/basic_json/emplace/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('emplace_back', 'Method', 'api/basic_json/emplace_back/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('empty', 'Method', 'api/basic_json/empty/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('end', 'Method', 'api/basic_json/end/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('erase', 'Method', 'api/basic_json/erase/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('error_handler_t', 'Enum', 'api/basic_json/error_handler_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('exception', 'Class', 'api/basic_json/exception/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('find', 'Method', 'api/basic_json/find/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('flatten', 'Method', 'api/basic_json/flatten/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('from_bson', 'Function', 'api/basic_json/from_bson/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('from_cbor', 'Function', 'api/basic_json/from_cbor/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('from_msgpack', 'Function', 'api/basic_json/from_msgpack/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('from_ubjson', 'Function', 'api/basic_json/from_ubjson/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('front', 'Method', 'api/basic_json/front/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('get', 'Method', 'api/basic_json/get/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('get_allocator', 'Function', 'api/basic_json/get_allocator/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('get_binary', 'Method', 'api/basic_json/get_binary/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('get_ptr', 'Method', 'api/basic_json/get_ptr/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('get_ref', 'Method', 'api/basic_json/get_ref/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('get_to', 'Method', 'api/basic_json/get_to/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('input_format_t', 'Enum', 'api/basic_json/input_format_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('insert', 'Method', 'api/basic_json/insert/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('invalid_iterator', 'Class', 'api/basic_json/invalid_iterator/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('is_array', 'Method', 'api/basic_json/is_array/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('is_binary', 'Method', 'api/basic_json/is_binary/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('is_boolean', 'Method', 'api/basic_json/is_boolean/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('is_discarded', 'Method', 'api/basic_json/is_discarded/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('is_null', 'Method', 'api/basic_json/is_null/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('is_number', 'Method', 'api/basic_json/is_number/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('is_number_float', 'Method', 'api/basic_json/is_number_float/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('is_number_integer', 'Method', 'api/basic_json/is_number_integer/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('is_number_unsigned', 'Method', 'api/basic_json/is_number_unsigned/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('is_object', 'Method', 'api/basic_json/is_object/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('is_primitive', 'Method', 'api/basic_json/is_primitive/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('is_string', 'Method', 'api/basic_json/is_string/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('is_structured', 'Method', 'api/basic_json/is_structured/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('items', 'Method', 'api/basic_json/items/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('json', 'Class', 'api/json/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('json_pointer', 'Class', 'api/json_pointer/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('json_serializer', 'Type', 'api/basic_json/json_serializer/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('max_size', 'Method', 'api/basic_json/max_size/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('merge_patch', 'Method', 'api/basic_json/merge_patch/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('meta', 'Function', 'api/basic_json/meta/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('number_float_t', 'Type', 'api/basic_json/number_float_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('number_integer_t', 'Type', 'api/basic_json/number_integer_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('number_unsigned_t', 'Type', 'api/basic_json/number_unsigned_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('object', 'Function', 'api/basic_json/object/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('object_comparator_t', 'Type', 'api/basic_json/object_comparator_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('object_t', 'Type', 'api/basic_json/object_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('operator!=', 'Operator', 'api/basic_json/operator_ne/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('operator+=', 'Operator', 'api/basic_json/operator+=/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('operator=', 'Operator', 'api/basic_json/operator=/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('operator==', 'Operator', 'api/basic_json/operator_eq/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('operator<', 'Operator', 'api/basic_json/operator_lt/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('operator<=', 'Operator', 'api/basic_json/operator_le/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('operator>', 'Operator', 'api/basic_json/operator_gt/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('operator>=', 'Operator', 'api/basic_json/operator_ge/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('operator[]', 'Operator', 'api/basic_json/operator[]/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('operator""_json', 'Literal', 'api/basic_json/operator_literal_json/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('operator""_json_pointer', 'Literal', 'api/basic_json/operator_literal_json_pointer/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('operator ValueType', 'Operator', 'api/basic_json/operator_ValueType/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('operator value_t', 'Operator', 'api/basic_json/operator_value_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('ordered_json', 'Class', 'api/ordered_json/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('ordered_map', 'Class', 'api/ordered_map/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('out_of_range', 'Class', 'api/basic_json/out_of_range/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('other_error', 'Class', 'api/basic_json/other_error/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('parse', 'Function', 'api/basic_json/parse/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('parse_error', 'Class', 'api/basic_json/parse_error/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('parse_event_t', 'Enum', 'api/basic_json/parse_event_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('parser_callback_t', 'Type', 'api/basic_json/parser_callback_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('patch', 'Method', 'api/basic_json/patch/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('push_back', 'Method', 'api/basic_json/push_back/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('rbegin', 'Method', 'api/basic_json/rbegin/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('rend', 'Method', 'api/basic_json/rend/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('sax_parse', 'Function', 'api/basic_json/sax_parse/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('size', 'Method', 'api/basic_json/size/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('string_t', 'Type', 'api/basic_json/string_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('type', 'Method', 'api/basic_json/type/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('type_error', 'Class', 'api/basic_json/type_error/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('type_name', 'Method', 'api/basic_json/type_name/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('unflatten', 'Method', 'api/basic_json/unflatten/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('update', 'Method', 'api/basic_json/update/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('to_bson', 'Function', 'api/basic_json/to_bson/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('to_cbor', 'Function', 'api/basic_json/to_cbor/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('to_msgpack', 'Function', 'api/basic_json/to_msgpack/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('to_ubjson', 'Function', 'api/basic_json/to_ubjson/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('value', 'Method', 'api/basic_json/value/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('value_t', 'Enum', 'api/basic_json/value_t/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('~basic_json', 'Method', 'api/basic_json/~basic_json/index.html');
-- Features
INSERT INTO searchIndex(name, type, path) VALUES ('Binary Formats', 'Guide', 'features/binary_formats/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('BSON', 'Guide', 'features/binary_formats/bson/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('CBOR', 'Guide', 'features/binary_formats/cbor/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('MessagePack', 'Guide', 'features/binary_formats/messagepack/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('UBJSON', 'Guide', 'features/binary_formats/ubjson/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('Supported Macros', 'Guide', 'features/macros/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('Binary Values', 'Guide', 'features/binary_values/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('Comments', 'Guide', 'features/comments/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('Iterators', 'Guide', 'features/iterators/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('Types', 'Guide', 'features/types/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('Number Handling', 'Guide', 'features/types/number_handling/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('Element Access', 'Guide', 'features/element_access/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON Pointer', 'Guide', 'features/json_pointer/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON Patch and Diff', 'Guide', 'features/json_patch/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON Merge Patch', 'Guide', 'features/merge_patch/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('Object Order', 'Guide', 'features/object_order/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('Parsing and Exceptions', 'Guide', 'features/parsing/parse_exceptions/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('Parser Callbacks', 'Guide', 'features/parsing/parser_callbacks/index.html');
INSERT INTO searchIndex(name, type, path) VALUES ('SAX Interface', 'Guide', 'features/parsing/sax_interface/index.html');
-- Macros
INSERT INTO searchIndex(name, type, path) VALUES ('JSON_ASSERT', 'Macro', 'features/macros/index.html#json_assertx');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON_CATCH_USER', 'Macro', 'features/macros/index.html#json_catch_userexception');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON_DIAGNOSTICS', 'Macro', 'features/macros/index.html#json_diagnostics');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON_HAS_CPP_11', 'Macro', 'features/macros/index.html#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON_HAS_CPP_14', 'Macro', 'features/macros/index.html#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON_HAS_CPP_17', 'Macro', 'features/macros/index.html#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON_HAS_CPP_20', 'Macro', 'features/macros/index.html#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON_NOEXCEPTION', 'Macro', 'features/macros/index.html#json_noexception');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON_NO_IO', 'Macro', 'features/macros/index.html#json_no_io');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON_SKIP_UNSUPPORTED_COMPILER_CHECK', 'Macro', 'features/macros/index.html#json_skip_unsupported_compiler_check');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON_THROW_USER', 'Macro', 'features/macros/index.html#json_throw_userexception');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON_TRY_USER', 'Macro', 'features/macros/index.html#json_try_user');
INSERT INTO searchIndex(name, type, path) VALUES ('JSON_USE_IMPLICIT_CONVERSIONS', 'Macro', 'features/macros/index.html#json_use_implicit_conversions');
INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_DEFINE_TYPE_INTRUSIVE', 'Macro', 'features/macros/index.html#nlohmann_define_type_intrusivetype-member');
INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE', 'Macro', 'features/macros/index.html#nlohmann_define_type_non_intrusivetype-member');
INSERT INTO searchIndex(name, type, path) VALUES ('NLOHMANN_JSON_SERIALIZE_ENUM', 'Macro', 'features/macros/index.html#nlohmann_json_serialize_enumtype');

View File

@@ -1,6 +1,8 @@
#include <json.hpp>
#include <iostream>
#include <iomanip>
#include <nlohmann/json.hpp>
using namespace nlohmann;
using json = nlohmann::json;
int main()
{
@@ -29,7 +31,8 @@ int main()
j["new"]["key"]["value"] = {"another", "list"};
// count elements
j["size"] = j.size();
auto s = j.size();
j["size"] = s;
// pretty print with indent of 4 spaces
std::cout << std::setw(4) << j << '\n';

View File

@@ -1 +1 @@
<a target="_blank" href="http://melpon.org/wandbox/permlink/WSW3gHHE4UcZ9K3G"><b>online</b></a>
<a target="_blank" href="https://wandbox.org/permlink/IYGZTTRU0q5Ty1ev"><b>online</b></a>

View File

@@ -23,5 +23,5 @@
"value": 42.99
},
"pi": 3.141,
"size": 9
"size": 8
}

View File

@@ -0,0 +1,26 @@
#include <iostream>
#include <iomanip>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main()
{
// a valid JSON text
auto valid_text = R"(
{
"numbers": [1, 2, 3]
}
)";
// an invalid JSON text
auto invalid_text = R"(
{
"strings": ["extra", "comma", ]
}
)";
std::cout << std::boolalpha
<< json::accept(valid_text) << ' '
<< json::accept(invalid_text) << '\n';
}

View File

@@ -0,0 +1 @@
<a target="_blank" href="https://wandbox.org/permlink/r5Tai1spihWHTdFA"><b>online</b></a>

View File

@@ -0,0 +1 @@
true false

View File

@@ -1,6 +1,7 @@
#include <json.hpp>
#include <iostream>
#include <nlohmann/json.hpp>
using namespace nlohmann;
using json = nlohmann::json;
int main()
{

View File

@@ -1 +1 @@
<a target="_blank" href="http://melpon.org/wandbox/permlink/NeN8wmHsQGxFXC6L"><b>online</b></a>
<a target="_blank" href="https://wandbox.org/permlink/Ptk2BoNyGfrZfxRU"><b>online</b></a>

View File

@@ -1,6 +1,7 @@
#include <json.hpp>
#include <iostream>
#include <nlohmann/json.hpp>
using namespace nlohmann;
using json = nlohmann::json;
int main()
{
@@ -8,7 +9,7 @@ int main()
json object =
{
{"the good", "il buono"},
{"the bad", "il cativo"},
{"the bad", "il cattivo"},
{"the ugly", "il brutto"}
};
@@ -21,13 +22,27 @@ int main()
// output changed array
std::cout << object << '\n';
// try to write at a nonexisting key
// exception type_error.304
try
{
// use at() on a non-object type
json str = "I am a string";
str.at("the good") = "Another string";
}
catch (json::type_error& e)
{
std::cout << e.what() << '\n';
}
// exception out_of_range.401
try
{
// try to write at a nonexisting key
object.at("the fast") = "il rapido";
}
catch (std::out_of_range& e)
catch (json::out_of_range& e)
{
std::cout << "out of range: " << e.what() << '\n';
std::cout << e.what() << '\n';
}
}

View File

@@ -1 +1 @@
<a target="_blank" href="http://melpon.org/wandbox/permlink/3ir8W1OZ5KtbRz6r"><b>online</b></a>
<a target="_blank" href="https://wandbox.org/permlink/055DW3OWJPwGYr92"><b>online</b></a>

View File

@@ -1,3 +1,4 @@
"il brutto"
{"the bad":"il cattivo","the good":"il buono","the ugly":"il brutto"}
out of range: key 'the fast' not found
[json.exception.type_error.304] cannot use at() with string
[json.exception.out_of_range.403] key 'the fast' not found

View File

@@ -1,26 +1,41 @@
#include <json.hpp>
#include <iostream>
#include <nlohmann/json.hpp>
using namespace nlohmann;
using json = nlohmann::json;
int main()
{
// create JSON object
json object =
const json object =
{
{"the good", "il buono"},
{"the bad", "il cativo"},
{"the bad", "il cattivo"},
{"the ugly", "il brutto"}
};
// output element with key "the ugly"
std::cout << object.at("the ugly") << '\n';
// try to read from a nonexisting key
// exception type_error.304
try
{
// use at() on a non-object type
const json str = "I am a string";
std::cout << str.at("the good") << '\n';
}
catch (json::type_error& e)
{
std::cout << e.what() << '\n';
}
// exception out_of_range.401
try
{
// try to read from a nonexisting key
std::cout << object.at("the fast") << '\n';
}
catch (std::out_of_range)
catch (json::out_of_range)
{
std::cout << "out of range" << '\n';
}

View File

@@ -1 +1 @@
<a target="_blank" href="http://melpon.org/wandbox/permlink/zwOKkXrKstDlMPjr"><b>online</b></a>
<a target="_blank" href="https://wandbox.org/permlink/gM1uqvzukokLwjMa"><b>online</b></a>

View File

@@ -1,2 +1,3 @@
"il brutto"
[json.exception.type_error.304] cannot use at() with string
out of range

View File

@@ -1,6 +1,7 @@
#include <json.hpp>
#include <iostream>
#include <nlohmann/json.hpp>
using namespace nlohmann;
using json = nlohmann::json;
int main()
{
@@ -16,13 +17,27 @@ int main()
// output changed array
std::cout << array << '\n';
// try to write beyond the array limit
// exception type_error.304
try
{
// use at() on a non-array type
json str = "I am a string";
str.at(0) = "Another string";
}
catch (json::type_error& e)
{
std::cout << e.what() << '\n';
}
// exception out_of_range.401
try
{
// try to write beyond the array limit
array.at(5) = "sixth";
}
catch (std::out_of_range& e)
catch (json::out_of_range& e)
{
std::cout << "out of range: " << e.what() << '\n';
std::cout << e.what() << '\n';
}
}

View File

@@ -1 +1 @@
<a target="_blank" href="http://melpon.org/wandbox/permlink/9Ae4DO4HJjULnq5j"><b>online</b></a>
<a target="_blank" href="https://wandbox.org/permlink/H3tBOr4lpufGRHlF"><b>online</b></a>

View File

@@ -1,3 +1,4 @@
"third"
["first","second","third","fourth"]
out of range: array index 5 is out of range
[json.exception.type_error.304] cannot use at() with string
[json.exception.out_of_range.401] array index 5 is out of range

View File

@@ -1,22 +1,37 @@
#include <json.hpp>
#include <iostream>
#include <nlohmann/json.hpp>
using namespace nlohmann;
using json = nlohmann::json;
int main()
{
// create JSON array
json array = {"first", "2nd", "third", "fourth"};
const json array = {"first", "2nd", "third", "fourth"};
// output element at index 2 (third element)
std::cout << array.at(2) << '\n';
// try to read beyond the array limit
// exception type_error.304
try
{
// use at() on a non-array type
const json str = "I am a string";
std::cout << str.at(0) << '\n';
}
catch (json::type_error& e)
{
std::cout << e.what() << '\n';
}
// exception out_of_range.401
try
{
// try to read beyond the array limit
std::cout << array.at(5) << '\n';
}
catch (std::out_of_range)
catch (json::out_of_range& e)
{
std::cout << "out of range" << '\n';
std::cout << e.what() << '\n';
}
}

View File

@@ -1 +1 @@
<a target="_blank" href="http://melpon.org/wandbox/permlink/Ti47m4DY2lV4SWNV"><b>online</b></a>
<a target="_blank" href="https://wandbox.org/permlink/UtGhIQGxCYIml36F"><b>online</b></a>

View File

@@ -1,2 +1,3 @@
"third"
out of range
[json.exception.type_error.304] cannot use at() with string
[json.exception.out_of_range.401] array index 5 is out of range

View File

@@ -0,0 +1,103 @@
#include <iostream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main()
{
// create a JSON value
json j =
{
{"number", 1}, {"string", "foo"}, {"array", {1, 2}}
};
// read-only access
// output element with JSON pointer "/number"
std::cout << j.at("/number"_json_pointer) << '\n';
// output element with JSON pointer "/string"
std::cout << j.at("/string"_json_pointer) << '\n';
// output element with JSON pointer "/array"
std::cout << j.at("/array"_json_pointer) << '\n';
// output element with JSON pointer "/array/1"
std::cout << j.at("/array/1"_json_pointer) << '\n';
// writing access
// change the string
j.at("/string"_json_pointer) = "bar";
// output the changed string
std::cout << j["string"] << '\n';
// change an array element
j.at("/array/1"_json_pointer) = 21;
// output the changed array
std::cout << j["array"] << '\n';
// out_of_range.106
try
{
// try to use an array index with leading '0'
json::reference ref = j.at("/array/01"_json_pointer);
}
catch (json::parse_error& e)
{
std::cout << e.what() << '\n';
}
// out_of_range.109
try
{
// try to use an array index that is not a number
json::reference ref = j.at("/array/one"_json_pointer);
}
catch (json::parse_error& e)
{
std::cout << e.what() << '\n';
}
// out_of_range.401
try
{
// try to use a an invalid array index
json::reference ref = j.at("/array/4"_json_pointer);
}
catch (json::out_of_range& e)
{
std::cout << e.what() << '\n';
}
// out_of_range.402
try
{
// try to use the array index '-'
json::reference ref = j.at("/array/-"_json_pointer);
}
catch (json::out_of_range& e)
{
std::cout << e.what() << '\n';
}
// out_of_range.403
try
{
// try to use a JSON pointer to an nonexistent object key
json::const_reference ref = j.at("/foo"_json_pointer);
}
catch (json::out_of_range& e)
{
std::cout << e.what() << '\n';
}
// out_of_range.404
try
{
// try to use a JSON pointer that cannot be resolved
json::reference ref = j.at("/number/foo"_json_pointer);
}
catch (json::out_of_range& e)
{
std::cout << e.what() << '\n';
}
}

View File

@@ -0,0 +1 @@
<a target="_blank" href="https://wandbox.org/permlink/NHe5FLR1KYaiHwBx"><b>online</b></a>

View File

@@ -0,0 +1,12 @@
1
"foo"
[1,2]
2
"bar"
[1,21]
[json.exception.parse_error.106] parse error: array index '01' must not begin with '0'
[json.exception.parse_error.109] parse error: array index 'one' is not a number
[json.exception.out_of_range.401] array index 4 is out of range
[json.exception.out_of_range.402] array index '-' (2) is out of range
[json.exception.out_of_range.403] key 'foo' not found
[json.exception.out_of_range.404] unresolved reference token 'foo'

View File

@@ -0,0 +1,79 @@
#include <iostream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main()
{
// create a JSON value
const json j =
{
{"number", 1}, {"string", "foo"}, {"array", {1, 2}}
};
// read-only access
// output element with JSON pointer "/number"
std::cout << j.at("/number"_json_pointer) << '\n';
// output element with JSON pointer "/string"
std::cout << j.at("/string"_json_pointer) << '\n';
// output element with JSON pointer "/array"
std::cout << j.at("/array"_json_pointer) << '\n';
// output element with JSON pointer "/array/1"
std::cout << j.at("/array/1"_json_pointer) << '\n';
// out_of_range.109
try
{
// try to use an array index that is not a number
json::const_reference ref = j.at("/array/one"_json_pointer);
}
catch (json::parse_error& e)
{
std::cout << e.what() << '\n';
}
// out_of_range.401
try
{
// try to use a an invalid array index
json::const_reference ref = j.at("/array/4"_json_pointer);
}
catch (json::out_of_range& e)
{
std::cout << e.what() << '\n';
}
// out_of_range.402
try
{
// try to use the array index '-'
json::const_reference ref = j.at("/array/-"_json_pointer);
}
catch (json::out_of_range& e)
{
std::cout << e.what() << '\n';
}
// out_of_range.403
try
{
// try to use a JSON pointer to an nonexistent object key
json::const_reference ref = j.at("/foo"_json_pointer);
}
catch (json::out_of_range& e)
{
std::cout << e.what() << '\n';
}
// out_of_range.404
try
{
// try to use a JSON pointer that cannot be resolved
json::const_reference ref = j.at("/number/foo"_json_pointer);
}
catch (json::out_of_range& e)
{
std::cout << e.what() << '\n';
}
}

View File

@@ -0,0 +1 @@
<a target="_blank" href="https://wandbox.org/permlink/lbZjdwg6yII33cV5"><b>online</b></a>

View File

@@ -0,0 +1,9 @@
1
"foo"
[1,2]
2
[json.exception.parse_error.109] parse error: array index 'one' is not a number
[json.exception.out_of_range.401] array index 4 is out of range
[json.exception.out_of_range.402] array index '-' (2) is out of range
[json.exception.out_of_range.403] key 'foo' not found
[json.exception.out_of_range.404] unresolved reference token 'foo'

View File

@@ -1,11 +1,11 @@
#include <json.hpp>
#include <iostream>
#include <nlohmann/json.hpp>
using namespace nlohmann;
using json = nlohmann::json;
int main()
{
// create JSON values
json j_null;
json j_boolean = true;
json j_number_integer = 17;
json j_number_float = 23.42;
@@ -16,13 +16,23 @@ int main()
json j_string = "Hello, world";
// call back()
//std::cout << j_null.back() << '\n'; // would throw
std::cout << j_boolean.back() << '\n';
std::cout << j_number_integer.back() << '\n';
std::cout << j_number_float.back() << '\n';
std::cout << j_object.back() << '\n';
//std::cout << j_object_empty.back() << '\n'; // would throw
//std::cout << j_object_empty.back() << '\n'; // undefined behavior
std::cout << j_array.back() << '\n';
//std::cout << j_array_empty.back() << '\n'; // would throw
//std::cout << j_array_empty.back() << '\n'; // undefined behavior
std::cout << j_string.back() << '\n';
// back() called on a null value
try
{
json j_null;
j_null.back();
}
catch (json::invalid_iterator& e)
{
std::cout << e.what() << '\n';
}
}

View File

@@ -1 +1 @@
<a target="_blank" href="http://melpon.org/wandbox/permlink/zB9tSkSVYIthfgj6"><b>online</b></a>
<a target="_blank" href="https://wandbox.org/permlink/swnzqmd8zj6ij1fb"><b>online</b></a>

View File

@@ -4,3 +4,4 @@ true
2
16
"Hello, world"
[json.exception.invalid_iterator.214] cannot get value

View File

@@ -1,12 +0,0 @@
#include <json.hpp>
using namespace nlohmann;
int main()
{
// create a JSON value with default null value
json j;
// serialize the JSON null value
std::cout << j << '\n';
}

View File

@@ -1 +0,0 @@
<a target="_blank" href="http://melpon.org/wandbox/permlink/Hrajl95QUa1Lplou"><b>online</b></a>

View File

@@ -1 +0,0 @@
null

View File

@@ -1,58 +0,0 @@
#include <json.hpp>
#include <deque>
#include <list>
#include <forward_list>
#include <set>
#include <unordered_set>
using namespace nlohmann;
int main()
{
// create an array from std::vector
std::vector<int> c_vector {1, 2, 3, 4};
json j_vec(c_vector);
// create an array from std::deque
std::deque<double> c_deque {1.2, 2.3, 3.4, 5.6};
json j_deque(c_deque);
// create an array from std::list
std::list<bool> c_list {true, true, false, true};
json j_list(c_list);
// create an array from std::forward_list
std::forward_list<int64_t> c_flist {12345678909876, 23456789098765, 34567890987654, 45678909876543};
json j_flist(c_flist);
// create an array from std::array
std::array<unsigned long, 4> c_array {{1, 2, 3, 4}};
json j_array(c_array);
// create an array from std::set
std::set<std::string> c_set {"one", "two", "three", "four", "one"};
json j_set(c_set); // only one entry for "one" is used
// create an array from std::unordered_set
std::unordered_set<std::string> c_uset {"one", "two", "three", "four", "one"};
json j_uset(c_uset); // only one entry for "one" is used
// create an array from std::multiset
std::multiset<std::string> c_mset {"one", "two", "one", "four"};
json j_mset(c_mset); // only one entry for "one" is used
// create an array from std::unordered_multiset
std::unordered_multiset<std::string> c_umset {"one", "two", "one", "four"};
json j_umset(c_umset); // both entries for "one" are used
// serialize the JSON arrays
std::cout << j_vec << '\n';
std::cout << j_deque << '\n';
std::cout << j_list << '\n';
std::cout << j_flist << '\n';
std::cout << j_array << '\n';
std::cout << j_set << '\n';
std::cout << j_uset << '\n';
std::cout << j_mset << '\n';
std::cout << j_umset << '\n';
}

View File

@@ -1 +0,0 @@
<a target="_blank" href="http://melpon.org/wandbox/permlink/vyrjruntW4ASDBKH"><b>online</b></a>

View File

@@ -1,9 +0,0 @@
[1,2,3,4]
[1.2,2.3,3.4,5.6]
[true,true,false,true]
[12345678909876,23456789098765,34567890987654,45678909876543]
[1,2,3,4]
["four","one","three","two"]
["four","three","two","one"]
["four","one","one","two"]
["four","two","one","one"]

View File

@@ -1,27 +0,0 @@
#include <json.hpp>
using namespace nlohmann;
int main()
{
// create values of different integer types
short n42 = 42;
int n23 = 23;
long n1024 = 1024;
int_least32_t n17 = 17;
uint8_t n8 = 8;
// create JSON numbers
json j42(n42);
json j23(n23);
json j1024(n1024);
json j17(n17);
json j8(n8);
// serialize the JSON numbers
std::cout << j42 << '\n';
std::cout << j23 << '\n';
std::cout << j1024 << '\n';
std::cout << j17 << '\n';
std::cout << j8 << '\n';
}

View File

@@ -1 +0,0 @@
<a target="_blank" href="http://melpon.org/wandbox/permlink/cyithYO7sPbXxK16"><b>online</b></a>

View File

@@ -1,5 +0,0 @@
42
23
1024
17
8

View File

@@ -1,21 +0,0 @@
#include <json.hpp>
using namespace nlohmann;
int main()
{
// create values of different floating-point types
float f42 = 42.23;
float f_nan = 1.0f / 0.0f;
double f23 = 23.42;
// create JSON numbers
json j42(f42);
json j_nan(f_nan);
json j23(f23);
// serialize the JSON numbers
std::cout << j42 << '\n';
std::cout << j_nan << '\n';
std::cout << j23 << '\n';
}

View File

@@ -1 +0,0 @@
<a target="_blank" href="http://melpon.org/wandbox/permlink/yO6SWuP9bEYvNEvX"><b>online</b></a>

View File

@@ -1,3 +0,0 @@
42.2299995422363
null
23.42

View File

@@ -1,41 +0,0 @@
#include <json.hpp>
#include <unordered_map>
using namespace nlohmann;
int main()
{
// create an object from std::map
std::map<std::string, int> c_map
{
{"one", 1}, {"two", 2}, {"three", 3}
};
json j_map(c_map);
// create an object from std::unordered_map
std::unordered_map<const char*, double> c_umap
{
{"one", 1.2}, {"two", 2.3}, {"three", 3.4}
};
json j_umap(c_umap);
// create an object from std::multimap
std::multimap<std::string, bool> c_mmap
{
{"one", true}, {"two", true}, {"three", false}, {"three", true}
};
json j_mmap(c_mmap); // only one entry for key "three" is used
// create an object from std::unordered_multimap
std::unordered_multimap<std::string, bool> c_ummap
{
{"one", true}, {"two", true}, {"three", false}, {"three", true}
};
json j_ummap(c_ummap); // only one entry for key "three" is used
// serialize the JSON objects
std::cout << j_map << '\n';
std::cout << j_umap << '\n';
std::cout << j_mmap << '\n';
std::cout << j_ummap << '\n';
}

View File

@@ -1 +0,0 @@
<a target="_blank" href="http://melpon.org/wandbox/permlink/FCiYtNwovQ84DWxl"><b>online</b></a>

View File

@@ -1,4 +0,0 @@
{"one":1,"three":3,"two":2}
{"one":1.2,"three":3.4,"two":2.3}
{"one":true,"three":false,"two":true}
{"one":true,"three":false,"two":true}

View File

@@ -1,15 +0,0 @@
#include <json.hpp>
using namespace nlohmann;
int main()
{
// create a string value
std::string s = "The quick brown fox jumps over the lazy dog.";
// create a JSON string value
json j = s;
// serialize the JSON string
std::cout << j << '\n';
}

View File

@@ -1 +0,0 @@
<a target="_blank" href="http://melpon.org/wandbox/permlink/h8c1hfORMnVrJ1Ky"><b>online</b></a>

View File

@@ -1 +0,0 @@
"The quick brown fox jumps over the lazy dog."

View File

@@ -0,0 +1,218 @@
#include <iostream>
#include <deque>
#include <list>
#include <forward_list>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <valarray>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main()
{
// ============
// object types
// ============
// create an object from an object_t value
json::object_t object_value = { {"one", 1}, {"two", 2} };
json j_object_t(object_value);
// create an object from std::map
std::map<std::string, int> c_map
{
{"one", 1}, {"two", 2}, {"three", 3}
};
json j_map(c_map);
// create an object from std::unordered_map
std::unordered_map<const char*, double> c_umap
{
{"one", 1.2}, {"two", 2.3}, {"three", 3.4}
};
json j_umap(c_umap);
// create an object from std::multimap
std::multimap<std::string, bool> c_mmap
{
{"one", true}, {"two", true}, {"three", false}, {"three", true}
};
json j_mmap(c_mmap); // only one entry for key "three" is used
// create an object from std::unordered_multimap
std::unordered_multimap<std::string, bool> c_ummap
{
{"one", true}, {"two", true}, {"three", false}, {"three", true}
};
json j_ummap(c_ummap); // only one entry for key "three" is used
// serialize the JSON objects
std::cout << j_object_t << '\n';
std::cout << j_map << '\n';
std::cout << j_umap << '\n';
std::cout << j_mmap << '\n';
std::cout << j_ummap << "\n\n";
// ===========
// array types
// ===========
// create an array from an array_t value
json::array_t array_value = {"one", "two", 3, 4.5, false};
json j_array_t(array_value);
// create an array from std::vector
std::vector<int> c_vector {1, 2, 3, 4};
json j_vec(c_vector);
// create an array from std::valarray
std::valarray<short> c_valarray {10, 9, 8, 7};
json j_valarray(c_valarray);
// create an array from std::deque
std::deque<double> c_deque {1.2, 2.3, 3.4, 5.6};
json j_deque(c_deque);
// create an array from std::list
std::list<bool> c_list {true, true, false, true};
json j_list(c_list);
// create an array from std::forward_list
std::forward_list<int64_t> c_flist {12345678909876, 23456789098765, 34567890987654, 45678909876543};
json j_flist(c_flist);
// create an array from std::array
std::array<unsigned long, 4> c_array {{1, 2, 3, 4}};
json j_array(c_array);
// create an array from std::set
std::set<std::string> c_set {"one", "two", "three", "four", "one"};
json j_set(c_set); // only one entry for "one" is used
// create an array from std::unordered_set
std::unordered_set<std::string> c_uset {"one", "two", "three", "four", "one"};
json j_uset(c_uset); // only one entry for "one" is used
// create an array from std::multiset
std::multiset<std::string> c_mset {"one", "two", "one", "four"};
json j_mset(c_mset); // both entries for "one" are used
// create an array from std::unordered_multiset
std::unordered_multiset<std::string> c_umset {"one", "two", "one", "four"};
json j_umset(c_umset); // both entries for "one" are used
// serialize the JSON arrays
std::cout << j_array_t << '\n';
std::cout << j_vec << '\n';
std::cout << j_valarray << '\n';
std::cout << j_deque << '\n';
std::cout << j_list << '\n';
std::cout << j_flist << '\n';
std::cout << j_array << '\n';
std::cout << j_set << '\n';
std::cout << j_uset << '\n';
std::cout << j_mset << '\n';
std::cout << j_umset << "\n\n";
// ============
// string types
// ============
// create string from a string_t value
json::string_t string_value = "The quick brown fox jumps over the lazy dog.";
json j_string_t(string_value);
// create a JSON string directly from a string literal
json j_string_literal("The quick brown fox jumps over the lazy dog.");
// create string from std::string
std::string s_stdstring = "The quick brown fox jumps over the lazy dog.";
json j_stdstring(s_stdstring);
// serialize the JSON strings
std::cout << j_string_t << '\n';
std::cout << j_string_literal << '\n';
std::cout << j_stdstring << "\n\n";
// ============
// number types
// ============
// create a JSON number from number_integer_t
json::number_integer_t value_integer_t = -42;
json j_integer_t(value_integer_t);
// create a JSON number from number_unsigned_t
json::number_integer_t value_unsigned_t = 17;
json j_unsigned_t(value_unsigned_t);
// create a JSON number from an anonymous enum
enum { enum_value = 17 };
json j_enum(enum_value);
// create values of different integer types
short n_short = 42;
int n_int = -23;
long n_long = 1024;
int_least32_t n_int_least32_t = -17;
uint8_t n_uint8_t = 8;
// create (integer) JSON numbers
json j_short(n_short);
json j_int(n_int);
json j_long(n_long);
json j_int_least32_t(n_int_least32_t);
json j_uint8_t(n_uint8_t);
// create values of different floating-point types
json::number_float_t v_ok = 3.141592653589793;
json::number_float_t v_nan = NAN;
json::number_float_t v_infinity = INFINITY;
// create values of different floating-point types
float n_float = 42.23;
float n_float_nan = 1.0f / 0.0f;
double n_double = 23.42;
// create (floating point) JSON numbers
json j_ok(v_ok);
json j_nan(v_nan);
json j_infinity(v_infinity);
json j_float(n_float);
json j_float_nan(n_float_nan);
json j_double(n_double);
// serialize the JSON numbers
std::cout << j_integer_t << '\n';
std::cout << j_unsigned_t << '\n';
std::cout << j_enum << '\n';
std::cout << j_short << '\n';
std::cout << j_int << '\n';
std::cout << j_long << '\n';
std::cout << j_int_least32_t << '\n';
std::cout << j_uint8_t << '\n';
std::cout << j_ok << '\n';
std::cout << j_nan << '\n';
std::cout << j_infinity << '\n';
std::cout << j_float << '\n';
std::cout << j_float_nan << '\n';
std::cout << j_double << "\n\n";
// =============
// boolean types
// =============
// create boolean values
json j_truth = true;
json j_falsity = false;
// serialize the JSON booleans
std::cout << j_truth << '\n';
std::cout << j_falsity << '\n';
}

View File

@@ -0,0 +1 @@
<a target="_blank" href="https://wandbox.org/permlink/RodBcX8vpcP5dQ40"><b>online</b></a>

View File

@@ -0,0 +1,39 @@
{"one":1,"two":2}
{"one":1,"three":3,"two":2}
{"one":1.2,"three":3.4,"two":2.3}
{"one":true,"three":false,"two":true}
{"one":true,"three":false,"two":true}
["one","two",3,4.5,false]
[1,2,3,4]
[10,9,8,7]
[1.2,2.3,3.4,5.6]
[true,true,false,true]
[12345678909876,23456789098765,34567890987654,45678909876543]
[1,2,3,4]
["four","one","three","two"]
["four","three","two","one"]
["four","one","one","two"]
["four","two","one","one"]
"The quick brown fox jumps over the lazy dog."
"The quick brown fox jumps over the lazy dog."
"The quick brown fox jumps over the lazy dog."
-42
17
17
42
-23
1024
-17
8
3.141592653589793
null
null
42.22999954223633
null
23.42
true
false

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